using System; using System.Collections.Generic; using CommunityToolkit.Mvvm.Messaging; using Wino.Core.Domain.Entities.Mail; using Wino.Core.Domain.Enums; using Wino.Core.Domain.Interfaces; using Wino.Core.Domain.Models.Requests; using Wino.Messaging.UI; namespace Wino.Core.Requests.Folder; public record MarkFolderAsReadRequest(MailItemFolder Folder, List MailsToMarkRead) : FolderRequestBase(Folder, FolderSynchronizerOperation.MarkFolderRead), ICustomFolderSynchronizationRequest { public override void ApplyUIChanges() { foreach (var item in MailsToMarkRead) { // Skip if already read if (item.IsRead) continue; item.IsRead = true; WeakReferenceMessenger.Default.Send(new MailUpdatedMessage(item, MailUpdateSource.ClientUpdated)); } } public override void RevertUIChanges() { foreach (var item in MailsToMarkRead) { // Skip if already unread (wasn't changed by ApplyUIChanges) if (!item.IsRead) continue; item.IsRead = false; WeakReferenceMessenger.Default.Send(new MailUpdatedMessage(item, MailUpdateSource.ClientReverted)); } } public List SynchronizationFolderIds => [Folder.Id]; public bool ExcludeMustHaveFolders => true; }