示例#1
0
        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);
            }));
        }
示例#2
0
        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);
            }
        }