mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-01-19 01:03:57 +00:00
feat: optimize achievement and debrid request
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|
||||||
|
|||||||
@@ -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({
|
||||||
|
|||||||
@@ -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 ${
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user