소스 검색

UI: Prevent desynced RPC when toggling it off/on while in-game

Evan Husted 1 년 전
부모
커밋
abfbc6f4bc
1개의 변경된 파일14개의 추가작업 그리고 1개의 파일을 삭제
  1. 14 1
      src/Ryujinx/DiscordIntegrationModule.cs

+ 14 - 1
src/Ryujinx/DiscordIntegrationModule.cs

@@ -1,4 +1,5 @@
 using DiscordRPC;
+using Gommon;
 using Humanizer;
 using Humanizer.Localisation;
 using Ryujinx.Ava.Utilities.AppLibrary;
@@ -75,11 +76,23 @@ namespace Ryujinx.Ava
                     _discordClient = new DiscordRpcClient(ApplicationId);
 
                     _discordClient.Initialize();
-                    _discordClient.SetPresence(_discordPresenceMain);
+
+                    Use(TitleIDs.CurrentApplication);
                 }
             }
         }
 
+        public static void Use(Optional<string> titleId)
+        {
+            if (titleId.TryGet(out string tid))
+                SwitchToPlayingState(
+                    ApplicationLibrary.LoadAndSaveMetaData(tid), 
+                    Switch.Shared.Processes.ActiveApplication
+                );
+            else 
+                SwitchToMainState();
+        }
+
         private static void SwitchToPlayingState(ApplicationMetadata appMeta, ProcessResult procRes)
         {
             _discordClient?.SetPresence(new RichPresence