diff --git a/src/Ryujinx/DiscordIntegrationModule.cs b/src/Ryujinx/DiscordIntegrationModule.cs
index e71b49408..20b296511 100644
--- a/src/Ryujinx/DiscordIntegrationModule.cs
+++ b/src/Ryujinx/DiscordIntegrationModule.cs
@@ -117,17 +117,6 @@ namespace Ryujinx.Ava
_currentApp = appMeta;
}
- private static bool UpdatePlayingState()
- {
- if (_discordClient is null) return false;
- if (_discordClient.CurrentPresence.Details.Equals(_discordPresencePlaying.Details))
- return false;
-
- _discordClient?.SetPresence(_discordPresencePlaying);
-
- return true;
- }
-
private static void SwitchToMainState()
{
_discordClient?.SetPresence(_discordPresenceMain);
@@ -141,14 +130,20 @@ namespace Ryujinx.Ava
if (!TitleIDs.CurrentApplication.Value.HasValue) return;
if (_discordPresencePlaying is null) return;
- PlayReport.Analyzer.FormatPlayReportValue(TitleIDs.CurrentApplication.Value, _currentApp, playReport)
- .Match(out bool handled,
- () => _discordPresencePlaying.Details = $"Playing {_currentApp.Title}",
- formattedString => _discordPresencePlaying.Details = formattedString
- );
+ PlayReportAnalyzer.FormattedValue formattedValue =
+ PlayReport.Analyzer.Format(TitleIDs.CurrentApplication.Value, _currentApp, playReport);
- if (handled && UpdatePlayingState())
- Logger.Info?.Print(LogClass.UI, "Updated Discord RPC based on a supported play report.");
+ if (!formattedValue.Handled) return;
+
+ _discordPresencePlaying.Details = formattedValue.Reset
+ ? $"Playing {_currentApp.Title}"
+ : formattedValue.FormattedString;
+
+ if (_discordClient.CurrentPresence.Details.Equals(_discordPresencePlaying.Details))
+ return; //don't trigger an update if the set presence Details are identical to current
+
+ _discordClient.SetPresence(_discordPresencePlaying);
+ Logger.Info?.Print(LogClass.UI, "Updated Discord RPC based on a supported play report.");
}
private static string TruncateToByteLength(string input)
diff --git a/src/Ryujinx/Utilities/PlayReportAnalyzer.cs b/src/Ryujinx/Utilities/PlayReportAnalyzer.cs
index e22969bb9..47c36a396 100644
--- a/src/Ryujinx/Utilities/PlayReportAnalyzer.cs
+++ b/src/Ryujinx/Utilities/PlayReportAnalyzer.cs
@@ -86,7 +86,7 @@ namespace Ryujinx.Ava.Utilities
/// The Application metadata information, including localized game name and play time information.
/// The Play Report received from HLE.
/// A struct representing a possible formatted value.
- public FormattedValue FormatPlayReportValue(
+ public FormattedValue Format(
string runningGameId,
ApplicationMetadata appMeta,
MessagePackObject playReport
@@ -132,23 +132,6 @@ namespace Ryujinx.Ava.Utilities
///
public string FormattedString { get; private init; }
- public void Match(out bool wasHandled, Action onReset, Action onSuccess)
- {
- if (!Handled)
- {
- wasHandled = false;
- return;
- }
-
- if (Reset)
- onReset();
- else
- onSuccess(FormattedString);
-
- wasHandled = true;
- }
-
-
///
/// The intended path of execution for having a string to return: simply return the string.
/// This implicit conversion will make the struct for you.