Dispose mail webviews when closing the shell

This commit is contained in:
Burak Kaan Köse
2026-04-20 19:40:32 +02:00
parent d85812ed7b
commit 2b1676a4f7
7 changed files with 129 additions and 12 deletions
+21 -5
View File
@@ -488,6 +488,12 @@ public partial class ComposePageViewModel : MailBaseViewModel,
[RelayCommand(CanExecute = nameof(canSendMail))]
private async Task DiscardAsync()
=> await DiscardDraftAsync();
public Task SaveDraftAsync()
=> UpdateMimeChangesAsync();
public async Task DiscardDraftAsync(bool requireConfirmation = true)
{
if (ComposingAccount == null)
{
@@ -495,14 +501,19 @@ public partial class ComposePageViewModel : MailBaseViewModel,
return;
}
var confirmation = await _dialogService.ShowConfirmationDialogAsync(Translator.DialogMessage_DiscardDraftConfirmationMessage,
Translator.DialogMessage_DiscardDraftConfirmationTitle,
Translator.Buttons_Yes);
var confirmation = !requireConfirmation || await _dialogService.ShowConfirmationDialogAsync(Translator.DialogMessage_DiscardDraftConfirmationMessage,
Translator.DialogMessage_DiscardDraftConfirmationTitle,
Translator.Buttons_Yes);
if (confirmation)
if (!confirmation)
{
isUpdatingMimeBlocked = true;
return;
}
isUpdatingMimeBlocked = true;
try
{
// Don't send delete request for local drafts. Just delete the record and mime locally.
if (CurrentMailDraftItem.MailCopy.IsLocalDraft)
{
@@ -514,6 +525,11 @@ public partial class ComposePageViewModel : MailBaseViewModel,
await _worker.ExecuteAsync(deletePackage).ConfigureAwait(false);
}
}
catch
{
isUpdatingMimeBlocked = false;
throw;
}
}
//public override void OnNavigatedFrom(NavigationMode mode, object parameters)