Fixed the issue with mail rendering page not getting disposed properly.

This commit is contained in:
Burak Kaan Köse
2025-11-24 20:54:57 +01:00
parent beb3bf9d1d
commit a8a5d3c3d6
2 changed files with 14 additions and 8 deletions
@@ -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<NewMailItemRenderingRequestedEvent>(this);
Messenger.Register<ThumbnailAdded>(this);
}
@@ -886,7 +889,7 @@ public partial class MailRenderingPageViewModel : MailBaseViewModel,
protected override void UnregisterRecipients()
{
base.UnregisterRecipients();
Messenger.Unregister<NewMailItemRenderingRequestedEvent>(this);
Messenger.Unregister<ThumbnailAdded>(this);
}
@@ -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<HtmlRenderingRequested>(this);
WeakReferenceMessenger.Default.Register<CancelRenderingContentRequested>(this);
WeakReferenceMessenger.Default.Register<ApplicationThemeChanged>(this);
@@ -334,7 +337,7 @@ public sealed partial class MailRenderingPage : MailRenderingPageAbstract,
protected override void UnregisterRecipients()
{
base.UnregisterRecipients();
WeakReferenceMessenger.Default.Unregister<HtmlRenderingRequested>(this);
WeakReferenceMessenger.Default.Unregister<CancelRenderingContentRequested>(this);
WeakReferenceMessenger.Default.Unregister<ApplicationThemeChanged>(this);