From e917bd249f04ebefe66c5cee4db2e57843ac3019 Mon Sep 17 00:00:00 2001 From: Geoffroy BONNEVILLE Date: Mon, 10 May 2021 20:28:13 +0200 Subject: [PATCH] Unregister the messenger everywhere on unload/navigate from --- ModernKeePass/ViewModels/MainVm.cs | 6 ++++++ ModernKeePass/Views/MainPage.xaml.cs | 13 ++++++------- .../Views/MainPageFrames/NewDatabasePage.xaml.cs | 10 ++++++++++ .../MainPageFrames/RecentDatabasesPage.xaml.cs | 10 ++++++++++ .../Views/MainPageFrames/SaveDatabasePage.xaml.cs | 10 ++++++++++ .../Views/UserControls/OpenDatabaseUserControl.xaml | 5 ++++- .../UserControls/SetCredentialsUserControl.xaml | 3 +++ WinAppCommon/ViewModels/NewVm.cs | 6 ++++++ WinAppCommon/ViewModels/RecentVm.cs | 5 +++++ WinAppCommon/ViewModels/SaveVm.cs | 6 ++++++ WinAppCommon/ViewModels/Settings/CredentialsVm.cs | 6 ++++++ .../UserControls/OpenDatabaseControlVm.cs | 6 ++++++ .../ViewModels/UserControls/SetCredentialsVm.cs | 6 ++++++ 13 files changed, 84 insertions(+), 8 deletions(-) diff --git a/ModernKeePass/ViewModels/MainVm.cs b/ModernKeePass/ViewModels/MainVm.cs index 686538d..29e3e3a 100644 --- a/ModernKeePass/ViewModels/MainVm.cs +++ b/ModernKeePass/ViewModels/MainVm.cs @@ -193,5 +193,11 @@ namespace ModernKeePass.ViewModels MessengerInstance.Send(new DatabaseClosedMessage { Parameter = message.Parameter }); }); } + + public override void Cleanup() + { + MessengerInstance.Unregister(this); + base.Cleanup(); + } } } diff --git a/ModernKeePass/Views/MainPage.xaml.cs b/ModernKeePass/Views/MainPage.xaml.cs index fbd51ee..aa85007 100644 --- a/ModernKeePass/Views/MainPage.xaml.cs +++ b/ModernKeePass/Views/MainPage.xaml.cs @@ -18,16 +18,10 @@ namespace ModernKeePass.Views public MainPage() { InitializeComponent(); - Unloaded += MainPage_Unloaded; ListView = MenuListView; ListViewSource = MenuItemsSource; } - - private void MainPage_Unloaded(object sender, Windows.UI.Xaml.RoutedEventArgs e) - { - Model.Cleanup(); - } - + private new void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { base.ListView_SelectionChanged(sender, e); @@ -47,5 +41,10 @@ namespace ModernKeePass.Views file = e.Parameter as FileInfo; await Model.Initialize(Frame, MenuFrame, file); } + + protected override void OnNavigatedFrom(NavigationEventArgs e) + { + Model.Cleanup(); + } } } diff --git a/ModernKeePass/Views/MainPageFrames/NewDatabasePage.xaml.cs b/ModernKeePass/Views/MainPageFrames/NewDatabasePage.xaml.cs index 3147689..59145dc 100644 --- a/ModernKeePass/Views/MainPageFrames/NewDatabasePage.xaml.cs +++ b/ModernKeePass/Views/MainPageFrames/NewDatabasePage.xaml.cs @@ -1,5 +1,8 @@ // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 +using Windows.UI.Xaml.Navigation; +using ModernKeePass.ViewModels; + namespace ModernKeePass.Views { /// @@ -7,9 +10,16 @@ namespace ModernKeePass.Views /// public sealed partial class NewDatabasePage { + public NewVm Model => (NewVm)DataContext; + public NewDatabasePage() { InitializeComponent(); } + + protected override void OnNavigatedFrom(NavigationEventArgs e) + { + Model.Cleanup(); + } } } diff --git a/ModernKeePass/Views/MainPageFrames/RecentDatabasesPage.xaml.cs b/ModernKeePass/Views/MainPageFrames/RecentDatabasesPage.xaml.cs index 485806b..604873e 100644 --- a/ModernKeePass/Views/MainPageFrames/RecentDatabasesPage.xaml.cs +++ b/ModernKeePass/Views/MainPageFrames/RecentDatabasesPage.xaml.cs @@ -1,5 +1,8 @@ // Pour en savoir plus sur le modèle d'élément Page vierge, consultez la page http://go.microsoft.com/fwlink/?LinkId=234238 +using Windows.UI.Xaml.Navigation; +using ModernKeePass.ViewModels; + namespace ModernKeePass.Views { /// @@ -7,9 +10,16 @@ namespace ModernKeePass.Views /// public sealed partial class RecentDatabasesPage { + public RecentVm Model => (RecentVm)DataContext; + public RecentDatabasesPage() { InitializeComponent(); } + + protected override void OnNavigatedFrom(NavigationEventArgs e) + { + Model.Cleanup(); + } } } diff --git a/ModernKeePass/Views/MainPageFrames/SaveDatabasePage.xaml.cs b/ModernKeePass/Views/MainPageFrames/SaveDatabasePage.xaml.cs index cddcbd2..f900562 100644 --- a/ModernKeePass/Views/MainPageFrames/SaveDatabasePage.xaml.cs +++ b/ModernKeePass/Views/MainPageFrames/SaveDatabasePage.xaml.cs @@ -1,5 +1,8 @@ // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 +using Windows.UI.Xaml.Navigation; +using ModernKeePass.ViewModels; + namespace ModernKeePass.Views { /// @@ -7,9 +10,16 @@ namespace ModernKeePass.Views /// public sealed partial class SaveDatabasePage { + public SaveVm Model => (SaveVm)DataContext; + public SaveDatabasePage() { InitializeComponent(); } + + protected override void OnNavigatedFrom(NavigationEventArgs e) + { + Model.Cleanup(); + } } } diff --git a/ModernKeePass/Views/UserControls/OpenDatabaseUserControl.xaml b/ModernKeePass/Views/UserControls/OpenDatabaseUserControl.xaml index b5ac571..893d315 100644 --- a/ModernKeePass/Views/UserControls/OpenDatabaseUserControl.xaml +++ b/ModernKeePass/Views/UserControls/OpenDatabaseUserControl.xaml @@ -7,7 +7,7 @@ xmlns:interactivity="using:Microsoft.Xaml.Interactivity" xmlns:core="using:Microsoft.Xaml.Interactions.Core" xmlns:converters="using:ModernKeePass.Converters" - mc:Ignorable="d" > + mc:Ignorable="d"> @@ -85,6 +85,9 @@ + + + diff --git a/ModernKeePass/Views/UserControls/SetCredentialsUserControl.xaml b/ModernKeePass/Views/UserControls/SetCredentialsUserControl.xaml index 6a262d3..31bb2de 100644 --- a/ModernKeePass/Views/UserControls/SetCredentialsUserControl.xaml +++ b/ModernKeePass/Views/UserControls/SetCredentialsUserControl.xaml @@ -133,6 +133,9 @@ + + + diff --git a/WinAppCommon/ViewModels/NewVm.cs b/WinAppCommon/ViewModels/NewVm.cs index 86c03be..3a4f9c5 100644 --- a/WinAppCommon/ViewModels/NewVm.cs +++ b/WinAppCommon/ViewModels/NewVm.cs @@ -72,5 +72,11 @@ namespace ModernKeePass.ViewModels var database = await _mediator.Send(new GetDatabaseQuery()); _navigation.NavigateTo(Constants.Navigation.GroupPage, new NavigationItem { Id = database.RootGroupId }); } + + public override void Cleanup() + { + MessengerInstance.Unregister(this); + base.Cleanup(); + } } } diff --git a/WinAppCommon/ViewModels/RecentVm.cs b/WinAppCommon/ViewModels/RecentVm.cs index 1733548..c1b49f1 100644 --- a/WinAppCommon/ViewModels/RecentVm.cs +++ b/WinAppCommon/ViewModels/RecentVm.cs @@ -49,5 +49,10 @@ namespace ModernKeePass.ViewModels _recent.ClearAll(); RecentItems.Clear(); } + public override void Cleanup() + { + MessengerInstance.Unregister(this); + base.Cleanup(); + } } } diff --git a/WinAppCommon/ViewModels/SaveVm.cs b/WinAppCommon/ViewModels/SaveVm.cs index 6bf4a91..1aee355 100644 --- a/WinAppCommon/ViewModels/SaveVm.cs +++ b/WinAppCommon/ViewModels/SaveVm.cs @@ -69,5 +69,11 @@ namespace ModernKeePass.ViewModels await _mediator.Send(new CloseDatabaseCommand()); _navigation.NavigateTo(Constants.Navigation.MainPage); } + + public override void Cleanup() + { + MessengerInstance.Unregister(this); + base.Cleanup(); + } } } \ No newline at end of file diff --git a/WinAppCommon/ViewModels/Settings/CredentialsVm.cs b/WinAppCommon/ViewModels/Settings/CredentialsVm.cs index 48efe4d..74acc1b 100644 --- a/WinAppCommon/ViewModels/Settings/CredentialsVm.cs +++ b/WinAppCommon/ViewModels/Settings/CredentialsVm.cs @@ -33,5 +33,11 @@ namespace ModernKeePass.ViewModels.Settings var database = await _mediator.Send(new GetDatabaseQuery()); _notification.Show(database.Name, _resource.GetResourceValue("CompositeKeyUpdated")); } + + public override void Cleanup() + { + MessengerInstance.Unregister(this); + base.Cleanup(); + } } } \ No newline at end of file diff --git a/WinAppCommon/ViewModels/UserControls/OpenDatabaseControlVm.cs b/WinAppCommon/ViewModels/UserControls/OpenDatabaseControlVm.cs index 5bbcac6..718d07c 100644 --- a/WinAppCommon/ViewModels/UserControls/OpenDatabaseControlVm.cs +++ b/WinAppCommon/ViewModels/UserControls/OpenDatabaseControlVm.cs @@ -181,5 +181,11 @@ namespace ModernKeePass.ViewModels IsOpening = false; } } + + public override void Cleanup() + { + MessengerInstance.Unregister(this); + base.Cleanup(); + } } } diff --git a/WinAppCommon/ViewModels/UserControls/SetCredentialsVm.cs b/WinAppCommon/ViewModels/UserControls/SetCredentialsVm.cs index acf7787..6bd10cb 100644 --- a/WinAppCommon/ViewModels/UserControls/SetCredentialsVm.cs +++ b/WinAppCommon/ViewModels/UserControls/SetCredentialsVm.cs @@ -150,5 +150,11 @@ namespace ModernKeePass.ViewModels KeyFilePath = HasKeyFile ? KeyFilePath : null }); } + + public override void Cleanup() + { + MessengerInstance.Unregister(this); + base.Cleanup(); + } } } \ No newline at end of file