diff --git a/Bloxstrap/App.xaml.cs b/Bloxstrap/App.xaml.cs index 1d589c5..575d188 100644 --- a/Bloxstrap/App.xaml.cs +++ b/Bloxstrap/App.xaml.cs @@ -284,7 +284,7 @@ namespace Bloxstrap var exception = t.Exception.InnerExceptions.Count >= 1 ? t.Exception.InnerExceptions[0] : t.Exception; dialog?.ShowError($"{exception.GetType()}: {exception.Message}"); #endif - }, TaskScheduler.FromCurrentSynchronizationContext()); + }); dialog?.ShowBootstrapper(); bootstrapperTask.Wait(); diff --git a/Bloxstrap/Helpers/Utilities.cs b/Bloxstrap/Helpers/Utilities.cs index 7627449..2d9c285 100644 --- a/Bloxstrap/Helpers/Utilities.cs +++ b/Bloxstrap/Helpers/Utilities.cs @@ -49,7 +49,9 @@ namespace Bloxstrap.Helpers { try { + App.Logger.WriteLine($"[Utilities::GetJson<{typeof(T).Name}>] Getting JSON from {url}!"); string json = await App.HttpClient.GetStringAsync(url); + App.Logger.WriteLine($"[Utilities::GetJson<{typeof(T).Name}>] Got JSON: {json}"); return JsonSerializer.Deserialize(json); } catch (Exception ex) diff --git a/Bloxstrap/Integrations/DiscordRichPresence.cs b/Bloxstrap/Integrations/DiscordRichPresence.cs index 295e647..64a3052 100644 --- a/Bloxstrap/Integrations/DiscordRichPresence.cs +++ b/Bloxstrap/Integrations/DiscordRichPresence.cs @@ -5,9 +5,9 @@ using System.Linq; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; -using Bloxstrap.Helpers; -using Bloxstrap.Models; +using Bloxstrap.Helpers; +using Bloxstrap.Models.RobloxApi; using DiscordRPC; @@ -205,17 +205,40 @@ namespace Bloxstrap.Integrations return true; } - string placeThumbnail = "roblox"; + string icon = "roblox"; - var placeInfo = await Utilities.GetJson($"https://economy.roblox.com/v2/assets/{_activityPlaceId}/details"); + App.Logger.WriteLine($"[DiscordRichPresence::SetPresence] Fetching data for Place ID {_activityPlaceId}"); - if (placeInfo is null || placeInfo.Creator is null) + var universeIdResponse = await Utilities.GetJson($"https://apis.roblox.com/universes/v1/places/{_activityPlaceId}/universe"); + if (universeIdResponse is null) + { + App.Logger.WriteLine($"[DiscordRichPresence::SetPresence] Could not get Universe ID!"); return false; + } - var thumbnailInfo = await Utilities.GetJson($"https://thumbnails.roblox.com/v1/places/gameicons?placeIds={_activityPlaceId}&returnPolicy=PlaceHolder&size=512x512&format=Png&isCircular=false"); + long universeId = universeIdResponse.UniverseId; + App.Logger.WriteLine($"[DiscordRichPresence::SetPresence] Got Universe ID as {universeId}"); - if (thumbnailInfo is not null) - placeThumbnail = thumbnailInfo.Data![0].ImageUrl!; + var gameDetailResponse = await Utilities.GetJson>($"https://games.roblox.com/v1/games?universeIds={universeId}"); + if (gameDetailResponse is null || !gameDetailResponse.Data.Any()) + { + App.Logger.WriteLine($"[DiscordRichPresence::SetPresence] Could not get Universe info!"); + return false; + } + + GameDetailResponse universeDetails = gameDetailResponse.Data.ToArray()[0]; + App.Logger.WriteLine($"[DiscordRichPresence::SetPresence] Got Universe details"); + + var universeThumbnailResponse = await Utilities.GetJson>($"https://thumbnails.roblox.com/v1/games/icons?universeIds={universeId}&returnPolicy=PlaceHolder&size=512x512&format=Png&isCircular=false"); + if (universeThumbnailResponse is null || !universeThumbnailResponse.Data.Any()) + { + App.Logger.WriteLine($"[DiscordRichPresence::SetPresence] Could not get Universe thumbnail info!"); + } + else + { + icon = universeThumbnailResponse.Data.ToArray()[0].ImageUrl; + App.Logger.WriteLine($"[DiscordRichPresence::SetPresence] Got Universe thumbnail as {icon}"); + } List