move more of the setup wizard logic into the setup wizard itself instead of having some critical logic in a random lambda in MainWindow.axaml.cs

This commit is contained in:
GreemDev 2025-11-22 20:33:28 -06:00
parent 615b2c8b8a
commit c4873ca06b
5 changed files with 33 additions and 31 deletions

View file

@ -57,7 +57,7 @@ namespace Ryujinx.Ava.UI.SetupWizard
} }
finally finally
{ {
mwvm.VirtualFileSystem.ReloadKeySet(); _mainWindow.VirtualFileSystem.ReloadKeySet();
} }
return Result.Success; return Result.Success;

View file

@ -1,11 +1,10 @@
using Avalonia.Controls.Presenters;
using Gommon; using Gommon;
using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Ava.Systems.SetupWizard; using Ryujinx.Ava.Systems.SetupWizard;
using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.SetupWizard.Pages; using Ryujinx.Ava.UI.SetupWizard.Pages;
using Ryujinx.Ava.UI.Windows;
using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration;
using Ryujinx.HLE.FileSystem; using Ryujinx.HLE.FileSystem;
using System; using System;
@ -14,15 +13,18 @@ using System.Threading.Tasks;
namespace Ryujinx.Ava.UI.SetupWizard namespace Ryujinx.Ava.UI.SetupWizard
{ {
public partial class RyujinxSetupWizard(ContentPresenter presenter, MainWindowViewModel mwvm, Action onClose) public partial class RyujinxSetupWizard(RyujinxSetupWizardWindow wizardWindow)
: BaseSetupWizard(presenter) : BaseSetupWizard(wizardWindow.WizardPresenter)
{ {
private readonly MainWindow _mainWindow = RyujinxApp.MainWindow;
private bool _configWasModified = false; private bool _configWasModified = false;
public bool HasFirmware => mwvm.ContentManager.GetCurrentFirmwareVersion() != null; public bool HasFirmware => _mainWindow.ContentManager.GetCurrentFirmwareVersion() != null;
public override async Task Start() public override async Task Start()
{ {
NotificationHelper.SetNotificationManager(wizardWindow);
RyujinxSetupWizardWindow.IsUsingSetupWizard = true; RyujinxSetupWizardWindow.IsUsingSetupWizard = true;
Start: Start:
await FirstPage(); await FirstPage();
@ -35,9 +37,10 @@ namespace Ryujinx.Ava.UI.SetupWizard
if (!await SetupFirmware()) if (!await SetupFirmware())
goto Keys; goto Keys;
Return: Return:
onClose(); NotificationHelper.SetNotificationManager(_mainWindow);
wizardWindow.Close();
RyujinxSetupWizardWindow.IsUsingSetupWizard = false;
if (_configWasModified) if (_configWasModified)
ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.GlobalConfigurationPath); ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.GlobalConfigurationPath);
@ -45,7 +48,7 @@ namespace Ryujinx.Ava.UI.SetupWizard
private async ValueTask<bool> SetupKeys() private async ValueTask<bool> SetupKeys()
{ {
if (!mwvm.VirtualFileSystem.HasKeySet) if (!_mainWindow.VirtualFileSystem.HasKeySet)
{ {
Retry: Retry:
bool result = await NextPage() bool result = await NextPage()
@ -73,7 +76,7 @@ namespace Ryujinx.Ava.UI.SetupWizard
{ {
if (!HasFirmware) if (!HasFirmware)
{ {
if (!mwvm.VirtualFileSystem.HasKeySet) if (!_mainWindow.VirtualFileSystem.HasKeySet)
{ {
NotificationHelper.ShowError("Keys still seem to not be installed. Please try again."); NotificationHelper.ShowError("Keys still seem to not be installed. Please try again.");
return false; return false;
@ -93,8 +96,8 @@ namespace Ryujinx.Ava.UI.SetupWizard
try try
{ {
mwvm.ContentManager.InstallFirmware(fwvm.FirmwareSourcePath); _mainWindow.ContentManager.InstallFirmware(fwvm.FirmwareSourcePath);
SystemVersion installedFwVer = mwvm.ContentManager.GetCurrentFirmwareVersion(); SystemVersion installedFwVer = _mainWindow.ContentManager.GetCurrentFirmwareVersion();
if (installedFwVer != null) if (installedFwVer != null)
{ {
NotificationHelper.ShowInformation( NotificationHelper.ShowInformation(
@ -110,7 +113,7 @@ namespace Ryujinx.Ava.UI.SetupWizard
"\nPlease check the log or try again." "\nPlease check the log or try again."
); );
} }
mwvm.RefreshFirmwareStatus(installedFwVer, allowNullVersion: true); _mainWindow.ViewModel.RefreshFirmwareStatus(installedFwVer, allowNullVersion: true);
// Purge Applet Cache. // Purge Applet Cache.

View file

@ -1,12 +1,12 @@
using Avalonia.Controls;
using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Ava.Systems.Configuration;
using Ryujinx.Ava.Systems.SetupWizard; using Ryujinx.Ava.Systems.SetupWizard;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.Windows; using Ryujinx.Ava.UI.Windows;
using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging; using Ryujinx.Common.Logging;
using System; using System;
using System.IO; using System.IO;
using System.Threading.Tasks;
namespace Ryujinx.Ava.UI.SetupWizard namespace Ryujinx.Ava.UI.SetupWizard
{ {
@ -24,18 +24,22 @@ namespace Ryujinx.Ava.UI.SetupWizard
} }
} }
public static RyujinxSetupWizardWindow CreateWindow(MainWindowViewModel mwvm, out BaseSetupWizard setupWizard) public static Task ShowAsync(Window owner = null)
{
Task windowTask = ShowAsync(
CreateWindow(out BaseSetupWizard wiz),
owner ?? RyujinxApp.MainWindow
);
_ = wiz.Start();
return windowTask;
}
public static RyujinxSetupWizardWindow CreateWindow(out BaseSetupWizard setupWizard)
{ {
RyujinxSetupWizardWindow window = new(); RyujinxSetupWizardWindow window = new();
window.DataContext = setupWizard = new RyujinxSetupWizard(window.WizardPresenter, mwvm, () => window.DataContext = setupWizard = new RyujinxSetupWizard(window);
{
NotificationHelper.SetNotificationManager(RyujinxApp.MainWindow);
window.Close();
IsUsingSetupWizard = false;
});
window.Height = 600; window.Height = 600;
window.Width = 750; window.Width = 750;
NotificationHelper.SetNotificationManager(window);
return window; return window;
} }
@ -82,4 +86,3 @@ namespace Ryujinx.Ava.UI.SetupWizard
} }
} }
} }

View file

@ -146,11 +146,7 @@ namespace Ryujinx.Ava.UI.Windows
if (Program.IsFirstStart && RyujinxSetupWizardWindow.CanShowSetupWizard) if (Program.IsFirstStart && RyujinxSetupWizardWindow.CanShowSetupWizard)
{ {
Task windowTask = ShowAsync( await RyujinxSetupWizardWindow.ShowAsync(this);
RyujinxSetupWizardWindow.CreateWindow(ViewModel, out BaseSetupWizard wiz),
this);
_ = wiz.Start();
await windowTask;
} }
}); });