Merge branch 'codex/mail-categories-v1'
This commit is contained in:
@@ -14,6 +14,22 @@ public interface IFolderMenuItem : IBaseFolderMenuItem
|
||||
|
||||
public interface IMergedAccountFolderMenuItem : IBaseFolderMenuItem { }
|
||||
|
||||
public interface IMailCategoryMenuItem : IBaseFolderMenuItem
|
||||
{
|
||||
Entities.Mail.MailCategory MailCategory { get; }
|
||||
string TextColorHex { get; }
|
||||
string BackgroundColorHex { get; }
|
||||
bool HasTextColor { get; }
|
||||
}
|
||||
|
||||
public interface IMergedMailCategoryMenuItem : IBaseFolderMenuItem
|
||||
{
|
||||
IReadOnlyList<Entities.Mail.MailCategory> Categories { get; }
|
||||
string TextColorHex { get; }
|
||||
string BackgroundColorHex { get; }
|
||||
bool HasTextColor { get; }
|
||||
}
|
||||
|
||||
public interface IBaseFolderMenuItem : IMenuItem
|
||||
{
|
||||
string FolderName { get; }
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Wino.Core.Domain.Entities.Mail;
|
||||
using Wino.Core.Domain.Models.Accounts;
|
||||
|
||||
namespace Wino.Core.Domain.Interfaces;
|
||||
|
||||
public interface IMailCategoryService
|
||||
{
|
||||
Task<List<MailCategory>> GetCategoriesAsync(Guid accountId);
|
||||
Task<List<MailCategory>> GetFavoriteCategoriesAsync(Guid accountId);
|
||||
Task<MailCategory> GetCategoryAsync(Guid categoryId);
|
||||
Task<bool> CategoryNameExistsAsync(Guid accountId, string name, Guid? excludedCategoryId = null);
|
||||
Task<MailCategory> CreateCategoryAsync(MailCategory category);
|
||||
Task UpdateCategoryAsync(MailCategory category);
|
||||
Task DeleteCategoryAsync(Guid categoryId);
|
||||
Task DeleteCategoriesAsync(Guid accountId);
|
||||
Task ToggleFavoriteAsync(Guid categoryId, bool isFavorite);
|
||||
Task UpdateRemoteIdAsync(Guid categoryId, string remoteId);
|
||||
Task ReplaceCategoriesAsync(Guid accountId, IEnumerable<MailCategory> categories);
|
||||
Task ReplaceMailAssignmentsAsync(Guid accountId, Guid mailCopyUniqueId, IEnumerable<string> categoryNames);
|
||||
Task AssignCategoryAsync(Guid categoryId, IEnumerable<Guid> mailCopyUniqueIds);
|
||||
Task UnassignCategoryAsync(Guid categoryId, IEnumerable<Guid> mailCopyUniqueIds);
|
||||
Task<List<MailCategory>> GetCategoriesForMailAsync(Guid accountId, IEnumerable<Guid> mailCopyUniqueIds);
|
||||
Task<List<Guid>> GetAssignedCategoryIdsForAllAsync(IEnumerable<Guid> mailCopyUniqueIds);
|
||||
Task<List<string>> GetCategoryNamesForMailAsync(Guid mailCopyUniqueId);
|
||||
Task<List<MailCopy>> GetMailCopiesForCategoryAsync(Guid categoryId);
|
||||
Task<List<UnreadCategoryCountResult>> GetUnreadCategoryCountResultsAsync(IEnumerable<Guid> accountIds);
|
||||
}
|
||||
@@ -11,6 +11,7 @@ using Wino.Core.Domain.Models;
|
||||
using Wino.Core.Domain.Models.Accounts;
|
||||
using Wino.Core.Domain.Models.Calendar;
|
||||
using Wino.Core.Domain.Models.Folders;
|
||||
using Wino.Core.Domain.Models.MailItem;
|
||||
|
||||
namespace Wino.Core.Domain.Interfaces;
|
||||
|
||||
@@ -52,6 +53,13 @@ public interface IMailDialogService : IDialogServiceBase
|
||||
/// <returns>Created alias model if not canceled.</returns>
|
||||
Task<ICreateAccountAliasDialog> ShowCreateAccountAliasDialogAsync();
|
||||
|
||||
/// <summary>
|
||||
/// Presents a dialog to the user for mail category creation/modification.
|
||||
/// </summary>
|
||||
#pragma warning disable CS8625
|
||||
Task<MailCategoryDialogResult> ShowEditMailCategoryDialogAsync(MailCategory category = null);
|
||||
#pragma warning restore CS8625
|
||||
|
||||
/// <summary>
|
||||
/// Presents a dialog to the user to show email source.
|
||||
/// </summary>
|
||||
|
||||
@@ -72,3 +72,9 @@ public interface ICalendarActionRequest : IRequestBase
|
||||
Guid? LocalCalendarItemId { get; }
|
||||
CalendarSynchronizerOperation Operation { get; }
|
||||
}
|
||||
|
||||
public interface ICategoryActionRequest : IRequestBase
|
||||
{
|
||||
Guid AccountId { get; }
|
||||
CategorySynchronizerOperation Operation { get; }
|
||||
}
|
||||
|
||||
@@ -63,6 +63,12 @@ public interface ISynchronizationManager
|
||||
Task<MailSynchronizationResult> SynchronizeAliasesAsync(Guid accountId,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// Handles category synchronization for the given account.
|
||||
/// </summary>
|
||||
Task<MailSynchronizationResult> SynchronizeCategoriesAsync(Guid accountId,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// Handles profile synchronization for the given account.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using System.Threading.Tasks;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Wino.Core.Domain.Models.Calendar;
|
||||
using Wino.Core.Domain.Models.Folders;
|
||||
using Wino.Core.Domain.Models.MailItem;
|
||||
@@ -36,4 +38,9 @@ public interface IWinoRequestDelegator
|
||||
/// </summary>
|
||||
/// <param name="calendarOperationPreparationRequest">Calendar preparation request.</param>
|
||||
Task ExecuteAsync(CalendarOperationPreparationRequest calendarOperationPreparationRequest);
|
||||
|
||||
/// <summary>
|
||||
/// Queues pre-built requests for a single account and triggers synchronization.
|
||||
/// </summary>
|
||||
Task ExecuteAsync(Guid accountId, IEnumerable<IRequestBase> requests);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user