Switch to main window after login

This commit is contained in:
Selim Mustafaev 2023-07-19 01:37:05 +03:00
parent e86b971d62
commit 60141105ed
2 changed files with 20 additions and 4 deletions

View File

@ -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)

View File

@ -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>();
mainWindow.Show();
desktop.MainWindow = mainWindow;
Close();
};
}