Files
Joseph Doherty 1e21e33ade chore: deprecate standalone SecureStoreManager utility
Move SecureStoreManager project and tests to Deprecated folder and remove
from solution. SecureStore functionality is now integrated into ConfigManager.
2026-01-27 07:26:40 -05:00

107 lines
3.1 KiB
C#

using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using JdeScoping.SecureStoreManager.ViewModels;
namespace JdeScoping.SecureStoreManager.Views;
public partial class MainWindow : Window
{
private MainWindowViewModel? ViewModel => DataContext as MainWindowViewModel;
/// <summary>
/// Initializes a new instance of the <see cref="MainWindow"/> class.
/// </summary>
public MainWindow()
{
InitializeComponent();
Loaded += MainWindow_Loaded;
Closing += MainWindow_Closing;
}
private void MainWindow_Loaded(object? sender, RoutedEventArgs e)
{
if (ViewModel == null)
return;
// Subscribe to dialog request events (these open dialogs with their own DataContext)
ViewModel.OnRequestNewStoreDialog += ShowNewStoreDialog;
ViewModel.OnRequestOpenStoreDialog += ShowOpenStoreDialog;
ViewModel.OnRequestAddSecretDialog += ShowAddSecretDialog;
ViewModel.OnRequestEditSecretDialog += ShowEditSecretDialog;
ViewModel.OnRequestClose += () => Close();
}
private async void MainWindow_Closing(object? sender, WindowClosingEventArgs e)
{
if (ViewModel == null)
return;
e.Cancel = true;
if (await ViewModel.PromptForUnsavedChangesAsync())
{
e.Cancel = false;
}
}
private void DataGrid_DoubleTapped(object? sender, TappedEventArgs e)
{
if (ViewModel?.SelectedSecret != null)
{
ViewModel.EditSecretCommand.Execute(null);
}
}
private async void ShowNewStoreDialog()
{
if (ViewModel == null) return;
var dialog = new NewStoreDialog();
var result = await dialog.ShowDialog<bool?>(this);
if (result == true)
{
var vm = dialog.ViewModel;
await ViewModel.CreateNewStoreAsync(vm.StorePath, vm.KeyFilePath);
}
}
private async void ShowOpenStoreDialog()
{
if (ViewModel == null) return;
var dialog = new OpenStoreDialog();
var result = await dialog.ShowDialog<bool?>(this);
if (result == true)
{
var vm = dialog.ViewModel;
await ViewModel.OpenExistingStoreAsync(vm.StorePath, vm.KeyFilePath);
}
}
private async void ShowAddSecretDialog()
{
if (ViewModel == null) return;
var dialog = new SecretEditDialog();
var result = await dialog.ShowDialog<bool?>(this);
if (result == true)
{
var vm = dialog.ViewModel;
await ViewModel.SaveSecretAsync(vm.Key, vm.Value, isNew: true);
}
}
private async void ShowEditSecretDialog(string key, string value)
{
if (ViewModel == null) return;
var dialog = new SecretEditDialog(key, value);
var result = await dialog.ShowDialog<bool?>(this);
if (result == true)
{
var vm = dialog.ViewModel;
await ViewModel.SaveSecretAsync(vm.Key, vm.Value, isNew: false);
}
}
}