IDLE implementation, imap synchronization strategies basics and condstore synchronization.
This commit is contained in:
@@ -7,10 +7,10 @@ namespace Wino.Core.Requests.Bundles
|
||||
{
|
||||
public class ImapRequest
|
||||
{
|
||||
public Func<ImapClient, IRequestBase, Task> IntegratorTask { get; }
|
||||
public Func<IImapClient, IRequestBase, Task> IntegratorTask { get; }
|
||||
public IRequestBase Request { get; }
|
||||
|
||||
public ImapRequest(Func<ImapClient, IRequestBase, Task> integratorTask, IRequestBase request)
|
||||
public ImapRequest(Func<IImapClient, IRequestBase, Task> integratorTask, IRequestBase request)
|
||||
{
|
||||
IntegratorTask = integratorTask;
|
||||
Request = request;
|
||||
@@ -19,7 +19,7 @@ namespace Wino.Core.Requests.Bundles
|
||||
|
||||
public class ImapRequest<TRequestBaseType> : ImapRequest where TRequestBaseType : IRequestBase
|
||||
{
|
||||
public ImapRequest(Func<ImapClient, TRequestBaseType, Task> integratorTask, TRequestBaseType request)
|
||||
public ImapRequest(Func<IImapClient, TRequestBaseType, Task> integratorTask, TRequestBaseType request)
|
||||
: base((client, request) => integratorTask(client, (TRequestBaseType)request), request)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ namespace Wino.Core.Requests.Folder
|
||||
{
|
||||
public record EmptyFolderRequest(MailItemFolder Folder, List<MailCopy> MailsToDelete) : FolderRequestBase(Folder, FolderSynchronizerOperation.EmptyFolder), ICustomFolderSynchronizationRequest
|
||||
{
|
||||
public bool ExcludeMustHaveFolders => false;
|
||||
public override void ApplyUIChanges()
|
||||
{
|
||||
foreach (var item in MailsToDelete)
|
||||
|
||||
@@ -32,5 +32,7 @@ namespace Wino.Core.Requests.Folder
|
||||
}
|
||||
|
||||
public List<Guid> SynchronizationFolderIds => [Folder.Id];
|
||||
|
||||
public bool ExcludeMustHaveFolders => true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ namespace Wino.Core.Requests.Mail
|
||||
public record ArchiveRequest(bool IsArchiving, MailCopy Item, MailItemFolder FromFolder, MailItemFolder ToFolder = null)
|
||||
: MailRequestBase(Item), ICustomFolderSynchronizationRequest
|
||||
{
|
||||
public bool ExcludeMustHaveFolders => false;
|
||||
public List<Guid> SynchronizationFolderIds
|
||||
{
|
||||
get
|
||||
|
||||
@@ -14,6 +14,8 @@ namespace Wino.Core.Requests.Mail
|
||||
{
|
||||
public List<Guid> SynchronizationFolderIds => [Item.FolderId];
|
||||
|
||||
public bool ExcludeMustHaveFolders => true;
|
||||
|
||||
public override MailSynchronizerOperation Operation => MailSynchronizerOperation.ChangeFlag;
|
||||
|
||||
public override void ApplyUIChanges()
|
||||
|
||||
@@ -13,6 +13,8 @@ namespace Wino.Core.Requests.Mail
|
||||
: MailRequestBase(DraftPreperationRequest.CreatedLocalDraftCopy),
|
||||
ICustomFolderSynchronizationRequest
|
||||
{
|
||||
public bool ExcludeMustHaveFolders => false;
|
||||
|
||||
public List<Guid> SynchronizationFolderIds =>
|
||||
[
|
||||
DraftPreperationRequest.CreatedLocalDraftCopy.AssignedFolder.Id
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace Wino.Core.Requests.Mail
|
||||
ICustomFolderSynchronizationRequest
|
||||
{
|
||||
public List<Guid> SynchronizationFolderIds => [Item.FolderId];
|
||||
|
||||
public bool ExcludeMustHaveFolders => false;
|
||||
public override MailSynchronizerOperation Operation => MailSynchronizerOperation.Delete;
|
||||
|
||||
public override void ApplyUIChanges()
|
||||
|
||||
@@ -15,6 +15,8 @@ namespace Wino.Core.Requests.Mail
|
||||
|
||||
public override MailSynchronizerOperation Operation => MailSynchronizerOperation.MarkRead;
|
||||
|
||||
public bool ExcludeMustHaveFolders => true;
|
||||
|
||||
public override void ApplyUIChanges()
|
||||
{
|
||||
Item.IsRead = IsRead;
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Wino.Core.Requests.Mail
|
||||
: MailRequestBase(Item), ICustomFolderSynchronizationRequest
|
||||
{
|
||||
public List<Guid> SynchronizationFolderIds => new() { FromFolder.Id, ToFolder.Id };
|
||||
|
||||
public bool ExcludeMustHaveFolders => false;
|
||||
public override MailSynchronizerOperation Operation => MailSynchronizerOperation.Move;
|
||||
|
||||
public override void ApplyUIChanges()
|
||||
|
||||
@@ -28,6 +28,8 @@ namespace Wino.Core.Requests.Mail
|
||||
}
|
||||
}
|
||||
|
||||
public bool ExcludeMustHaveFolders => false;
|
||||
|
||||
public override MailSynchronizerOperation Operation => MailSynchronizerOperation.Send;
|
||||
|
||||
public override void ApplyUIChanges()
|
||||
|
||||
Reference in New Issue
Block a user