Unregister the messenger everywhere on unload/navigate from

This commit is contained in:
Geoffroy BONNEVILLE
2021-05-10 20:28:13 +02:00
parent dec59b2378
commit e917bd249f
13 changed files with 84 additions and 8 deletions

View File

@@ -193,5 +193,11 @@ namespace ModernKeePass.ViewModels
MessengerInstance.Send(new DatabaseClosedMessage { Parameter = message.Parameter });
});
}
public override void Cleanup()
{
MessengerInstance.Unregister(this);
base.Cleanup();
}
}
}

View File

@@ -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();
}
}
}

View File

@@ -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
{
/// <summary>
@@ -7,9 +10,16 @@ namespace ModernKeePass.Views
/// </summary>
public sealed partial class NewDatabasePage
{
public NewVm Model => (NewVm)DataContext;
public NewDatabasePage()
{
InitializeComponent();
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
Model.Cleanup();
}
}
}

View File

@@ -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
{
/// <summary>
@@ -7,9 +10,16 @@ namespace ModernKeePass.Views
/// </summary>
public sealed partial class RecentDatabasesPage
{
public RecentVm Model => (RecentVm)DataContext;
public RecentDatabasesPage()
{
InitializeComponent();
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
Model.Cleanup();
}
}
}

View File

@@ -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
{
/// <summary>
@@ -7,9 +10,16 @@ namespace ModernKeePass.Views
/// </summary>
public sealed partial class SaveDatabasePage
{
public SaveVm Model => (SaveVm)DataContext;
public SaveDatabasePage()
{
InitializeComponent();
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
Model.Cleanup();
}
}
}

View File

@@ -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">
<UserControl.Resources>
<converters:EmptyStringToVisibilityConverter x:Key="EmptyStringToVisibilityConverter"/>
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
@@ -85,6 +85,9 @@
<core:DataTriggerBehavior Binding="{Binding IsError}" Value="False">
<core:GoToStateAction StateName="Initial"/>
</core:DataTriggerBehavior>
<core:EventTriggerBehavior EventName="Unloaded">
<core:CallMethodAction TargetObject="{Binding}" MethodName="Cleanup"/>
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
</Grid>
</UserControl>

View File

@@ -133,6 +133,9 @@
<core:DataTriggerBehavior Binding="{Binding IsKeyFileValid}" Value="True">
<core:GoToStateAction StateName="KeyFileValid"/>
</core:DataTriggerBehavior>
<core:EventTriggerBehavior EventName="Unloaded">
<core:CallMethodAction TargetObject="{Binding}" MethodName="Cleanup"/>
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
</Grid>
</UserControl>

View File

@@ -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();
}
}
}

View File

@@ -49,5 +49,10 @@ namespace ModernKeePass.ViewModels
_recent.ClearAll();
RecentItems.Clear();
}
public override void Cleanup()
{
MessengerInstance.Unregister(this);
base.Cleanup();
}
}
}

View File

@@ -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();
}
}
}

View File

@@ -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();
}
}
}

View File

@@ -181,5 +181,11 @@ namespace ModernKeePass.ViewModels
IsOpening = false;
}
}
public override void Cleanup()
{
MessengerInstance.Unregister(this);
base.Cleanup();
}
}
}

View File

@@ -150,5 +150,11 @@ namespace ModernKeePass.ViewModels
KeyFilePath = HasKeyFile ? KeyFilePath : null
});
}
public override void Cleanup()
{
MessengerInstance.Unregister(this);
base.Cleanup();
}
}
}