Gmail - Archive/Unarchive (#582)
* Disable timer back sync for debug builds. * Archive / unarchive feature for Gmail. * Archive folder name override for Gmail. * Possible crash fix when the next item is being selected after a mail is removed. * Restore proper account selection after pin/unpin of folder. * Making sure that incorrect arcive folder id is not saved in Gmailsynchronizer due to migration.
This commit is contained in:
7
Wino.Core.Domain/Enums/InvalidMoveTargetReason.cs
Normal file
7
Wino.Core.Domain/Enums/InvalidMoveTargetReason.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Wino.Core.Domain.Enums;
|
||||
|
||||
public enum InvalidMoveTargetReason
|
||||
{
|
||||
NonMoveTarget, // This folder does not allow moving mails.
|
||||
MultipleAccounts // Multiple mails from different accounts cannot be moved.
|
||||
}
|
||||
@@ -1,5 +1,9 @@
|
||||
using System;
|
||||
using Wino.Core.Domain.Enums;
|
||||
|
||||
namespace Wino.Core.Domain.Exceptions;
|
||||
|
||||
public class InvalidMoveTargetException : Exception { }
|
||||
public class InvalidMoveTargetException(InvalidMoveTargetReason reason) : Exception
|
||||
{
|
||||
public InvalidMoveTargetReason Reason { get; } = reason;
|
||||
}
|
||||
|
||||
@@ -141,4 +141,12 @@ public interface IMailService
|
||||
/// </summary>
|
||||
/// <param name="accountId">Account id.</param>
|
||||
Task<bool> HasAccountAnyDraftAsync(Guid accountId);
|
||||
|
||||
/// <summary>
|
||||
/// Compares the ids returned from online search result for Archive folder against the local database.
|
||||
/// </summary>
|
||||
/// <param name="archiveFolderId">Archive folder id.</param>
|
||||
/// <param name="onlineArchiveMailIds">Retrieved MailCopy ids from search result.</param>
|
||||
/// <returns>Result model that contains added and removed mail copy ids.</returns>
|
||||
Task<GmailArchiveComparisonResult> GetGmailArchiveComparisonResultAsync(Guid archiveFolderId, List<string> onlineArchiveMailIds);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using Wino.Core.Domain;
|
||||
using Wino.Core.Domain.Entities.Shared;
|
||||
using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
@@ -32,6 +31,8 @@ public partial class FolderMenuItem : MenuItemBase<IMailItemFolder, FolderMenuIt
|
||||
return Translator.MoreFolderNameOverride;
|
||||
else if (Parameter.SpecialFolderType == SpecialFolderType.Category)
|
||||
return Translator.CategoriesFolderNameOverride;
|
||||
else if (Parameter.SpecialFolderType == SpecialFolderType.Archive && ParentAccount.ProviderType == MailProviderType.Gmail)
|
||||
return Translator.GmailArchiveFolderNameOverride;
|
||||
else
|
||||
return Parameter.FolderName;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace Wino.Core.Domain.Models.MailItem;
|
||||
|
||||
/// <summary>
|
||||
/// Comparison result of the Gmail archive.
|
||||
/// </summary>
|
||||
/// <param name="Added">Mail copy ids to be added to Archive.</param>
|
||||
/// <param name="Removed">Mail copy ids to be removed from Archive.</param>
|
||||
public record GmailArchiveComparisonResult(string[] Added, string[] Removed);
|
||||
@@ -184,6 +184,7 @@
|
||||
"Exception_ImapClientPoolFailed": "IMAP Client Pool failed.",
|
||||
"Exception_InboxNotAvailable": "Couldn't setup account folders.",
|
||||
"Exception_InvalidSystemFolderConfiguration": "System folder configuration is not valid. Check configuration and try again.",
|
||||
"Exception_InvalidMultiAccountMoveTarget": "You can't move multiple items that belong to different accounts in linked account.",
|
||||
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
|
||||
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
|
||||
"Exception_NullAssignedAccount": "Assigned account is null",
|
||||
@@ -218,6 +219,7 @@
|
||||
"GeneralTitle_Warning": "Warning",
|
||||
"GmailServiceDisabled_Title": "Gmail Error",
|
||||
"GmailServiceDisabled_Message": "Your Google Workspace account seems to be disabled for Gmail service. Please contact your administrator to enable Gmail service for your account.",
|
||||
"GmailArchiveFolderNameOverride": "Archive",
|
||||
"HoverActionOption_Archive": "Archive",
|
||||
"HoverActionOption_Delete": "Delete",
|
||||
"HoverActionOption_MoveJunk": "Move to Junk",
|
||||
|
||||
Reference in New Issue
Block a user