diff --git a/Wino.Mail.ViewModels/MailRenderingPageViewModel.cs b/Wino.Mail.ViewModels/MailRenderingPageViewModel.cs index 7f3f8078..bc14d954 100644 --- a/Wino.Mail.ViewModels/MailRenderingPageViewModel.cs +++ b/Wino.Mail.ViewModels/MailRenderingPageViewModel.cs @@ -461,10 +461,10 @@ public partial class MailRenderingPageViewModel : MailBaseViewModel, // TODO: FromName and FromAddress is probably not correct here for mail lists. FromAddress = message.From.Mailboxes.FirstOrDefault()?.Address ?? Translator.UnknownAddress; FromName = message.From.Mailboxes.FirstOrDefault()?.Name ?? Translator.UnknownSender; - + // Use the received date from MailCopy if available, otherwise fall back to the sent date from MIME message CreationDate = initializedMailItemViewModel?.MailCopy.CreationDate ?? message.Date.DateTime; - + ContactPicture = initializedMailItemViewModel?.MailCopy.SenderContact?.Base64ContactPicture; // Automatically disable images for Junk folder to prevent pixel tracking. @@ -535,7 +535,10 @@ public partial class MailRenderingPageViewModel : MailBaseViewModel, { base.OnNavigatedFrom(mode, parameters); - renderCancellationTokenSource.Cancel(); + renderCancellationTokenSource?.Cancel(); + renderCancellationTokenSource?.Dispose(); + renderCancellationTokenSource = null; + CurrentDownloadPercentage = 0d; initializedMailItemViewModel = null; @@ -878,7 +881,7 @@ public partial class MailRenderingPageViewModel : MailBaseViewModel, protected override void RegisterRecipients() { base.RegisterRecipients(); - + Messenger.Register(this); Messenger.Register(this); } @@ -886,7 +889,7 @@ public partial class MailRenderingPageViewModel : MailBaseViewModel, protected override void UnregisterRecipients() { base.UnregisterRecipients(); - + Messenger.Unregister(this); Messenger.Unregister(this); } diff --git a/Wino.Mail.WinUI/Views/MailRenderingPage.xaml.cs b/Wino.Mail.WinUI/Views/MailRenderingPage.xaml.cs index fb1e5fdb..61168d5f 100644 --- a/Wino.Mail.WinUI/Views/MailRenderingPage.xaml.cs +++ b/Wino.Mail.WinUI/Views/MailRenderingPage.xaml.cs @@ -14,9 +14,9 @@ using Wino.Core.Domain; using Wino.Core.Domain.Enums; using Wino.Core.Domain.Interfaces; using Wino.Core.Domain.Models.Printing; -using Wino.Mail.WinUI.Extensions; using Wino.Mail.ViewModels.Data; using Wino.Mail.WinUI; +using Wino.Mail.WinUI.Extensions; using Wino.Messaging.Client.Mails; using Wino.Messaging.Client.Shell; using Wino.Views.Abstract; @@ -149,6 +149,9 @@ public sealed partial class MailRenderingPage : MailRenderingPageAbstract, // Disposing the page. // Make sure the WebView2 is disposed properly. + ViewModel.SaveHTMLasPDFFunc = null; + ViewModel.DirectPrintFuncAsync = null; + DisposeWebView2(); } @@ -325,7 +328,7 @@ public sealed partial class MailRenderingPage : MailRenderingPageAbstract, protected override void RegisterRecipients() { base.RegisterRecipients(); - + WeakReferenceMessenger.Default.Register(this); WeakReferenceMessenger.Default.Register(this); WeakReferenceMessenger.Default.Register(this); @@ -334,7 +337,7 @@ public sealed partial class MailRenderingPage : MailRenderingPageAbstract, protected override void UnregisterRecipients() { base.UnregisterRecipients(); - + WeakReferenceMessenger.Default.Unregister(this); WeakReferenceMessenger.Default.Unregister(this); WeakReferenceMessenger.Default.Unregister(this);