diff --git a/src/KeyKeeper/App.axaml.cs b/src/KeyKeeper/App.axaml.cs index a55380a..0dba5a8 100644 --- a/src/KeyKeeper/App.axaml.cs +++ b/src/KeyKeeper/App.axaml.cs @@ -24,9 +24,10 @@ public partial class App : Application // Avoid duplicate validations from both Avalonia and the CommunityToolkit. // More info: https://docs.avaloniaui.net/docs/guides/development-guides/data-validation#manage-validationplugins DisableAvaloniaDataAnnotationValidation(); - desktop.MainWindow = new MainWindow + var recentFilesService = new RecentFilesService(); + desktop.MainWindow = new MainWindow(recentFilesService) { - DataContext = new MainWindowViewModel(new RecentFilesService()), + DataContext = new MainWindowViewModel(recentFilesService), }; } diff --git a/src/KeyKeeper/ViewModels/MainWindowViewModel.cs b/src/KeyKeeper/ViewModels/MainWindowViewModel.cs index 7903556..f967df0 100644 --- a/src/KeyKeeper/ViewModels/MainWindowViewModel.cs +++ b/src/KeyKeeper/ViewModels/MainWindowViewModel.cs @@ -20,16 +20,6 @@ public partial class MainWindowViewModel : ViewModelBase this.recentFilesService = recentFilesService; } - public void OpenVault(string filename) - { - recentFilesService.Remember(filename); - } - - public void CreateVault(string filename) - { - recentFilesService.Remember(filename); - } - [RelayCommand] private async Task OpenSettings() { diff --git a/src/KeyKeeper/Views/MainWindow.axaml b/src/KeyKeeper/Views/MainWindow.axaml index 00b2174..c3d9dad 100644 --- a/src/KeyKeeper/Views/MainWindow.axaml +++ b/src/KeyKeeper/Views/MainWindow.axaml @@ -78,9 +78,14 @@ ItemsSource="{Binding RecentFiles}"> - + + + @@ -93,7 +98,5 @@ - - diff --git a/src/KeyKeeper/Views/MainWindow.axaml.cs b/src/KeyKeeper/Views/MainWindow.axaml.cs index ee8549a..c8bb345 100644 --- a/src/KeyKeeper/Views/MainWindow.axaml.cs +++ b/src/KeyKeeper/Views/MainWindow.axaml.cs @@ -3,8 +3,10 @@ using Avalonia.Controls; using Avalonia.Input; using Avalonia.Interactivity; using Avalonia.Platform.Storage; +using KeyKeeper.Models; using KeyKeeper.PasswordStore; using KeyKeeper.PasswordStore.Crypto; +using KeyKeeper.Services; using KeyKeeper.ViewModels; using System; using System.Collections.Generic; @@ -15,8 +17,11 @@ namespace KeyKeeper.Views { public partial class MainWindow : Window { - public MainWindow() + private IRecentFilesService recentFilesService; + + public MainWindow(IRecentFilesService recentFilesService) { + this.recentFilesService = recentFilesService; InitializeComponent(); } @@ -40,6 +45,9 @@ namespace KeyKeeper.Views Key = compositeKey, LockTimeoutSeconds = 800 }); + + recentFilesService.Remember(path); + IPassStore passStore = passStoreAccessor; OpenRepositoryWindow(passStore); } @@ -69,11 +77,20 @@ namespace KeyKeeper.Views var file = files[0]; if (file.TryGetLocalPath() is string path) { + recentFilesService.Remember(path); OpenRepositoryWindow(new PassStoreFileAccessor(path, false, null)); } } } + private void RecentVaultsListItem_DoubleTapped(object sender, RoutedEventArgs e) + { + if (sender is Control c && c.DataContext is RecentFile recentFile) + { + OpenRepositoryWindow(new PassStoreFileAccessor(recentFile.Path, false, null)); + } + } + private void OpenRepositoryWindow(IPassStore passStore) { var repositoryWindow = new RepositoryWindow(new RepositoryWindowViewModel(passStore))