diff --git a/Bloxstrap/Integrations/DiscordRichPresence.cs b/Bloxstrap/Integrations/DiscordRichPresence.cs index 6721f67d..306058ee 100644 --- a/Bloxstrap/Integrations/DiscordRichPresence.cs +++ b/Bloxstrap/Integrations/DiscordRichPresence.cs @@ -6,10 +6,10 @@ public class DiscordRichPresence : IDisposable { private readonly DiscordRpcClient _rpcClient = new("1005469189907173486"); private readonly ActivityWatcher _activityWatcher; - + private readonly Queue _messageQueue = new(); + private DiscordRPC.RichPresence? _currentPresence; - private DiscordRPC.RichPresence? _currentPresenceCopy; - private Queue _messageQueue = new(); + private DiscordRPC.RichPresence? _originalPresence; private bool _visible = true; @@ -52,7 +52,7 @@ public void ProcessRPCMessage(Message message, bool implicitUpdate = true) if (message.Command != "SetRichPresence" && message.Command != "SetLaunchData") return; - if (_currentPresence is null || _currentPresenceCopy is null) + if (_currentPresence is null || _originalPresence is null) { App.Logger.WriteLine(LOG_IDENT, "Presence is not set, enqueuing message"); _messageQueue.Enqueue(message); @@ -63,12 +63,7 @@ public void ProcessRPCMessage(Message message, bool implicitUpdate = true) if (message.Command == "SetLaunchData") { - var buttonQuery = _currentPresence.Buttons.Where(x => x.Label == "Join server"); - - if (!buttonQuery.Any()) - return; - - buttonQuery.First().Url = _activityWatcher.Data.GetInviteDeeplink(); + _currentPresence.Buttons = GetButtons(); } else if (message.Command == "SetRichPresence") { @@ -95,7 +90,7 @@ public void ProcessRPCMessage(Message message, bool implicitUpdate = true) if (presenceData.Details.Length > 128) App.Logger.WriteLine(LOG_IDENT, $"Details cannot be longer than 128 characters"); else if (presenceData.Details == "") - _currentPresence.Details = _currentPresenceCopy.Details; + _currentPresence.Details = _originalPresence.Details; else _currentPresence.Details = presenceData.Details; } @@ -105,7 +100,7 @@ public void ProcessRPCMessage(Message message, bool implicitUpdate = true) if (presenceData.State.Length > 128) App.Logger.WriteLine(LOG_IDENT, $"State cannot be longer than 128 characters"); else if (presenceData.State == "") - _currentPresence.State = _currentPresenceCopy.State; + _currentPresence.State = _originalPresence.State; else _currentPresence.State = presenceData.State; } @@ -128,8 +123,8 @@ public void ProcessRPCMessage(Message message, bool implicitUpdate = true) } else if (presenceData.SmallImage.Reset) { - _currentPresence.Assets.SmallImageText = _currentPresenceCopy.Assets.SmallImageText; - _currentPresence.Assets.SmallImageKey = _currentPresenceCopy.Assets.SmallImageKey; + _currentPresence.Assets.SmallImageText = _originalPresence.Assets.SmallImageText; + _currentPresence.Assets.SmallImageKey = _originalPresence.Assets.SmallImageKey; } else { @@ -149,8 +144,8 @@ public void ProcessRPCMessage(Message message, bool implicitUpdate = true) } else if (presenceData.LargeImage.Reset) { - _currentPresence.Assets.LargeImageText = _currentPresenceCopy.Assets.LargeImageText; - _currentPresence.Assets.LargeImageKey = _currentPresenceCopy.Assets.LargeImageKey; + _currentPresence.Assets.LargeImageText = _originalPresence.Assets.LargeImageText; + _currentPresence.Assets.LargeImageKey = _originalPresence.Assets.LargeImageKey; } else { @@ -187,7 +182,7 @@ public async Task SetCurrentGame() { App.Logger.WriteLine(LOG_IDENT, "Not in game, clearing presence"); - _currentPresence = _currentPresenceCopy = null; + _currentPresence = _originalPresence = null; _messageQueue.Clear(); UpdatePresence(); @@ -223,23 +218,6 @@ public async Task SetCurrentGame() icon = universeDetails.Thumbnail.ImageUrl; - List