diff --git a/src/main/services/achievements/get-game-achievement-data.ts b/src/main/services/achievements/get-game-achievement-data.ts index 0d0c58f9..e58a97d2 100644 --- a/src/main/services/achievements/get-game-achievement-data.ts +++ b/src/main/services/achievements/get-game-achievement-data.ts @@ -16,6 +16,13 @@ export const getGameAchievementData = async ( if (cachedAchievements && useCachedData) return cachedAchievements.achievements; + if ( + cachedAchievements && + Date.now() < (cachedAchievements.cacheExpiresTimestamp ?? 0) + ) { + return cachedAchievements.achievements; + } + const language = await db .get(levelKeys.language, { valueEncoding: "utf-8", @@ -31,6 +38,7 @@ export const getGameAchievementData = async ( await gameAchievementsSublevel.put(levelKeys.game(shop, objectId), { unlockedAchievements: cachedAchievements?.unlockedAchievements ?? [], achievements, + cacheExpiresTimestamp: Date.now() + 1000 * 60 * 10, // 10 minutes }); return achievements; diff --git a/src/main/services/achievements/merge-achievements.ts b/src/main/services/achievements/merge-achievements.ts index e173af27..59f86422 100644 --- a/src/main/services/achievements/merge-achievements.ts +++ b/src/main/services/achievements/merge-achievements.ts @@ -26,6 +26,7 @@ const saveAchievementsOnLocal = async ( await gameAchievementsSublevel.put(levelKey, { achievements: gameAchievement?.achievements ?? [], unlockedAchievements: unlockedAchievements, + cacheExpiresTimestamp: gameAchievement?.cacheExpiresTimestamp, }); if (!sendUpdateEvent) return; 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 da7fd1e8..fc4033d2 100644 --- a/src/renderer/src/context/game-details/game-details.context.tsx +++ b/src/renderer/src/context/game-details/game-details.context.tsx @@ -86,7 +86,10 @@ export function GameDetailsContextProvider({ const [showGameOptionsModal, setShowGameOptionsModal] = useState(false); const { getRepacksForObjectId } = useRepacks(); - const repacks = getRepacksForObjectId(objectId); + + const repacks = useMemo(() => { + return getRepacksForObjectId(objectId); + }, [getRepacksForObjectId, objectId]); const { i18n } = useTranslation("game_details"); diff --git a/src/renderer/src/dexie.ts b/src/renderer/src/dexie.ts index 8d12cd49..7991dc8a 100644 --- a/src/renderer/src/dexie.ts +++ b/src/renderer/src/dexie.ts @@ -10,15 +10,6 @@ export interface HowLongToBeatEntry { updatedAt: Date; } -export interface CatalogueCache { - id?: number; - category: string; - games: { objectId: string; shop: GameShop }[]; - createdAt: Date; - updatedAt: Date; - expiresAt: Date; -} - export const db = new Dexie("Hydra"); db.version(9).stores({ diff --git a/src/renderer/src/pages/game-details/sidebar/sidebar.tsx b/src/renderer/src/pages/game-details/sidebar/sidebar.tsx index 5073a2e4..f9b52840 100644 --- a/src/renderer/src/pages/game-details/sidebar/sidebar.tsx +++ b/src/renderer/src/pages/game-details/sidebar/sidebar.tsx @@ -122,8 +122,8 @@ export function Sidebar() {

{t("sign_in_to_see_achievements")}