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. // TODO: FromName and FromAddress is probably not correct here for mail lists.
FromAddress = message.From.Mailboxes.FirstOrDefault()?.Address ?? Translator.UnknownAddress; FromAddress = message.From.Mailboxes.FirstOrDefault()?.Address ?? Translator.UnknownAddress;
FromName = message.From.Mailboxes.FirstOrDefault()?.Name ?? Translator.UnknownSender; 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 // 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; CreationDate = initializedMailItemViewModel?.MailCopy.CreationDate ?? message.Date.DateTime;
ContactPicture = initializedMailItemViewModel?.MailCopy.SenderContact?.Base64ContactPicture; ContactPicture = initializedMailItemViewModel?.MailCopy.SenderContact?.Base64ContactPicture;
// Automatically disable images for Junk folder to prevent pixel tracking. // Automatically disable images for Junk folder to prevent pixel tracking.
@@ -535,7 +535,10 @@ public partial class MailRenderingPageViewModel : MailBaseViewModel,
{ {
base.OnNavigatedFrom(mode, parameters); base.OnNavigatedFrom(mode, parameters);
renderCancellationTokenSource.Cancel(); renderCancellationTokenSource?.Cancel();
renderCancellationTokenSource?.Dispose();
renderCancellationTokenSource = null;
CurrentDownloadPercentage = 0d; CurrentDownloadPercentage = 0d;
initializedMailItemViewModel = null; initializedMailItemViewModel = null;
@@ -878,7 +881,7 @@ public partial class MailRenderingPageViewModel : MailBaseViewModel,
protected override void RegisterRecipients() protected override void RegisterRecipients()
{ {
base.RegisterRecipients(); base.RegisterRecipients();
Messenger.Register<NewMailItemRenderingRequestedEvent>(this); Messenger.Register<NewMailItemRenderingRequestedEvent>(this);
Messenger.Register<ThumbnailAdded>(this); Messenger.Register<ThumbnailAdded>(this);
} }
@@ -886,7 +889,7 @@ public partial class MailRenderingPageViewModel : MailBaseViewModel,
protected override void UnregisterRecipients() protected override void UnregisterRecipients()
{ {
base.UnregisterRecipients(); base.UnregisterRecipients();
Messenger.Unregister<NewMailItemRenderingRequestedEvent>(this); Messenger.Unregister<NewMailItemRenderingRequestedEvent>(this);
Messenger.Unregister<ThumbnailAdded>(this); Messenger.Unregister<ThumbnailAdded>(this);
} }
@@ -14,9 +14,9 @@ using Wino.Core.Domain;
using Wino.Core.Domain.Enums; using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces; using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Printing; using Wino.Core.Domain.Models.Printing;
using Wino.Mail.WinUI.Extensions;
using Wino.Mail.ViewModels.Data; using Wino.Mail.ViewModels.Data;
using Wino.Mail.WinUI; using Wino.Mail.WinUI;
using Wino.Mail.WinUI.Extensions;
using Wino.Messaging.Client.Mails; using Wino.Messaging.Client.Mails;
using Wino.Messaging.Client.Shell; using Wino.Messaging.Client.Shell;
using Wino.Views.Abstract; using Wino.Views.Abstract;
@@ -149,6 +149,9 @@ public sealed partial class MailRenderingPage : MailRenderingPageAbstract,
// Disposing the page. // Disposing the page.
// Make sure the WebView2 is disposed properly. // Make sure the WebView2 is disposed properly.
ViewModel.SaveHTMLasPDFFunc = null;
ViewModel.DirectPrintFuncAsync = null;
DisposeWebView2(); DisposeWebView2();
} }
@@ -325,7 +328,7 @@ public sealed partial class MailRenderingPage : MailRenderingPageAbstract,
protected override void RegisterRecipients() protected override void RegisterRecipients()
{ {
base.RegisterRecipients(); base.RegisterRecipients();
WeakReferenceMessenger.Default.Register<HtmlRenderingRequested>(this); WeakReferenceMessenger.Default.Register<HtmlRenderingRequested>(this);
WeakReferenceMessenger.Default.Register<CancelRenderingContentRequested>(this); WeakReferenceMessenger.Default.Register<CancelRenderingContentRequested>(this);
WeakReferenceMessenger.Default.Register<ApplicationThemeChanged>(this); WeakReferenceMessenger.Default.Register<ApplicationThemeChanged>(this);
@@ -334,7 +337,7 @@ public sealed partial class MailRenderingPage : MailRenderingPageAbstract,
protected override void UnregisterRecipients() protected override void UnregisterRecipients()
{ {
base.UnregisterRecipients(); base.UnregisterRecipients();
WeakReferenceMessenger.Default.Unregister<HtmlRenderingRequested>(this); WeakReferenceMessenger.Default.Unregister<HtmlRenderingRequested>(this);
WeakReferenceMessenger.Default.Unregister<CancelRenderingContentRequested>(this); WeakReferenceMessenger.Default.Unregister<CancelRenderingContentRequested>(this);
WeakReferenceMessenger.Default.Unregister<ApplicationThemeChanged>(this); WeakReferenceMessenger.Default.Unregister<ApplicationThemeChanged>(this);