internal Task MarkSelectionAsNotSeenAsync() { var messages = SelectedMessages.ToArray(); return(Task.Run(() => { var tasks = messages .Where(x => x.IsSeen) .GroupBy(x => x.Mailbox) .Select(x => x.Key.MarkAsNotSeenAsync(x.ToArray())); Task.WhenAll(tasks); })); }
internal async Task RestoreSelectedMessagesAsync() { try { var messages = SelectedMessages.ToArray(); var accountGroups = messages.GroupBy(x => x.Mailbox.Account).ToArray(); foreach (var accountGroup in accountGroups) { var trash = accountGroup.Key.GetTrashMailbox(); if (trash == null) { throw new InvalidOperationException("Trash must not be null."); } var mailboxGroups = accountGroup.GroupBy(x => x.Mailbox).ToArray(); foreach (var mailboxGroup in mailboxGroups) { var groupedMessages = mailboxGroup.ToArray(); await mailboxGroup.Key.RestoreMessagesAsync(groupedMessages); } } } catch (Exception ex) { Logger.Error(ex); } }