From 97b27a17853bb13a62f0988042c99ae7b5e81d0c Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Thu, 16 Oct 2025 11:01:20 -0300 Subject: [PATCH 1/2] fix: handle user not found on user-profile.context --- .../user-profile/user-profile.context.tsx | 30 ++++++++----------- yarn.lock | 4 +-- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/renderer/src/context/user-profile/user-profile.context.tsx b/src/renderer/src/context/user-profile/user-profile.context.tsx index cb656be2..87e2a669 100644 --- a/src/renderer/src/context/user-profile/user-profile.context.tsx +++ b/src/renderer/src/context/user-profile/user-profile.context.tsx @@ -66,10 +66,7 @@ export function UserProfileContextProvider({ const isMe = userDetails?.id === userProfile?.id; const getHeroBackgroundFromImageUrl = async (imageUrl: string) => { - const output = await average(imageUrl, { - amount: 1, - format: "hex", - }); + const output = await average(imageUrl, { amount: 1, format: "hex" }); return `linear-gradient(135deg, ${darkenColor(output as string, 0.5)}, ${darkenColor(output as string, 0.6, 0.5)})`; }; @@ -135,28 +132,25 @@ export function UserProfileContextProvider({ getUserLibraryGames(); return window.electron.hydraApi - .get(`/users/${userId}`) + .get(`/users/${userId}`) .then((userProfile) => { - if (userProfile) { - setUserProfile(userProfile); + setUserProfile(userProfile); - if (userProfile.profileImageUrl) { - getHeroBackgroundFromImageUrl(userProfile.profileImageUrl).then( - (color) => setHeroBackground(color) - ); - } - } else { - showErrorToast(t("user_not_found")); - navigate(-1); + if (userProfile.profileImageUrl) { + getHeroBackgroundFromImageUrl(userProfile.profileImageUrl).then( + (color) => setHeroBackground(color) + ); } + }) + .catch(() => { + showErrorToast(t("user_not_found")); + navigate(-1); }); }, [navigate, getUserStats, getUserLibraryGames, showErrorToast, userId, t]); const getBadges = useCallback(async () => { const language = i18n.language.split("-")[0]; - const params = new URLSearchParams({ - locale: language, - }); + const params = new URLSearchParams({ locale: language }); const badges = await window.electron.hydraApi.get( `/badges?${params.toString()}`, diff --git a/yarn.lock b/yarn.lock index ebd10beb..0337a77b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1047,9 +1047,9 @@ optionalDependencies: global-agent "^3.0.0" -"@electron/node-gyp@git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2": +"@electron/node-gyp@https://github.com/electron/node-gyp#06b29aafb7708acef8b3669835c8a7857ebc92d2": version "10.2.0-electron.1" - resolved "git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2" + resolved "https://github.com/electron/node-gyp#06b29aafb7708acef8b3669835c8a7857ebc92d2" dependencies: env-paths "^2.2.0" exponential-backoff "^3.1.1" From 0575e837c8f01d095fad323111623e540b41a179 Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Mon, 20 Oct 2025 08:24:04 -0300 Subject: [PATCH 2/2] fix: game achievement cache --- .../achievements/get-game-achievement-data.ts | 22 +++++++++---------- .../achievements/merge-achievements.ts | 1 + src/types/level.types.ts | 1 + 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/services/achievements/get-game-achievement-data.ts b/src/main/services/achievements/get-game-achievement-data.ts index 72b49bc5..ffbfac1a 100644 --- a/src/main/services/achievements/get-game-achievement-data.ts +++ b/src/main/services/achievements/get-game-achievement-data.ts @@ -5,15 +5,18 @@ import { logger } from "../logger"; import { db, gameAchievementsSublevel, levelKeys } from "@main/level"; import { AxiosError } from "axios"; -const LOCAL_CACHE_EXPIRATION = 1000 * 60 * 60; // 1 hour - const getModifiedSinceHeader = ( - cachedAchievements: GameAchievement | undefined + cachedAchievements: GameAchievement | undefined, + userLanguage: string ): Date | undefined => { if (!cachedAchievements) { return undefined; } + if (userLanguage != cachedAchievements.language) { + return undefined; + } + return cachedAchievements.updatedAt ? new Date(cachedAchievements.updatedAt) : undefined; @@ -28,13 +31,7 @@ export const getGameAchievementData = async ( const cachedAchievements = await gameAchievementsSublevel.get(gameKey); - if (cachedAchievements?.achievements && useCachedData) - return cachedAchievements.achievements; - - if ( - cachedAchievements?.achievements && - Date.now() < (cachedAchievements.updatedAt ?? 0) + LOCAL_CACHE_EXPIRATION - ) { + if (cachedAchievements?.achievements && useCachedData) { return cachedAchievements.achievements; } @@ -50,14 +47,15 @@ export const getGameAchievementData = async ( language, }, { - ifModifiedSince: getModifiedSinceHeader(cachedAchievements), + ifModifiedSince: getModifiedSinceHeader(cachedAchievements, language), } ) .then(async (achievements) => { await gameAchievementsSublevel.put(gameKey, { unlockedAchievements: cachedAchievements?.unlockedAchievements ?? [], achievements, - updatedAt: Date.now() + LOCAL_CACHE_EXPIRATION, + updatedAt: Date.now(), + language, }); return achievements; diff --git a/src/main/services/achievements/merge-achievements.ts b/src/main/services/achievements/merge-achievements.ts index f2ea03ac..804f5933 100644 --- a/src/main/services/achievements/merge-achievements.ts +++ b/src/main/services/achievements/merge-achievements.ts @@ -37,6 +37,7 @@ const saveAchievementsOnLocal = async ( achievements: gameAchievement?.achievements ?? [], unlockedAchievements: unlockedAchievements, updatedAt: gameAchievement?.updatedAt, + language: gameAchievement?.language, }); if (!sendUpdateEvent) return; diff --git a/src/types/level.types.ts b/src/types/level.types.ts index 053bd218..ee2b2918 100644 --- a/src/types/level.types.ts +++ b/src/types/level.types.ts @@ -83,6 +83,7 @@ export interface GameAchievement { achievements: SteamAchievement[]; unlockedAchievements: UnlockedAchievement[]; updatedAt: number | undefined; + language: string | undefined; } export type AchievementCustomNotificationPosition =