Updated LoadAndSaveMetadata to return Optional type (but for real this time)

- fixed a typo i found
- awaiting dialog on invalid unpacked error
-
This commit is contained in:
Shyanne 2025-12-30 17:06:21 -05:00
parent 34190c9184
commit 2274a32813
6 changed files with 17 additions and 10 deletions

View file

@ -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"]; string[] fileNames = ["prod.keys", "title.keys", "console.keys", "dev.keys"];
foreach (string file in fileNames) foreach (string file in fileNames)

View file

@ -803,7 +803,7 @@ namespace Ryujinx.Ava.Systems
if (!Device.LoadCart(ApplicationPath, romFsFiles[0])) if (!Device.LoadCart(ApplicationPath, romFsFiles[0]))
{ {
ContentDialogHelper.CreateErrorDialog( await ContentDialogHelper.CreateErrorDialog(
"Please specify an unpacked game directory with a valid exefs or NSO/NRO."); "Please specify an unpacked game directory with a valid exefs or NSO/NRO.");
Device.Dispose(); Device.Dispose();
@ -816,7 +816,7 @@ namespace Ryujinx.Ava.Systems
Logger.Info?.Print(LogClass.Application, "Loading as cart WITHOUT RomFS."); Logger.Info?.Print(LogClass.Application, "Loading as cart WITHOUT RomFS.");
if (!Device.LoadCart(ApplicationPath)) if (!Device.LoadCart(ApplicationPath))
{ {
ContentDialogHelper.CreateErrorDialog( await ContentDialogHelper.CreateErrorDialog(
"Please specify an unpacked game directory with a valid exefs or NSO/NRO."); "Please specify an unpacked game directory with a valid exefs or NSO/NRO.");
Device.Dispose(); Device.Dispose();
cts.Cancel(); cts.Cancel();

View file

@ -849,7 +849,8 @@ namespace Ryujinx.Ava.Systems.AppLibrary
foreach (ApplicationData installedApplication in Applications.Items) foreach (ApplicationData installedApplication in Applications.Items)
{ {
temporary += LoadAndSaveMetaData(installedApplication.IdString).TimePlayed; // this should always exist... should...
temporary += LoadAndSaveMetaData(installedApplication.IdString).Value.TimePlayed;
} }
TotalTimePlayed = temporary; TotalTimePlayed = temporary;
@ -1159,9 +1160,8 @@ namespace Ryujinx.Ava.Systems.AppLibrary
ApplicationCountUpdated?.Invoke(null, e); ApplicationCountUpdated?.Invoke(null, e);
} }
public static ApplicationMetadata? LoadAndSaveMetaData(string titleId, Action<ApplicationMetadata> modifyFunction = null) public static Gommon.Optional<ApplicationMetadata> LoadAndSaveMetaData(string titleId, Action<ApplicationMetadata> modifyFunction = null)
{ {
if (titleId is null) if (titleId is null)
{ {
Logger.Warning?.PrintMsg(LogClass.Application, "Cannot save metadata because title ID is invalid."); Logger.Warning?.PrintMsg(LogClass.Application, "Cannot save metadata because title ID is invalid.");

View file

@ -82,7 +82,7 @@ namespace Ryujinx.Ava.Systems
public static void Use(Optional<string> titleId) public static void Use(Optional<string> titleId)
{ {
if (titleId.TryGet(out string tid)) if (titleId.TryGet(out string tid) && Switch.Shared.Processes.ActiveApplication is not null)
SwitchToPlayingState( SwitchToPlayingState(
ApplicationLibrary.LoadAndSaveMetaData(tid), ApplicationLibrary.LoadAndSaveMetaData(tid),
Switch.Shared.Processes.ActiveApplication Switch.Shared.Processes.ActiveApplication

View file

@ -57,8 +57,15 @@ namespace Ryujinx.Ava.UI.Models
} }
else else
{ {
ApplicationMetadata appMetadata = ApplicationLibrary.LoadAndSaveMetaData(TitleIdString); Gommon.Optional<ApplicationMetadata> appMetadata = ApplicationLibrary.LoadAndSaveMetaData(TitleIdString);
Title = appMetadata.Title ?? TitleIdString; if (appMetadata != null)
{
Title = appMetadata.Value.Title ?? TitleIdString;
}
else
{
Title = "<INVALID>";
}
} }
Task.Run(() => Task.Run(() =>

View file

@ -1029,7 +1029,7 @@ namespace Ryujinx.Ava.UI.ViewModels
string dialogMessage = string dialogMessage =
LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogKeysInstallerKeysInstallMessage); LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogKeysInstallerKeysInstallMessage);
if (ContentManager.AreKeysAlredyPresent(systemDirectory)) if (ContentManager.AreKeysAlreadyPresent(systemDirectory))
{ {
dialogMessage += dialogMessage +=
LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys