Resolving conflicts.
This commit is contained in:
@@ -11,6 +11,10 @@ namespace Wino.Core.Requests.Folder;
|
|||||||
|
|
||||||
public record MarkFolderAsReadRequest(MailItemFolder Folder, List<MailCopy> MailsToMarkRead) : FolderRequestBase(Folder, FolderSynchronizerOperation.MarkFolderRead), ICustomFolderSynchronizationRequest
|
public record MarkFolderAsReadRequest(MailItemFolder Folder, List<MailCopy> MailsToMarkRead) : FolderRequestBase(Folder, FolderSynchronizerOperation.MarkFolderRead), ICustomFolderSynchronizationRequest
|
||||||
{
|
{
|
||||||
|
public List<Guid> SynchronizationFolderIds => [Folder.Id];
|
||||||
|
|
||||||
|
public bool ExcludeMustHaveFolders => true;
|
||||||
|
|
||||||
public override void ApplyUIChanges()
|
public override void ApplyUIChanges()
|
||||||
{
|
{
|
||||||
if (MailsToMarkRead == null || MailsToMarkRead.Count == 0) return;
|
if (MailsToMarkRead == null || MailsToMarkRead.Count == 0) return;
|
||||||
@@ -21,7 +25,6 @@ public record MarkFolderAsReadRequest(MailItemFolder Folder, List<MailCopy> Mail
|
|||||||
if (item.IsRead) continue;
|
if (item.IsRead) continue;
|
||||||
|
|
||||||
item.IsRead = true;
|
item.IsRead = true;
|
||||||
}
|
|
||||||
|
|
||||||
WeakReferenceMessenger.Default.Send(new MailUpdatedMessage(item, MailUpdateSource.ClientUpdated, MailCopyChangeFlags.IsRead));
|
WeakReferenceMessenger.Default.Send(new MailUpdatedMessage(item, MailUpdateSource.ClientUpdated, MailCopyChangeFlags.IsRead));
|
||||||
}
|
}
|
||||||
@@ -37,13 +40,8 @@ public record MarkFolderAsReadRequest(MailItemFolder Folder, List<MailCopy> Mail
|
|||||||
if (!item.IsRead) continue;
|
if (!item.IsRead) continue;
|
||||||
|
|
||||||
item.IsRead = false;
|
item.IsRead = false;
|
||||||
}
|
|
||||||
|
|
||||||
WeakReferenceMessenger.Default.Send(new MailUpdatedMessage(item, MailUpdateSource.ClientReverted, MailCopyChangeFlags.IsRead));
|
WeakReferenceMessenger.Default.Send(new MailUpdatedMessage(item, MailUpdateSource.ClientReverted, MailCopyChangeFlags.IsRead));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Guid> SynchronizationFolderIds => [Folder.Id];
|
|
||||||
|
|
||||||
public bool ExcludeMustHaveFolders => true;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -880,38 +880,7 @@ public partial class MailListPageViewModel : MailBaseViewModel,
|
|||||||
listManipulationSemepahore.Release();
|
listManipulationSemepahore.Release();
|
||||||
}
|
}
|
||||||
|
|
||||||
// await ExecuteUIThread(() => { SetupTopBarActions(); });
|
await ExecuteUIThread(() => { SetupTopBarActions(); });
|
||||||
}
|
|
||||||
|
|
||||||
protected override async void OnMailUpdated(IReadOnlyList<MailCopy> 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();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async void OnMailRemoved(MailCopy removedMail)
|
protected override async void OnMailRemoved(MailCopy removedMail)
|
||||||
|
|||||||
@@ -652,19 +652,6 @@ public partial class MailRenderingPageViewModel : MailBaseViewModel,
|
|||||||
await ExecuteUIThread(() => { InitializeCommandBarItems(); });
|
await ExecuteUIThread(() => { InitializeCommandBarItems(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async void OnMailUpdated(IReadOnlyList<MailCopy> 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]
|
[RelayCommand]
|
||||||
private async Task OpenAttachmentAsync(MailAttachmentViewModel attachmentViewModel)
|
private async Task OpenAttachmentAsync(MailAttachmentViewModel attachmentViewModel)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user