detect lock status when the window opens

This commit is contained in:
2025-12-05 02:08:19 +03:00
parent 9e5faa2ad4
commit 14e068324e
4 changed files with 46 additions and 3 deletions

View File

@@ -1,5 +1,13 @@
using KeyKeeper.PasswordStore;
namespace KeyKeeper.ViewModels;
public class LockedRepositoryViewModel : ViewModelBase
{
private IPassStore passStore;
public LockedRepositoryViewModel(IPassStore store)
{
passStore = store;
}
}

View File

@@ -1,11 +1,39 @@
using KeyKeeper.PasswordStore;
namespace KeyKeeper.ViewModels;
public class RepositoryWindowViewModel : ViewModelBase
{
private object currentPage = new LockedRepositoryViewModel();
private object currentPage;
private IPassStore passStore;
public object CurrentPage
{
get => currentPage;
set { currentPage = value; OnPropertyChanged(nameof(CurrentPage)); }
}
public RepositoryWindowViewModel(IPassStore store)
{
passStore = store;
UpdateLockStatus();
}
private void UpdateLockStatus()
{
if (currentPage is LockedRepositoryViewModel && !passStore.Locked)
SwitchToUnlocked();
else if (currentPage is UnlockedRepositoryViewModel && passStore.Locked)
SwitchToLocked();
}
private void SwitchToUnlocked()
{
currentPage = new UnlockedRepositoryViewModel(passStore);
}
private void SwitchToLocked()
{
currentPage = new LockedRepositoryViewModel(passStore);
}
}

View File

@@ -1,5 +1,13 @@
using KeyKeeper.PasswordStore;
namespace KeyKeeper.ViewModels;
public class UnlockedRepositoryViewModel : ViewModelBase
{
private IPassStore passStore;
public UnlockedRepositoryViewModel(IPassStore store)
{
passStore = store;
}
}

View File

@@ -84,8 +84,7 @@ namespace KeyKeeper.Views
{
var repositoryWindow = new RepositoryWindow()
{
DataContext = new RepositoryWindowViewModel(),
PassStore = store,
DataContext = new RepositoryWindowViewModel(store),
WindowStartupLocation = WindowStartupLocation.CenterScreen
};
repositoryWindow.Closed += (s, e) => this.Show();