diff --git a/src/main/events/catalogue/get-game-stats.ts b/src/main/events/catalogue/get-game-stats.ts index 559d3a7d..b836531d 100644 --- a/src/main/events/catalogue/get-game-stats.ts +++ b/src/main/events/catalogue/get-game-stats.ts @@ -21,11 +21,9 @@ const getGameStats = async ( return cachedStats; } - return HydraApi.get( - `/games/stats`, - { objectId, shop }, - { needsAuth: false } - ).then(async (data) => { + return HydraApi.get(`/games/${shop}/${objectId}/stats`, null, { + needsAuth: false, + }).then(async (data) => { await gamesStatsCacheSublevel.put(levelKeys.game(shop, objectId), { ...data, updatedAt: Date.now(), diff --git a/src/main/events/catalogue/get-how-long-to-beat.ts b/src/main/events/catalogue/get-how-long-to-beat.ts index 2a1492ef..0d630164 100644 --- a/src/main/events/catalogue/get-how-long-to-beat.ts +++ b/src/main/events/catalogue/get-how-long-to-beat.ts @@ -8,12 +8,7 @@ const getHowLongToBeat = async ( objectId: string, shop: GameShop ): Promise => { - const params = new URLSearchParams({ - objectId, - shop, - }); - - return HydraApi.get(`/games/how-long-to-beat?${params.toString()}`, null, { + return HydraApi.get(`/games/${shop}/${objectId}/how-long-to-beat`, null, { needsAuth: false, }); }; diff --git a/src/main/events/catalogue/get-trending-games.ts b/src/main/events/catalogue/get-trending-games.ts index 98b09136..4c587f37 100644 --- a/src/main/events/catalogue/get-trending-games.ts +++ b/src/main/events/catalogue/get-trending-games.ts @@ -11,7 +11,7 @@ const getTrendingGames = async (_event: Electron.IpcMainInvokeEvent) => { .then((language) => language || "en"); const trendingGames = await HydraApi.get( - "/games/featured", + "/catalogue/featured", { language }, { needsAuth: false } ).catch(() => []); diff --git a/src/main/events/library/create-steam-shortcut.ts b/src/main/events/library/create-steam-shortcut.ts index b12d503f..f83dd675 100644 --- a/src/main/events/library/create-steam-shortcut.ts +++ b/src/main/events/library/create-steam-shortcut.ts @@ -87,7 +87,7 @@ const createSteamShortcut = async ( } const { assets } = await HydraApi.get( - `/games/stats?objectId=${objectId}&shop=${shop}` + `/games/${shop}/${objectId}/stats` ); const steamUserIds = await getSteamUsersIds(); diff --git a/src/main/events/torrenting/start-game-download.ts b/src/main/events/torrenting/start-game-download.ts index 8216b519..79d55ec3 100644 --- a/src/main/events/torrenting/start-game-download.ts +++ b/src/main/events/torrenting/start-game-download.ts @@ -93,14 +93,9 @@ const startGameDownload = async ( await Promise.all([ createGame(updatedGame!).catch(() => {}), - HydraApi.post( - "/games/download", - { - objectId, - shop, - }, - { needsAuth: false } - ).catch(() => {}), + HydraApi.post(`/games/${shop}/${objectId}/download`, null, { + needsAuth: false, + }).catch(() => {}), ]); return { ok: true }; diff --git a/src/main/services/achievements/get-game-achievement-data.ts b/src/main/services/achievements/get-game-achievement-data.ts index e2b663d8..72b49bc5 100644 --- a/src/main/services/achievements/get-game-achievement-data.ts +++ b/src/main/services/achievements/get-game-achievement-data.ts @@ -45,10 +45,8 @@ export const getGameAchievementData = async ( .then((language) => language || "en"); return HydraApi.get( - "/games/achievements", + `/games/${shop}/${objectId}/achievements`, { - shop, - objectId, language, }, { diff --git a/src/main/services/ws/events/friend-game-session.ts b/src/main/services/ws/events/friend-game-session.ts index 47d8164e..67967b3c 100644 --- a/src/main/services/ws/events/friend-game-session.ts +++ b/src/main/services/ws/events/friend-game-session.ts @@ -16,9 +16,7 @@ export const friendGameSessionEvent = async (payload: FriendGameSession) => { const [friend, gameStats] = await Promise.all([ HydraApi.get(`/users/${payload.friendId}`), - HydraApi.get( - `/games/stats?objectId=${payload.objectId}&shop=steam` - ), + HydraApi.get(`/games/steam/${payload.objectId}/stats`), ]).catch(() => [null, null]); if (friend && gameStats) { diff --git a/src/renderer/src/pages/game-details/modals/repacks-modal.scss b/src/renderer/src/pages/game-details/modals/repacks-modal.scss index cecadb91..ba9778fd 100644 --- a/src/renderer/src/pages/game-details/modals/repacks-modal.scss +++ b/src/renderer/src/pages/game-details/modals/repacks-modal.scss @@ -2,37 +2,33 @@ .repacks-modal { &__filter-container { - margin-bottom: 1rem; - transition: min-height 0.3s ease; - - &--drawer-open { - min-height: 250px; - } + transition: all 0.3s ease; } &__filter-top { - margin-bottom: 1rem; + margin-bottom: calc(globals.$spacing-unit * 2); display: flex; - flex-direction: column; - gap: 0.5rem; + flex-direction: row; + gap: calc(globals.$spacing-unit * 1); + align-items: center; } &__filter-toggle { - align-self: flex-start; display: flex; align-items: center; - gap: 0.5rem; + gap: calc(globals.$spacing-unit * 1); font-size: globals.$small-font-size; font-weight: 600; color: var(--color-text-secondary); - padding: 0.5rem 0.75rem; + padding: calc(globals.$spacing-unit * 1) calc(globals.$spacing-unit * 1.5); border-radius: 6px; transition: background-color 0.2s ease; + white-space: nowrap; } &__repacks { display: flex; - gap: globals.$spacing-unit; + gap: calc(globals.$spacing-unit * 2); flex-direction: column; } @@ -41,7 +37,7 @@ text-align: left; flex-direction: column; align-items: flex-start; - gap: globals.$spacing-unit; + gap: calc(globals.$spacing-unit * 1); color: globals.$body-color; padding: calc(globals.$spacing-unit * 2); } @@ -91,8 +87,8 @@ padding: 0; background-color: var(--color-background-light); border-radius: 8px; - margin-bottom: 1rem; - margin-top: calc(globals.$spacing-unit * 0.5); + margin-bottom: calc(globals.$spacing-unit * 2); + margin-top: calc(globals.$spacing-unit * 1); max-height: 0; overflow: hidden; transition: @@ -100,8 +96,7 @@ padding 0.3s ease; &--open { - padding: 0.75rem; - max-height: 250px; + max-height: 280px; } } @@ -117,24 +112,30 @@ &__source-grid { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 0.5rem; + gap: calc(globals.$spacing-unit * 1); max-height: 200px; overflow-y: auto; overflow-x: hidden; align-items: start; - padding-right: 0.25rem; + padding: calc(globals.$spacing-unit * 0.5) calc(globals.$spacing-unit * 0.5) + calc(globals.$spacing-unit * 0.5) 0; } &__source-item { - padding: 0.35rem 0.5rem; + padding: calc(globals.$spacing-unit * 0.75) calc(globals.$spacing-unit * 1); background: var(--color-surface, rgba(0, 0, 0, 0.03)); - border: 1px solid var(--color-border); + border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 6px; display: flex; align-items: center; - min-height: auto; + min-height: calc(globals.$spacing-unit * 5); box-sizing: border-box; width: 100%; + transition: border-color 0.2s ease; + + &:hover { + border-color: rgba(255, 255, 255, 0.2); + } } &__source-item :global(.checkbox-field) { diff --git a/src/renderer/src/pages/game-details/modals/repacks-modal.tsx b/src/renderer/src/pages/game-details/modals/repacks-modal.tsx index b2c55d4f..97b8b1b5 100644 --- a/src/renderer/src/pages/game-details/modals/repacks-modal.tsx +++ b/src/renderer/src/pages/game-details/modals/repacks-modal.tsx @@ -181,15 +181,17 @@ export function RepacksModal({ >
- + {downloadSources.length > 0 && ( + + )}