diff --git a/osu.Desktop/DiscordRichPresence.cs b/osu.Desktop/DiscordRichPresence.cs
index c08185ddbe..32a8ba51a3 100644
--- a/osu.Desktop/DiscordRichPresence.cs
+++ b/osu.Desktop/DiscordRichPresence.cs
@@ -175,7 +175,7 @@ private void updatePresence(bool hideIdentifiableInformation)
presence.State = clampLength(activity.Value.GetStatus(hideIdentifiableInformation));
presence.Details = clampLength(activity.Value.GetDetails(hideIdentifiableInformation) ?? string.Empty);
- if (getBeatmapID(activity.Value) is int beatmapId && beatmapId > 0)
+ if (activity.Value.GetBeatmapID(hideIdentifiableInformation) is int beatmapId && beatmapId > 0)
{
presence.Buttons = new[]
{
@@ -333,20 +333,6 @@ private static bool tryParseRoomSecret(string secretJson, out long roomId, out s
return true;
}
- private static int? getBeatmapID(UserActivity activity)
- {
- switch (activity)
- {
- case UserActivity.InGame game:
- return game.BeatmapID;
-
- case UserActivity.EditingBeatmap edit:
- return edit.BeatmapID;
- }
-
- return null;
- }
-
protected override void Dispose(bool isDisposing)
{
if (multiplayerClient.IsNotNull())
diff --git a/osu.Game/Users/UserActivity.cs b/osu.Game/Users/UserActivity.cs
index 93812e3f6b..a8e0fc9030 100644
--- a/osu.Game/Users/UserActivity.cs
+++ b/osu.Game/Users/UserActivity.cs
@@ -41,6 +41,12 @@ public abstract class UserActivity
public virtual Color4 GetAppropriateColour(OsuColour colours) => colours.GreenDarker;
+ ///
+ /// Returns the ID of the beatmap involved in this activity, if applicable and/or available.
+ ///
+ ///
+ public virtual int? GetBeatmapID(bool hideIdentifiableInformation = false) => null;
+
[MessagePackObject]
public class ChoosingBeatmap : UserActivity
{
@@ -76,6 +82,7 @@ protected InGame() { }
public override string GetStatus(bool hideIdentifiableInformation = false) => RulesetPlayingVerb;
public override string GetDetails(bool hideIdentifiableInformation = false) => BeatmapDisplayTitle;
+ public override int? GetBeatmapID(bool hideIdentifiableInformation = false) => BeatmapID;
}
[MessagePackObject]
@@ -156,6 +163,11 @@ public override string GetDetails(bool hideIdentifiableInformation = false) => h
// For now let's assume that showing the beatmap a user is editing could reveal unwanted information.
? string.Empty
: BeatmapDisplayTitle;
+
+ public override int? GetBeatmapID(bool hideIdentifiableInformation = false) => hideIdentifiableInformation
+ // For now let's assume that showing the beatmap a user is editing could reveal unwanted information.
+ ? null
+ : BeatmapID;
}
[MessagePackObject]