diff --git a/source/GameActivity.cs b/source/GameActivity.cs index e2bdd9b..32b7d3e 100644 --- a/source/GameActivity.cs +++ b/source/GameActivity.cs @@ -625,7 +625,7 @@ private async void OnTimedBackupEvent(object source, ElapsedEventArgs e, Guid Id runningActivity.activityBackup.ElapsedSeconds = ElapsedSeconds; runningActivity.activityBackup.ItemsDetailsDatas = runningActivity.GameActivitiesLog.ItemsDetails.Get(runningActivity.activityBackup.DateSession); - string PathFileBackup = Path.Combine(PluginDatabase.Paths.PluginUserDataPath, "SaveSession.json"); + string PathFileBackup = Path.Combine(PluginDatabase.Paths.PluginUserDataPath, $"SaveSession_{Id}.json"); FileSystem.WriteStringToFileSafe(PathFileBackup, Serialization.ToJson(runningActivity.activityBackup)); } catch (Exception ex) @@ -1153,7 +1153,7 @@ public override void OnGameStopped(OnGameStoppedEventArgs args) }); // Delete backup - string PathFileBackup = Path.Combine(PluginDatabase.Paths.PluginUserDataPath, "SaveSession.json"); + string PathFileBackup = Path.Combine(PluginDatabase.Paths.PluginUserDataPath, $"SaveSession_{args.Game.Id}.json"); FileSystem.DeleteFile(PathFileBackup); } @@ -1253,32 +1253,34 @@ public override void OnApplicationStarted(OnApplicationStartedEventArgs args) // Check backup try { - string PathFileBackup = Path.Combine(PluginDatabase.Paths.PluginUserDataPath, "SaveSession.json"); - if (File.Exists(PathFileBackup)) + Parallel.ForEach(Directory.EnumerateFiles(PluginDatabase.Paths.PluginUserDataPath, "SaveSession_*.json"), (objectFile) => { - Serialization.TryFromJsonFile(PathFileBackup, out ActivityBackup backupData); + Serialization.TryFromJsonFile(objectFile, out ActivityBackup backupData); if (backupData != null) { - PlayniteApi.Notifications.Add(new NotificationMessage( - $"{PluginDatabase.PluginName}-backup", - PluginDatabase.PluginName + System.Environment.NewLine + string.Format(resources.GetString("LOCGaBackupExist"), backupData.Name), - NotificationType.Info, - () => - { - WindowOptions windowOptions = new WindowOptions + Application.Current.Dispatcher.BeginInvoke((Action)delegate + { + PlayniteApi.Notifications.Add(new NotificationMessage( + $"{PluginDatabase.PluginName}-backup-{Path.GetFileNameWithoutExtension(objectFile)}", + PluginDatabase.PluginName + System.Environment.NewLine + string.Format(resources.GetString("LOCGaBackupExist"), backupData.Name), + NotificationType.Info, + () => { - ShowMinimizeButton = false, - ShowMaximizeButton = false, - ShowCloseButton = true, - }; - - GameActivityBackup ViewExtension = new GameActivityBackup(backupData); - Window windowExtension = PlayniteUiHelper.CreateExtensionWindow(PlayniteApi, resources.GetString("LOCGaBackupDataInfo"), ViewExtension, windowOptions); - windowExtension.ShowDialog(); - } - )); + WindowOptions windowOptions = new WindowOptions + { + ShowMinimizeButton = false, + ShowMaximizeButton = false, + ShowCloseButton = true, + }; + + GameActivityBackup ViewExtension = new GameActivityBackup(backupData); + Window windowExtension = PlayniteUiHelper.CreateExtensionWindow(PlayniteApi, resources.GetString("LOCGaBackupDataInfo"), ViewExtension, windowOptions); + windowExtension.ShowDialog(); + } + )); + }); } - } + }); } catch (Exception ex) { diff --git a/source/Views/GameActivityBackup.xaml.cs b/source/Views/GameActivityBackup.xaml.cs index da78a69..749a62f 100644 --- a/source/Views/GameActivityBackup.xaml.cs +++ b/source/Views/GameActivityBackup.xaml.cs @@ -21,11 +21,13 @@ public partial class GameActivityBackup : UserControl private ViewDataContext ViewDataContext = new ViewDataContext(); private ActivityBackup activityBackup; + private Guid Id { get; set; } public GameActivityBackup(ActivityBackup activityBackup) { this.activityBackup = activityBackup; Game game = PluginDatabase.PlayniteApi.Database.Games.Get(activityBackup.Id); + this.Id = game.Id; InitializeComponent(); this.DataContext = ViewDataContext; @@ -71,7 +73,7 @@ private void PART_BtAdd_Click(object sender, RoutedEventArgs e) PluginDatabase.Update(pluginData); - string PathFileBackup = Path.Combine(PluginDatabase.Paths.PluginUserDataPath, "SaveSession.json"); + string PathFileBackup = Path.Combine(PluginDatabase.Paths.PluginUserDataPath, $"SaveSession_{this.Id}.json"); FileSystem.DeleteFile(PathFileBackup); } catch (Exception ex) @@ -86,7 +88,7 @@ private void PART_BtRemove_Click(object sender, RoutedEventArgs e) { try { - string PathFileBackup = Path.Combine(PluginDatabase.Paths.PluginUserDataPath, "SaveSession.json"); + string PathFileBackup = Path.Combine(PluginDatabase.Paths.PluginUserDataPath, $"SaveSession_{this.Id}.json"); FileSystem.DeleteFile(PathFileBackup); } catch (Exception ex)