mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 10:01:27 -07:00
Mitigate rich presence race condition (#411)
This commit is contained in:
parent
cefe7cd22a
commit
61255925e6
@ -25,7 +25,7 @@ namespace Bloxstrap.Integrations
|
|||||||
App.Logger.WriteLine($"[DiscordRichPresence::DiscordRichPresence] Received ready from user {e.User.Username} ({e.User.ID})");
|
App.Logger.WriteLine($"[DiscordRichPresence::DiscordRichPresence] Received ready from user {e.User.Username} ({e.User.ID})");
|
||||||
|
|
||||||
_rpcClient.OnPresenceUpdate += (_, e) =>
|
_rpcClient.OnPresenceUpdate += (_, e) =>
|
||||||
App.Logger.WriteLine("[DiscordRichPresence::DiscordRichPresence] Updated presence");
|
App.Logger.WriteLine("[DiscordRichPresence::DiscordRichPresence] Presence updated");
|
||||||
|
|
||||||
_rpcClient.OnError += (_, e) =>
|
_rpcClient.OnError += (_, e) =>
|
||||||
App.Logger.WriteLine($"[DiscordRichPresence::DiscordRichPresence] An RPC error occurred - {e.Message}");
|
App.Logger.WriteLine($"[DiscordRichPresence::DiscordRichPresence] An RPC error occurred - {e.Message}");
|
||||||
@ -114,10 +114,11 @@ namespace Bloxstrap.Integrations
|
|||||||
}
|
}
|
||||||
|
|
||||||
string icon = "roblox";
|
string icon = "roblox";
|
||||||
|
long placeId = _activityWatcher.ActivityPlaceId;
|
||||||
|
|
||||||
App.Logger.WriteLine($"[DiscordRichPresence::SetCurrentGame] Setting presence for Place ID {_activityWatcher.ActivityPlaceId}");
|
App.Logger.WriteLine($"[DiscordRichPresence::SetCurrentGame] Setting presence for Place ID {placeId}");
|
||||||
|
|
||||||
var universeIdResponse = await Http.GetJson<UniverseIdResponse>($"https://apis.roblox.com/universes/v1/places/{_activityWatcher.ActivityPlaceId}/universe");
|
var universeIdResponse = await Http.GetJson<UniverseIdResponse>($"https://apis.roblox.com/universes/v1/places/{placeId}/universe");
|
||||||
if (universeIdResponse is null)
|
if (universeIdResponse is null)
|
||||||
{
|
{
|
||||||
App.Logger.WriteLine($"[DiscordRichPresence::SetCurrentGame] Could not get Universe ID!");
|
App.Logger.WriteLine($"[DiscordRichPresence::SetCurrentGame] Could not get Universe ID!");
|
||||||
@ -159,7 +160,7 @@ namespace Bloxstrap.Integrations
|
|||||||
new Button
|
new Button
|
||||||
{
|
{
|
||||||
Label = "See Details",
|
Label = "See Details",
|
||||||
Url = $"https://www.roblox.com/games/{_activityWatcher.ActivityPlaceId}"
|
Url = $"https://www.roblox.com/games/{placeId}"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -168,7 +169,7 @@ namespace Bloxstrap.Integrations
|
|||||||
buttons.Insert(0, new Button
|
buttons.Insert(0, new Button
|
||||||
{
|
{
|
||||||
Label = "Join",
|
Label = "Join",
|
||||||
Url = $"roblox://experiences/start?placeId={_activityWatcher.ActivityPlaceId}&gameInstanceId={_activityWatcher.ActivityJobId}"
|
Url = $"roblox://experiences/start?placeId={placeId}&gameInstanceId={_activityWatcher.ActivityJobId}"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,6 +177,12 @@ namespace Bloxstrap.Integrations
|
|||||||
if (universeDetails.Name.Length < 2)
|
if (universeDetails.Name.Length < 2)
|
||||||
universeDetails.Name = $"{universeDetails.Name}\x2800\x2800\x2800";
|
universeDetails.Name = $"{universeDetails.Name}\x2800\x2800\x2800";
|
||||||
|
|
||||||
|
if (!_activityWatcher.ActivityInGame || placeId != _activityWatcher.ActivityPlaceId)
|
||||||
|
{
|
||||||
|
App.Logger.WriteLine($"[DiscordRichPresence::SetCurrentGame] Aborting presence set because game activity has changed");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
_currentPresence = new RichPresence
|
_currentPresence = new RichPresence
|
||||||
{
|
{
|
||||||
Details = universeDetails.Name,
|
Details = universeDetails.Name,
|
||||||
@ -198,8 +205,6 @@ namespace Bloxstrap.Integrations
|
|||||||
|
|
||||||
public void UpdatePresence()
|
public void UpdatePresence()
|
||||||
{
|
{
|
||||||
App.Logger.WriteLine($"[DiscordRichPresence::UpdatePresence] Updating presence");
|
|
||||||
|
|
||||||
if (_currentPresence is null)
|
if (_currentPresence is null)
|
||||||
{
|
{
|
||||||
App.Logger.WriteLine($"[DiscordRichPresence::UpdatePresence] Presence is empty, clearing");
|
App.Logger.WriteLine($"[DiscordRichPresence::UpdatePresence] Presence is empty, clearing");
|
||||||
@ -207,6 +212,8 @@ namespace Bloxstrap.Integrations
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
App.Logger.WriteLine($"[DiscordRichPresence::UpdatePresence] Updating presence");
|
||||||
|
|
||||||
if (_visible)
|
if (_visible)
|
||||||
_rpcClient.SetPresence(_currentPresence);
|
_rpcClient.SetPresence(_currentPresence);
|
||||||
}
|
}
|
||||||
@ -216,6 +223,7 @@ namespace Bloxstrap.Integrations
|
|||||||
App.Logger.WriteLine("[DiscordRichPresence::Dispose] Cleaning up Discord RPC and Presence");
|
App.Logger.WriteLine("[DiscordRichPresence::Dispose] Cleaning up Discord RPC and Presence");
|
||||||
_rpcClient.ClearPresence();
|
_rpcClient.ClearPresence();
|
||||||
_rpcClient.Dispose();
|
_rpcClient.Dispose();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user