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] 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 =