From 2274a32813d71c119c148e3947ed54f9959bfba1 Mon Sep 17 00:00:00 2001 From: Shyanne Date: Tue, 30 Dec 2025 17:06:21 -0500 Subject: [PATCH] Updated LoadAndSaveMetadata to return Optional type (but for real this time) - fixed a typo i found - awaiting dialog on invalid unpacked error - --- src/Ryujinx.HLE/FileSystem/ContentManager.cs | 2 +- src/Ryujinx/Systems/AppHost.cs | 4 ++-- src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs | 6 +++--- src/Ryujinx/Systems/DiscordIntegrationModule.cs | 2 +- src/Ryujinx/UI/Models/SaveModel.cs | 11 +++++++++-- src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs | 2 +- 6 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/Ryujinx.HLE/FileSystem/ContentManager.cs b/src/Ryujinx.HLE/FileSystem/ContentManager.cs index d0fe0f1a7..6df359c56 100644 --- a/src/Ryujinx.HLE/FileSystem/ContentManager.cs +++ b/src/Ryujinx.HLE/FileSystem/ContentManager.cs @@ -1059,7 +1059,7 @@ namespace Ryujinx.HLE.FileSystem } } - public static bool AreKeysAlredyPresent(string pathToCheck) + public static bool AreKeysAlreadyPresent(string pathToCheck) { string[] fileNames = ["prod.keys", "title.keys", "console.keys", "dev.keys"]; foreach (string file in fileNames) diff --git a/src/Ryujinx/Systems/AppHost.cs b/src/Ryujinx/Systems/AppHost.cs index 693e40a0b..5779d261a 100644 --- a/src/Ryujinx/Systems/AppHost.cs +++ b/src/Ryujinx/Systems/AppHost.cs @@ -803,7 +803,7 @@ namespace Ryujinx.Ava.Systems if (!Device.LoadCart(ApplicationPath, romFsFiles[0])) { - ContentDialogHelper.CreateErrorDialog( + await ContentDialogHelper.CreateErrorDialog( "Please specify an unpacked game directory with a valid exefs or NSO/NRO."); Device.Dispose(); @@ -816,7 +816,7 @@ namespace Ryujinx.Ava.Systems Logger.Info?.Print(LogClass.Application, "Loading as cart WITHOUT RomFS."); if (!Device.LoadCart(ApplicationPath)) { - ContentDialogHelper.CreateErrorDialog( + await ContentDialogHelper.CreateErrorDialog( "Please specify an unpacked game directory with a valid exefs or NSO/NRO."); Device.Dispose(); cts.Cancel(); diff --git a/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs b/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs index a39a8b5cc..6513738cb 100644 --- a/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs +++ b/src/Ryujinx/Systems/AppLibrary/ApplicationLibrary.cs @@ -849,7 +849,8 @@ namespace Ryujinx.Ava.Systems.AppLibrary foreach (ApplicationData installedApplication in Applications.Items) { - temporary += LoadAndSaveMetaData(installedApplication.IdString).TimePlayed; + // this should always exist... should... + temporary += LoadAndSaveMetaData(installedApplication.IdString).Value.TimePlayed; } TotalTimePlayed = temporary; @@ -1159,9 +1160,8 @@ namespace Ryujinx.Ava.Systems.AppLibrary ApplicationCountUpdated?.Invoke(null, e); } - public static ApplicationMetadata? LoadAndSaveMetaData(string titleId, Action modifyFunction = null) + public static Gommon.Optional LoadAndSaveMetaData(string titleId, Action modifyFunction = null) { - if (titleId is null) { Logger.Warning?.PrintMsg(LogClass.Application, "Cannot save metadata because title ID is invalid."); diff --git a/src/Ryujinx/Systems/DiscordIntegrationModule.cs b/src/Ryujinx/Systems/DiscordIntegrationModule.cs index 5b61340b6..da6371682 100644 --- a/src/Ryujinx/Systems/DiscordIntegrationModule.cs +++ b/src/Ryujinx/Systems/DiscordIntegrationModule.cs @@ -82,7 +82,7 @@ namespace Ryujinx.Ava.Systems public static void Use(Optional titleId) { - if (titleId.TryGet(out string tid)) + if (titleId.TryGet(out string tid) && Switch.Shared.Processes.ActiveApplication is not null) SwitchToPlayingState( ApplicationLibrary.LoadAndSaveMetaData(tid), Switch.Shared.Processes.ActiveApplication diff --git a/src/Ryujinx/UI/Models/SaveModel.cs b/src/Ryujinx/UI/Models/SaveModel.cs index d245ed4d9..bd9c93f5d 100644 --- a/src/Ryujinx/UI/Models/SaveModel.cs +++ b/src/Ryujinx/UI/Models/SaveModel.cs @@ -57,8 +57,15 @@ namespace Ryujinx.Ava.UI.Models } else { - ApplicationMetadata appMetadata = ApplicationLibrary.LoadAndSaveMetaData(TitleIdString); - Title = appMetadata.Title ?? TitleIdString; + Gommon.Optional appMetadata = ApplicationLibrary.LoadAndSaveMetaData(TitleIdString); + if (appMetadata != null) + { + Title = appMetadata.Value.Title ?? TitleIdString; + } + else + { + Title = ""; + } } Task.Run(() => diff --git a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs index d720568b7..568688bc4 100644 --- a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs @@ -1029,7 +1029,7 @@ namespace Ryujinx.Ava.UI.ViewModels string dialogMessage = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogKeysInstallerKeysInstallMessage); - if (ContentManager.AreKeysAlredyPresent(systemDirectory)) + if (ContentManager.AreKeysAlreadyPresent(systemDirectory)) { dialogMessage += LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys