Fixed crashing issue with disposing composing page.

This commit is contained in:
Burak Kaan Köse
2024-08-21 23:14:59 +02:00
parent f627226da9
commit bd9cbe30c5
3 changed files with 16 additions and 16 deletions

View File

@@ -214,7 +214,7 @@ namespace Wino.Mail.ViewModels
IncludedAttachments.Add(viewModel);
}
private async Task UpdateMimeChangesAsync()
public async Task UpdateMimeChangesAsync()
{
if (isUpdatingMimeBlocked || CurrentMimeMessage == null || ComposingAccount == null || CurrentMailDraftItem == null) return;
@@ -338,13 +338,12 @@ namespace Wino.Mail.ViewModels
}
}
public override async void OnNavigatedFrom(NavigationMode mode, object parameters)
public override void OnNavigatedFrom(NavigationMode mode, object parameters)
{
base.OnNavigatedFrom(mode, parameters);
await UpdateMimeChangesAsync().ConfigureAwait(false);
Messenger.Send(new KillChromiumRequested());
/// Do not put any code here.
/// Make sure to use Page's OnNavigatedTo instead.
}
public override async void OnNavigatedTo(NavigationMode mode, object parameters)

View File

@@ -39,8 +39,7 @@ namespace Wino.Views
public sealed partial class ComposePage : ComposePageAbstract,
IRecipient<NavigationPaneModeChanged>,
IRecipient<CreateNewComposeMailRequested>,
IRecipient<ApplicationThemeChanged>,
IRecipient<KillChromiumRequested>
IRecipient<ApplicationThemeChanged>
{
public bool IsComposerDarkMode
{
@@ -415,7 +414,6 @@ namespace Wino.Views
return await ExecuteScriptFunctionAsync("initializeJodit", fonts, composerFont, composerFontSize, readerFont, readerFontSize);
}
private void DisposeWebView2()
{
if (Chromium == null) return;
@@ -451,6 +449,7 @@ namespace Wino.Views
Disposables.Add(GetSuggestionBoxDisposable(CCBox));
Disposables.Add(GetSuggestionBoxDisposable(BccBox));
Chromium.Unloaded += Chromium_Unloaded;
Chromium.CoreWebView2Initialized -= ChromiumInitialized;
Chromium.CoreWebView2Initialized += ChromiumInitialized;
@@ -468,6 +467,11 @@ namespace Wino.Views
IsComposerDarkMode = underlyingThemeService.IsUnderlyingThemeDark();
}
private void Chromium_Unloaded(object sender, RoutedEventArgs e)
{
}
private async void ChromiumInitialized(Microsoft.UI.Xaml.Controls.WebView2 sender, Microsoft.UI.Xaml.Controls.CoreWebView2InitializedEventArgs args)
{
var editorBundlePath = (await ViewModel.NativeAppService.GetEditorBundlePathAsync()).Replace("editor.html", string.Empty);
@@ -692,8 +696,12 @@ namespace Wino.Views
}
}
public void Receive(KillChromiumRequested message)
protected override async void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
base.OnNavigatingFrom(e);
await ViewModel.UpdateMimeChangesAsync();
DisposeDisposables();
DisposeWebView2();
}

View File

@@ -1,7 +0,0 @@
namespace Wino.Messaging.Client.Mails
{
/// <summary>
/// Terminates all chromum instances.
/// </summary>
public record KillChromiumRequested;
}