// TODO: Full delete items already in Trash or Spam? public virtual async Task TrashAsync(List <MailMessage> messages, bool isSpam) { string labelName = isSpam ? "[Gmail]/Spam" : "[Gmail]/Trash"; foreach (var message in messages) { // TODO: Remove from all label lists? Add to trash label list if sync'd? message.AddLabel(labelName); if (MailStorage.HasMessageLables(message.GetThreadId(), message.GetMessageId())) { // Update on disk await MailStorage.StoreMessageLabelsAsync(message); } } // TODO: Queue command to send change to the server await GmailImap.AddLabelAsync(messages, labelName); }
// It's assumed that labelName is never the active label. public virtual async Task AddLabelAsync(List <MailMessage> messages, string labelName) { foreach (var message in messages) { // Store in memory message.AddLabel(labelName); if (MailStorage.HasMessageLables(message.GetThreadId(), message.GetMessageId())) { // Update on disk await MailStorage.StoreMessageLabelsAsync(message); } // TODO: Store in the message list for that label } // TODO: Queue command to send change to the server await GmailImap.AddLabelAsync(messages, labelName); }