Thread UI fixes.

This commit is contained in:
Burak Kaan Köse
2026-02-10 01:03:03 +01:00
parent 0999c71578
commit 10dd42b63f
2 changed files with 49 additions and 7 deletions
@@ -108,6 +108,17 @@ public class WinoMailCollection : ObservableRecipient, IRecipient<SelectedItemsC
{
await ExecuteUIThread(() =>
{
foreach (var group in _mailItemSource)
{
foreach (var item in group)
{
if (item is ThreadMailItemViewModel threadItem)
{
threadItem.UnregisterThreadEmailPropertyChangedHandlers();
}
}
}
_mailItemSource.Clear();
MailCopyIdHashSet.Clear();
_threadIdToItemsMap.Clear();
@@ -278,7 +289,7 @@ public class WinoMailCollection : ObservableRecipient, IRecipient<SelectedItemsC
});
}
private async Task RemoveItemInternalAsync(ObservableGroup<object, IMailListItem> group, IMailListItem mailItem)
private async Task RemoveItemInternalAsync(ObservableGroup<object, IMailListItem> group, IMailListItem mailItem, bool detachThreadHandlers = true)
{
UpdateUniqueIdHashes(mailItem, false);
UpdateThreadIdCache(mailItem, false);
@@ -293,6 +304,11 @@ public class WinoMailCollection : ObservableRecipient, IRecipient<SelectedItemsC
{
MailItemRemoved?.Invoke(this, threadMailItem);
}
if (detachThreadHandlers)
{
threadViewModel.UnregisterThreadEmailPropertyChangedHandlers();
}
}
await ExecuteUIThread(() =>
@@ -369,7 +385,7 @@ public class WinoMailCollection : ObservableRecipient, IRecipient<SelectedItemsC
private async Task MoveThreadToNewGroupAsync(ObservableGroup<object, IMailListItem> currentGroup, ThreadMailItemViewModel threadViewModel, object newGroupKey)
{
await RemoveItemInternalAsync(currentGroup, threadViewModel);
await RemoveItemInternalAsync(currentGroup, threadViewModel, detachThreadHandlers: false);
await InsertItemInternalAsync(newGroupKey, threadViewModel);
}