From 895cf8335f5a25622607c1a3dff2c5b1ce342639 Mon Sep 17 00:00:00 2001 From: InspectorIT Date: Tue, 3 Mar 2026 17:49:46 +0300 Subject: [PATCH] add the method to RepositoryWindow.axaml.cs --- src/KeyKeeper/Views/RepositoryWindow.axaml.cs | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/KeyKeeper/Views/RepositoryWindow.axaml.cs b/src/KeyKeeper/Views/RepositoryWindow.axaml.cs index 241690c..96cc878 100644 --- a/src/KeyKeeper/Views/RepositoryWindow.axaml.cs +++ b/src/KeyKeeper/Views/RepositoryWindow.axaml.cs @@ -30,6 +30,45 @@ public partial class RepositoryWindow: Window base.OnOpened(e); } + private async void RepositoryWindow_Closing(object? sender, WindowClosingEventArgs e) + { + if (allowClose || closeConfirmationShown) + { + return; + } + + if (DataContext is RepositoryWindowViewModel checkVm && + checkVm.CurrentPage is UnlockedRepositoryViewModel unlockedVm && + !unlockedVm.HasUnsavedChanges) + { + allowClose = true; + return; + } + + e.Cancel = true; + closeConfirmationShown = true; + + var dialog = new CloseConfirmationDialog(); + var result = await dialog.ShowDialog(this); + + closeConfirmationShown = false; + + if (result == null || result == CloseConfirmationResult.Cancel) + { + return; + } + + if (result == CloseConfirmationResult.Save && + DataContext is RepositoryWindowViewModel vm && + vm.CurrentPage is UnlockedRepositoryViewModel pageVm) + { + pageVm.Save(); + } + + allowClose = true; + Close(); + } + private async void AddEntryButton_Click(object sender, RoutedEventArgs args) { if (DataContext is RepositoryWindowViewModel vm_ && vm_.CurrentPage is UnlockedRepositoryViewModel vm)