From 323bbf7ea3581b0fbbe54e7eebb745a9fb73e3c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Burak=20Kaan=20K=C3=B6se?= Date: Sun, 5 Apr 2026 16:53:51 +0200 Subject: [PATCH] Resolving conflicts. --- .../Folder/MarkFolderAsReadRequest.cs | 10 +++--- Wino.Mail.ViewModels/MailListPageViewModel.cs | 33 +------------------ .../MailRenderingPageViewModel.cs | 13 -------- 3 files changed, 5 insertions(+), 51 deletions(-) diff --git a/Wino.Core/Requests/Folder/MarkFolderAsReadRequest.cs b/Wino.Core/Requests/Folder/MarkFolderAsReadRequest.cs index 242249e2..f1df31b5 100644 --- a/Wino.Core/Requests/Folder/MarkFolderAsReadRequest.cs +++ b/Wino.Core/Requests/Folder/MarkFolderAsReadRequest.cs @@ -11,6 +11,10 @@ namespace Wino.Core.Requests.Folder; public record MarkFolderAsReadRequest(MailItemFolder Folder, List MailsToMarkRead) : FolderRequestBase(Folder, FolderSynchronizerOperation.MarkFolderRead), ICustomFolderSynchronizationRequest { + public List SynchronizationFolderIds => [Folder.Id]; + + public bool ExcludeMustHaveFolders => true; + public override void ApplyUIChanges() { if (MailsToMarkRead == null || MailsToMarkRead.Count == 0) return; @@ -21,7 +25,6 @@ public record MarkFolderAsReadRequest(MailItemFolder Folder, List Mail if (item.IsRead) continue; item.IsRead = true; - } WeakReferenceMessenger.Default.Send(new MailUpdatedMessage(item, MailUpdateSource.ClientUpdated, MailCopyChangeFlags.IsRead)); } @@ -37,13 +40,8 @@ public record MarkFolderAsReadRequest(MailItemFolder Folder, List Mail if (!item.IsRead) continue; item.IsRead = false; - } WeakReferenceMessenger.Default.Send(new MailUpdatedMessage(item, MailUpdateSource.ClientReverted, MailCopyChangeFlags.IsRead)); } } - - public List SynchronizationFolderIds => [Folder.Id]; - - public bool ExcludeMustHaveFolders => true; } diff --git a/Wino.Mail.ViewModels/MailListPageViewModel.cs b/Wino.Mail.ViewModels/MailListPageViewModel.cs index 991bd517..17380f1a 100644 --- a/Wino.Mail.ViewModels/MailListPageViewModel.cs +++ b/Wino.Mail.ViewModels/MailListPageViewModel.cs @@ -880,38 +880,7 @@ public partial class MailListPageViewModel : MailBaseViewModel, listManipulationSemepahore.Release(); } - // await ExecuteUIThread(() => { SetupTopBarActions(); }); - } - - protected override async void OnMailUpdated(IReadOnlyList updatedMails) - { - base.OnMailUpdated(updatedMails); - - if (updatedMails == null || updatedMails.Count == 0) return; - - // Bulk update: do all changes in a single UI-thread invocation to avoid UI lockups when - // thousands of MailUpdatedMessage events would otherwise be processed one by one. - await ExecuteUIThread(() => - { - foreach (var mail in updatedMails) - { - if (mail == null) continue; - - // Avoid work for items not in the list. - if (!MailCollection.MailCopyIdHashSet.Contains(mail.UniqueId)) - continue; - - var container = MailCollection.GetMailItemContainer(mail.UniqueId); - - if (container?.ItemViewModel != null) - { - container.ItemViewModel.MailCopy = mail; - container.ThreadViewModel?.NotifyPropertyChanges(); - } - } - - SetupTopBarActions(); - }); + await ExecuteUIThread(() => { SetupTopBarActions(); }); } protected override async void OnMailRemoved(MailCopy removedMail) diff --git a/Wino.Mail.ViewModels/MailRenderingPageViewModel.cs b/Wino.Mail.ViewModels/MailRenderingPageViewModel.cs index e89d12c0..0385dff6 100644 --- a/Wino.Mail.ViewModels/MailRenderingPageViewModel.cs +++ b/Wino.Mail.ViewModels/MailRenderingPageViewModel.cs @@ -652,19 +652,6 @@ public partial class MailRenderingPageViewModel : MailBaseViewModel, await ExecuteUIThread(() => { InitializeCommandBarItems(); }); } - protected override async void OnMailUpdated(IReadOnlyList updatedMails) - { - base.OnMailUpdated(updatedMails); - - if (initializedMailItemViewModel == null || updatedMails == null || updatedMails.Count == 0) return; - - // Only care about the currently rendered item. - if (updatedMails.Any(m => m?.UniqueId == initializedMailItemViewModel.UniqueId)) - { - await ExecuteUIThread(() => { InitializeCommandBarItems(); }); - } - } - [RelayCommand] private async Task OpenAttachmentAsync(MailAttachmentViewModel attachmentViewModel) {