diff --git a/AutoCat/ViewModels/AuthWindowViewModel.cs b/AutoCat/ViewModels/AuthWindowViewModel.cs index 913424f..3da2ae0 100644 --- a/AutoCat/ViewModels/AuthWindowViewModel.cs +++ b/AutoCat/ViewModels/AuthWindowViewModel.cs @@ -48,6 +48,12 @@ public class AuthWindowViewModel: ViewModelBase #endregion + #region Events + + public event EventHandler? ReplaceWithMainWindowEvent; + + #endregion + public AuthWindowViewModel(IApiService apiService, IStorageService storageService) { _apiService = apiService; @@ -65,8 +71,8 @@ public class AuthWindowViewModel: ViewModelBase private async Task Login() { var user = await _apiService.Login(Email, Password); - //await _storageService.SetUser(user); - Close(); + await _storageService.SetUser(user); + ReplaceWithMainWindowEvent?.Invoke(this, EventArgs.Empty); } private async void ShowError(Exception error) diff --git a/AutoCat/Views/AuthWindow.axaml.cs b/AutoCat/Views/AuthWindow.axaml.cs index 86ba6a5..6dfeb1a 100644 --- a/AutoCat/Views/AuthWindow.axaml.cs +++ b/AutoCat/Views/AuthWindow.axaml.cs @@ -1,5 +1,9 @@ using AutoCat.ViewModels; +using Avalonia; using Avalonia.Controls; +using Avalonia.Controls.ApplicationLifetimes; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting.Internal; namespace AutoCat.Views; @@ -9,10 +13,16 @@ public partial class AuthWindow : Window { InitializeComponent(); - if (DataContext is ViewModelBase vm) + if (DataContext is AuthWindowViewModel vm) { - vm.ClosingRequest += (sender, args) => + vm.ReplaceWithMainWindowEvent += (sender, args) => { + if (Application.Current is not App app) return; + if (app.ApplicationLifetime is not IClassicDesktopStyleApplicationLifetime desktop) return; + + var mainWindow = app.AppHost.Services.GetRequiredService(); + mainWindow.Show(); + desktop.MainWindow = mainWindow; Close(); }; }