From 4c080360a73de07971dc032658932fa8668142f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Burak=20Kaan=20K=C3=B6se?= Date: Wed, 12 Jun 2024 02:12:39 +0200 Subject: [PATCH] Delay after-execution-sync for Outlook only. --- Wino.Core/Synchronizers/BaseSynchronizer.cs | 7 ++++++- Wino.Core/Synchronizers/OutlookSynchronizer.cs | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Wino.Core/Synchronizers/BaseSynchronizer.cs b/Wino.Core/Synchronizers/BaseSynchronizer.cs index 5ad8c098..be42895a 100644 --- a/Wino.Core/Synchronizers/BaseSynchronizer.cs +++ b/Wino.Core/Synchronizers/BaseSynchronizer.cs @@ -149,7 +149,11 @@ namespace Wino.Core.Synchronizers await synchronizationSemaphore.WaitAsync(activeSynchronizationCancellationToken); // Let servers to finish their job. Sometimes the servers doesn't respond immediately. - if (options.Type == SynchronizationType.ExecuteRequests) + // TODO: Outlook sends back the deleted Draft. Might be a bug in the graph API or in Wino. + + var hasSendDraftRequest = batches.Any(a => a is BatchSendDraftRequestRequest); + + if (hasSendDraftRequest && DelaySendOperationSynchronization()) { await Task.Delay(2000); } @@ -311,6 +315,7 @@ namespace Wino.Core.Synchronizers return options; } + public virtual bool DelaySendOperationSynchronization() => false; public virtual IEnumerable> Move(BatchMoveRequest request) => throw new NotSupportedException(string.Format(Translator.Exception_UnsupportedSynchronizerOperation, this.GetType())); public virtual IEnumerable> ChangeFlag(BatchChangeFlagRequest request) => throw new NotSupportedException(string.Format(Translator.Exception_UnsupportedSynchronizerOperation, this.GetType())); public virtual IEnumerable> MarkRead(BatchMarkReadRequest request) => throw new NotSupportedException(string.Format(Translator.Exception_UnsupportedSynchronizerOperation, this.GetType())); diff --git a/Wino.Core/Synchronizers/OutlookSynchronizer.cs b/Wino.Core/Synchronizers/OutlookSynchronizer.cs index 6841ec88..8e609c8e 100644 --- a/Wino.Core/Synchronizers/OutlookSynchronizer.cs +++ b/Wino.Core/Synchronizers/OutlookSynchronizer.cs @@ -406,6 +406,8 @@ namespace Wino.Core.Synchronizers #region Mail Integration + public override bool DelaySendOperationSynchronization() => true; + public override IEnumerable> Move(BatchMoveRequest request) { var requestBody = new Microsoft.Graph.Me.Messages.Item.Move.MovePostRequestBody()