From cbd5a515a93a35f06c086e7e303017425c3d6a21 Mon Sep 17 00:00:00 2001 From: Tiktack Date: Mon, 12 Aug 2024 00:56:26 +0200 Subject: [PATCH] Fix account signature preferences during draft creation (#314) * Pass account ID instead of account to draft creation method, since account object can be stale. * Configure await --- Wino.Core.Domain/Interfaces/IMailService.cs | 4 ++-- Wino.Core/Services/MailService.cs | 3 ++- Wino.Mail.ViewModels/AppShellViewModel.cs | 2 +- Wino.Mail.ViewModels/MailRenderingPageViewModel.cs | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Wino.Core.Domain/Interfaces/IMailService.cs b/Wino.Core.Domain/Interfaces/IMailService.cs index 1f9065ef..e687ba24 100644 --- a/Wino.Core.Domain/Interfaces/IMailService.cs +++ b/Wino.Core.Domain/Interfaces/IMailService.cs @@ -103,9 +103,9 @@ namespace Wino.Core.Domain.Interfaces /// Creates a draft MailCopy and MimeMessage based on the given options. /// For forward/reply it would include the referenced message. /// - /// Account which should have new draft. + /// AccountId which should have new draft. /// Options like new email/forward/draft. /// Draft MailCopy and Draft MimeMessage as base64. - Task<(MailCopy draftMailCopy, string draftBase64MimeMessage)> CreateDraftAsync(MailAccount composerAccount, DraftCreationOptions draftCreationOptions); + Task<(MailCopy draftMailCopy, string draftBase64MimeMessage)> CreateDraftAsync(Guid accountId, DraftCreationOptions draftCreationOptions); } } diff --git a/Wino.Core/Services/MailService.cs b/Wino.Core/Services/MailService.cs index 642d14cd..780e4fbc 100644 --- a/Wino.Core/Services/MailService.cs +++ b/Wino.Core/Services/MailService.cs @@ -51,8 +51,9 @@ namespace Wino.Core.Services _preferencesService = preferencesService; } - public async Task<(MailCopy draftMailCopy, string draftBase64MimeMessage)> CreateDraftAsync(MailAccount composerAccount, DraftCreationOptions draftCreationOptions) + public async Task<(MailCopy draftMailCopy, string draftBase64MimeMessage)> CreateDraftAsync(Guid accountId, DraftCreationOptions draftCreationOptions) { + var composerAccount = await _accountService.GetAccountAsync(accountId).ConfigureAwait(false); var createdDraftMimeMessage = await CreateDraftMimeAsync(composerAccount, draftCreationOptions); var draftFolder = await _folderService.GetSpecialFolderByAccountIdAsync(composerAccount.Id, SpecialFolderType.Draft); diff --git a/Wino.Mail.ViewModels/AppShellViewModel.cs b/Wino.Mail.ViewModels/AppShellViewModel.cs index f037ab81..5e7b0b53 100644 --- a/Wino.Mail.ViewModels/AppShellViewModel.cs +++ b/Wino.Mail.ViewModels/AppShellViewModel.cs @@ -777,7 +777,7 @@ namespace Wino.Mail.ViewModels MailToUri = _launchProtocolService.MailToUri }; - var (draftMailCopy, draftBase64MimeMessage) = await _mailService.CreateDraftAsync(account, draftOptions).ConfigureAwait(false); + var (draftMailCopy, draftBase64MimeMessage) = await _mailService.CreateDraftAsync(account.Id, draftOptions).ConfigureAwait(false); var draftPreparationRequest = new DraftPreparationRequest(account, draftMailCopy, draftBase64MimeMessage); await _winoRequestDelegator.ExecuteAsync(draftPreparationRequest); diff --git a/Wino.Mail.ViewModels/MailRenderingPageViewModel.cs b/Wino.Mail.ViewModels/MailRenderingPageViewModel.cs index bf1a722d..305a7ece 100644 --- a/Wino.Mail.ViewModels/MailRenderingPageViewModel.cs +++ b/Wino.Mail.ViewModels/MailRenderingPageViewModel.cs @@ -271,7 +271,7 @@ namespace Wino.Mail.ViewModels } }; - var (draftMailCopy, draftBase64MimeMessage) = await _mailService.CreateDraftAsync(initializedMailItemViewModel.AssignedAccount, draftOptions).ConfigureAwait(false); + var (draftMailCopy, draftBase64MimeMessage) = await _mailService.CreateDraftAsync(initializedMailItemViewModel.AssignedAccount.Id, draftOptions).ConfigureAwait(false); var draftPreparationRequest = new DraftPreparationRequest(initializedMailItemViewModel.AssignedAccount, draftMailCopy, draftBase64MimeMessage, initializedMailItemViewModel.MailCopy);