From cf818d0f4f253c0fe6904279bba2b54e5c5dd257 Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Thu, 8 May 2025 09:19:12 -0300 Subject: [PATCH] feat: get game assets from stats --- .../game-details/game-details.context.tsx | 17 ++++++++++------- .../pages/game-details/game-details-content.tsx | 7 ++++--- src/types/index.ts | 1 + 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/renderer/src/context/game-details/game-details.context.tsx b/src/renderer/src/context/game-details/game-details.context.tsx index a317f8d3..b3c87871 100644 --- a/src/renderer/src/context/game-details/game-details.context.tsx +++ b/src/renderer/src/context/game-details/game-details.context.tsx @@ -120,7 +120,7 @@ export function GameDetailsContextProvider({ const abortController = new AbortController(); abortControllerRef.current = abortController; - window.electron + const shopDetailsPromise = window.electron .getGameShopDetails(objectId, shop, getSteamLanguage(i18n.language)) .then((result) => { if (abortController.signal.aborted) return; @@ -135,15 +135,18 @@ export function GameDetailsContextProvider({ ) { setHasNSFWContentBlocked(true); } - }) - .finally(() => { - if (abortController.signal.aborted) return; - setIsLoading(false); }); - window.electron.getGameStats(objectId, shop).then((result) => { + const statsPromise = window.electron + .getGameStats(objectId, shop) + .then((result) => { + if (abortController.signal.aborted) return; + setStats(result); + }); + + Promise.all([shopDetailsPromise, statsPromise]).finally(() => { if (abortController.signal.aborted) return; - setStats(result); + setIsLoading(false); }); if (userDetails) { diff --git a/src/renderer/src/pages/game-details/game-details-content.tsx b/src/renderer/src/pages/game-details/game-details-content.tsx index e1703434..836bb35d 100644 --- a/src/renderer/src/pages/game-details/game-details-content.tsx +++ b/src/renderer/src/pages/game-details/game-details-content.tsx @@ -24,6 +24,7 @@ export function GameDetailsContent() { const { objectId, shopDetails, + stats, game, gameColor, setGameColor, @@ -59,7 +60,7 @@ export function GameDetailsContent() { const [backdropOpacity, setBackdropOpacity] = useState(1); const handleHeroLoad = async () => { - const output = await average(shopDetails?.libraryHeroImageUrl ?? "", { + const output = await average(stats?.assets?.libraryHeroImageUrl ?? "", { amount: 1, format: "hex", }); @@ -100,7 +101,7 @@ export function GameDetailsContent() {
{game?.title}
{game?.title} diff --git a/src/types/index.ts b/src/types/index.ts index a26928af..f4f6a294 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -240,6 +240,7 @@ export interface DownloadSourceValidationResult { export interface GameStats { downloadCount: number; playerCount: number; + assets: ShopAssets | null; } export interface TrendingGame extends ShopAssets {