Fix wrong logic for set/unset flag

This commit is contained in:
Aleh Khantsevich
2024-08-31 14:19:43 +02:00
parent d3ddf7b191
commit 85b5469d96

View File

@@ -80,27 +80,26 @@ namespace Wino.Core.Services
} }
else else
{ {
bool isAllFlagged = selectedMailItems.All(a => a.IsFlagged);
bool isAllRead = selectedMailItems.All(a => a.IsRead); bool isAllRead = selectedMailItems.All(a => a.IsRead);
bool isAllUnread = selectedMailItems.All(a => !a.IsRead); bool isAllUnread = selectedMailItems.All(a => !a.IsRead);
bool isAllFlagged = selectedMailItems.All(a => a.IsFlagged);
bool isAllNotFlagged = selectedMailItems.All(a => !a.IsFlagged);
if (isAllRead) List<MailOperationMenuItem> readOperations = (isAllRead, isAllUnread) switch
operationList.Add(MailOperationMenuItem.Create(MailOperation.MarkAsUnread));
else
{ {
if (!isAllUnread) (true, false) => [MailOperationMenuItem.Create(MailOperation.MarkAsUnread)],
operationList.Add(MailOperationMenuItem.Create(MailOperation.MarkAsUnread)); (false, true) => [MailOperationMenuItem.Create(MailOperation.MarkAsRead)],
_ => [MailOperationMenuItem.Create(MailOperation.MarkAsRead), MailOperationMenuItem.Create(MailOperation.MarkAsUnread)]
};
operationList.AddRange(readOperations);
operationList.Add(MailOperationMenuItem.Create(MailOperation.MarkAsRead)); List<MailOperationMenuItem> flagsOperations = (isAllFlagged, isAllNotFlagged) switch
}
if (isAllFlagged)
operationList.Add(MailOperationMenuItem.Create(MailOperation.ClearFlag));
else
{ {
operationList.Add(MailOperationMenuItem.Create(MailOperation.ClearFlag)); (true, false) => [MailOperationMenuItem.Create(MailOperation.ClearFlag)],
operationList.Add(MailOperationMenuItem.Create(MailOperation.SetFlag)); (false, true) => [MailOperationMenuItem.Create(MailOperation.SetFlag)],
} _ => [MailOperationMenuItem.Create(MailOperation.SetFlag), MailOperationMenuItem.Create(MailOperation.ClearFlag)]
};
operationList.AddRange(flagsOperations);
} }
// Ignore // Ignore