Add mail categories support

This commit is contained in:
Burak Kaan Köse
2026-04-15 01:18:07 +02:00
parent feff929333
commit cf8fff8ef1
61 changed files with 2171 additions and 75 deletions
@@ -0,0 +1,10 @@
using Wino.Core.Domain.Entities.Mail;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.Requests;
namespace Wino.Core.Requests.Category;
public record MailCategoryCreateRequest(MailCategory Category) : CategoryRequestBase(Category.MailAccountId)
{
public override CategorySynchronizerOperation Operation => CategorySynchronizerOperation.CreateCategory;
}
@@ -0,0 +1,14 @@
using System.Collections.Generic;
using Wino.Core.Domain.Entities.Mail;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.Requests;
namespace Wino.Core.Requests.Category;
public record MailCategoryDeleteRequest(
MailCategory Category,
string PreviousRemoteId,
IReadOnlyList<MailCategoryMessageUpdateTarget> AffectedMessages = null) : CategoryRequestBase(Category.MailAccountId)
{
public override CategorySynchronizerOperation Operation => CategorySynchronizerOperation.DeleteCategory;
}
@@ -0,0 +1,5 @@
using System.Collections.Generic;
namespace Wino.Core.Requests.Category;
public sealed record MailCategoryMessageUpdateTarget(string MessageId, IReadOnlyList<string> CategoryNames);
@@ -0,0 +1,15 @@
using System.Collections.Generic;
using Wino.Core.Domain.Entities.Mail;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.Requests;
namespace Wino.Core.Requests.Category;
public record MailCategoryUpdateRequest(
MailCategory Category,
string PreviousName,
string PreviousRemoteId,
IReadOnlyList<MailCategoryMessageUpdateTarget> AffectedMessages = null) : CategoryRequestBase(Category.MailAccountId)
{
public override CategorySynchronizerOperation Operation => CategorySynchronizerOperation.UpdateCategory;
}
@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using Wino.Core.Domain.Entities.Mail;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Requests;
namespace Wino.Core.Requests.Mail;
public record MailCategoryAssignmentRequest(
MailCopy Item,
Guid MailCategoryId,
string CategoryName,
IReadOnlyList<string> CategoryNames,
bool IsAssigned) : MailRequestBase(Item), ICustomFolderSynchronizationRequest
{
public override MailSynchronizerOperation Operation => MailSynchronizerOperation.UpdateCategories;
public List<Guid> SynchronizationFolderIds => [Item.FolderId];
public bool ExcludeMustHaveFolders => true;
}
public class BatchMailCategoryAssignmentRequest : BatchCollection<MailCategoryAssignmentRequest>
{
public BatchMailCategoryAssignmentRequest(IEnumerable<MailCategoryAssignmentRequest> collection) : base(collection)
{
}
}