feat: optimize achievement and debrid request

This commit is contained in:
Zamitto
2025-04-13 07:39:48 -03:00
parent 19613b69cc
commit 8db03bcccf
6 changed files with 16 additions and 12 deletions

View File

@@ -16,6 +16,13 @@ export const getGameAchievementData = async (
if (cachedAchievements && useCachedData) if (cachedAchievements && useCachedData)
return cachedAchievements.achievements; return cachedAchievements.achievements;
if (
cachedAchievements &&
Date.now() < (cachedAchievements.cacheExpiresTimestamp ?? 0)
) {
return cachedAchievements.achievements;
}
const language = await db const language = await db
.get<string, string>(levelKeys.language, { .get<string, string>(levelKeys.language, {
valueEncoding: "utf-8", valueEncoding: "utf-8",
@@ -31,6 +38,7 @@ export const getGameAchievementData = async (
await gameAchievementsSublevel.put(levelKeys.game(shop, objectId), { await gameAchievementsSublevel.put(levelKeys.game(shop, objectId), {
unlockedAchievements: cachedAchievements?.unlockedAchievements ?? [], unlockedAchievements: cachedAchievements?.unlockedAchievements ?? [],
achievements, achievements,
cacheExpiresTimestamp: Date.now() + 1000 * 60 * 10, // 10 minutes
}); });
return achievements; return achievements;

View File

@@ -26,6 +26,7 @@ const saveAchievementsOnLocal = async (
await gameAchievementsSublevel.put(levelKey, { await gameAchievementsSublevel.put(levelKey, {
achievements: gameAchievement?.achievements ?? [], achievements: gameAchievement?.achievements ?? [],
unlockedAchievements: unlockedAchievements, unlockedAchievements: unlockedAchievements,
cacheExpiresTimestamp: gameAchievement?.cacheExpiresTimestamp,
}); });
if (!sendUpdateEvent) return; if (!sendUpdateEvent) return;

View File

@@ -86,7 +86,10 @@ export function GameDetailsContextProvider({
const [showGameOptionsModal, setShowGameOptionsModal] = useState(false); const [showGameOptionsModal, setShowGameOptionsModal] = useState(false);
const { getRepacksForObjectId } = useRepacks(); const { getRepacksForObjectId } = useRepacks();
const repacks = getRepacksForObjectId(objectId);
const repacks = useMemo(() => {
return getRepacksForObjectId(objectId);
}, [getRepacksForObjectId, objectId]);
const { i18n } = useTranslation("game_details"); const { i18n } = useTranslation("game_details");

View File

@@ -10,15 +10,6 @@ export interface HowLongToBeatEntry {
updatedAt: Date; 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"); export const db = new Dexie("Hydra");
db.version(9).stores({ db.version(9).stores({

View File

@@ -122,8 +122,8 @@ export function Sidebar() {
<h3>{t("sign_in_to_see_achievements")}</h3> <h3>{t("sign_in_to_see_achievements")}</h3>
</div> </div>
<ul className="list achievements-placeholder__blur"> <ul className="list achievements-placeholder__blur">
{achievementsPlaceholder.map((achievement, index) => ( {achievementsPlaceholder.map((achievement) => (
<li key={index}> <li key={achievement.name}>
<div className="list__item"> <div className="list__item">
<img <img
className={`list__item-image achievements-placeholder__blur ${ className={`list__item-image achievements-placeholder__blur ${

View File

@@ -67,6 +67,7 @@ export interface Download {
export interface GameAchievement { export interface GameAchievement {
achievements: SteamAchievement[]; achievements: SteamAchievement[];
unlockedAchievements: UnlockedAchievement[]; unlockedAchievements: UnlockedAchievement[];
cacheExpiresTimestamp: number | undefined;
} }
export interface UserPreferences { export interface UserPreferences {