From 85b5469d96665f8f184fedf05b595b9e4b9057a2 Mon Sep 17 00:00:00 2001 From: Aleh Khantsevich Date: Sat, 31 Aug 2024 14:19:43 +0200 Subject: [PATCH] Fix wrong logic for set/unset flag --- Wino.Core/Services/ContextMenuItemService.cs | 29 ++++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/Wino.Core/Services/ContextMenuItemService.cs b/Wino.Core/Services/ContextMenuItemService.cs index 3c1040fe..e6238e8f 100644 --- a/Wino.Core/Services/ContextMenuItemService.cs +++ b/Wino.Core/Services/ContextMenuItemService.cs @@ -80,27 +80,26 @@ namespace Wino.Core.Services } else { - bool isAllFlagged = selectedMailItems.All(a => a.IsFlagged); bool isAllRead = 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) - operationList.Add(MailOperationMenuItem.Create(MailOperation.MarkAsUnread)); - else + List readOperations = (isAllRead, isAllUnread) switch { - if (!isAllUnread) - operationList.Add(MailOperationMenuItem.Create(MailOperation.MarkAsUnread)); + (true, false) => [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)); - } - - if (isAllFlagged) - operationList.Add(MailOperationMenuItem.Create(MailOperation.ClearFlag)); - else + List flagsOperations = (isAllFlagged, isAllNotFlagged) switch { - operationList.Add(MailOperationMenuItem.Create(MailOperation.ClearFlag)); - operationList.Add(MailOperationMenuItem.Create(MailOperation.SetFlag)); - } + (true, false) => [MailOperationMenuItem.Create(MailOperation.ClearFlag)], + (false, true) => [MailOperationMenuItem.Create(MailOperation.SetFlag)], + _ => [MailOperationMenuItem.Create(MailOperation.SetFlag), MailOperationMenuItem.Create(MailOperation.ClearFlag)] + }; + operationList.AddRange(flagsOperations); } // Ignore