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()