aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Ui.Common/App/ApplicationLibrary.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Ui.Common/App/ApplicationLibrary.cs')
-rw-r--r--src/Ryujinx.Ui.Common/App/ApplicationLibrary.cs23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/Ryujinx.Ui.Common/App/ApplicationLibrary.cs b/src/Ryujinx.Ui.Common/App/ApplicationLibrary.cs
index b7b57f1a..0407036a 100644
--- a/src/Ryujinx.Ui.Common/App/ApplicationLibrary.cs
+++ b/src/Ryujinx.Ui.Common/App/ApplicationLibrary.cs
@@ -414,21 +414,28 @@ namespace Ryujinx.Ui.App.Common
ApplicationMetadata appMetadata = LoadAndSaveMetaData(titleId, appMetadata =>
{
appMetadata.Title = titleName;
- });
- if (appMetadata.LastPlayed != "Never")
- {
- if (!DateTime.TryParse(appMetadata.LastPlayed, out _))
+ if (appMetadata.LastPlayedOld == default || appMetadata.LastPlayed.HasValue)
{
- Logger.Warning?.Print(LogClass.Application, $"Last played datetime \"{appMetadata.LastPlayed}\" is invalid for current system culture, skipping (did current culture change?)");
+ // Don't do the migration if last_played doesn't exist or last_played_utc already has a value.
+ return;
+ }
- appMetadata.LastPlayed = "Never";
+ // Migrate from string-based last_played to DateTime-based last_played_utc.
+ if (DateTime.TryParse(appMetadata.LastPlayedOld, out DateTime lastPlayedOldParsed))
+ {
+ Logger.Info?.Print(LogClass.Application, $"last_played found: \"{appMetadata.LastPlayedOld}\", migrating to last_played_utc");
+ appMetadata.LastPlayed = lastPlayedOldParsed;
+
+ // Migration successful: deleting last_played from the metadata file.
+ appMetadata.LastPlayedOld = default;
}
else
{
- appMetadata.LastPlayed = appMetadata.LastPlayed[..^3];
+ // Migration failed: emitting warning but leaving the unparsable value in the metadata file so the user can fix it.
+ Logger.Warning?.Print(LogClass.Application, $"Last played string \"{appMetadata.LastPlayedOld}\" is invalid for current system culture, skipping (did current culture change?)");
}
- }
+ });
ApplicationData data = new()
{