mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-03-09 15:40:26 +00:00
fix: not saving unlocked achievements correctly
This commit is contained in:
parent
2c282861f4
commit
2ed18996df
5 changed files with 23 additions and 25 deletions
|
@ -5,7 +5,7 @@ import type { Game, GameShop } from "@types";
|
||||||
import { steamGamesWorker } from "@main/workers";
|
import { steamGamesWorker } from "@main/workers";
|
||||||
import { createGame } from "@main/services/library-sync";
|
import { createGame } from "@main/services/library-sync";
|
||||||
import { steamUrlBuilder } from "@shared";
|
import { steamUrlBuilder } from "@shared";
|
||||||
import { updateLocalUnlockedAchivements } from "@main/services/achievements/update-local-unlocked-achivements";
|
import { updateLocalUnlockedAchievements } from "@main/services/achievements/update-local-unlocked-achivements";
|
||||||
import { downloadsSublevel, gamesSublevel, levelKeys } from "@main/level";
|
import { downloadsSublevel, gamesSublevel, levelKeys } from "@main/level";
|
||||||
|
|
||||||
const addGameToLibrary = async (
|
const addGameToLibrary = async (
|
||||||
|
@ -46,9 +46,9 @@ const addGameToLibrary = async (
|
||||||
|
|
||||||
await gamesSublevel.put(levelKeys.game(shop, objectId), game);
|
await gamesSublevel.put(levelKeys.game(shop, objectId), game);
|
||||||
|
|
||||||
updateLocalUnlockedAchivements(game);
|
await createGame(game).catch(() => {});
|
||||||
|
|
||||||
createGame(game).catch(() => {});
|
updateLocalUnlockedAchievements(game);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ export const getUnlockedAchievements = async (
|
||||||
|
|
||||||
return achievementsData
|
return achievementsData
|
||||||
.map((achievementData) => {
|
.map((achievementData) => {
|
||||||
const unlockedAchiementData = unlockedAchievements.find(
|
const unlockedAchievementData = unlockedAchievements.find(
|
||||||
(localAchievement) => {
|
(localAchievement) => {
|
||||||
return (
|
return (
|
||||||
localAchievement.name.toUpperCase() ==
|
localAchievement.name.toUpperCase() ==
|
||||||
|
@ -45,11 +45,11 @@ export const getUnlockedAchievements = async (
|
||||||
? achievementData.icon
|
? achievementData.icon
|
||||||
: achievementData.icongray;
|
: achievementData.icongray;
|
||||||
|
|
||||||
if (unlockedAchiementData) {
|
if (unlockedAchievementData) {
|
||||||
return {
|
return {
|
||||||
...achievementData,
|
...achievementData,
|
||||||
unlocked: true,
|
unlocked: true,
|
||||||
unlockTime: unlockedAchiementData.unlockTime,
|
unlockTime: unlockedAchievementData.unlockTime,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,9 +23,8 @@ const saveAchievementsOnLocal = async (
|
||||||
return gameAchievementsSublevel
|
return gameAchievementsSublevel
|
||||||
.get(levelKey)
|
.get(levelKey)
|
||||||
.then(async (gameAchievement) => {
|
.then(async (gameAchievement) => {
|
||||||
if (gameAchievement) {
|
|
||||||
await gameAchievementsSublevel.put(levelKey, {
|
await gameAchievementsSublevel.put(levelKey, {
|
||||||
...gameAchievement,
|
achievements: gameAchievement?.achievements ?? [],
|
||||||
unlockedAchievements: unlockedAchievements,
|
unlockedAchievements: unlockedAchievements,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -39,7 +38,6 @@ const saveAchievementsOnLocal = async (
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -133,7 +131,7 @@ export const mergeAchievements = async (
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
if (err! instanceof SubscriptionRequiredError) {
|
if (err instanceof SubscriptionRequiredError) {
|
||||||
achievementsLogger.log(
|
achievementsLogger.log(
|
||||||
"Achievements not synchronized on API due to lack of subscription",
|
"Achievements not synchronized on API due to lack of subscription",
|
||||||
game.objectId,
|
game.objectId,
|
||||||
|
|
|
@ -6,7 +6,7 @@ import { parseAchievementFile } from "./parse-achievement-file";
|
||||||
import { mergeAchievements } from "./merge-achievements";
|
import { mergeAchievements } from "./merge-achievements";
|
||||||
import type { Game, UnlockedAchievement } from "@types";
|
import type { Game, UnlockedAchievement } from "@types";
|
||||||
|
|
||||||
export const updateLocalUnlockedAchivements = async (game: Game) => {
|
export const updateLocalUnlockedAchievements = async (game: Game) => {
|
||||||
const gameAchievementFiles = findAchievementFiles(game);
|
const gameAchievementFiles = findAchievementFiles(game);
|
||||||
|
|
||||||
const achievementFileInsideDirectory =
|
const achievementFileInsideDirectory =
|
||||||
|
|
|
@ -24,7 +24,7 @@ export const mergeWithRemoteGames = async () => {
|
||||||
? game.playTimeInMilliseconds
|
? game.playTimeInMilliseconds
|
||||||
: localGame.playTimeInMilliseconds;
|
: localGame.playTimeInMilliseconds;
|
||||||
|
|
||||||
gamesSublevel.put(levelKeys.game(game.shop, game.objectId), {
|
await gamesSublevel.put(levelKeys.game(game.shop, game.objectId), {
|
||||||
...localGame,
|
...localGame,
|
||||||
remoteId: game.id,
|
remoteId: game.id,
|
||||||
lastTimePlayed: updatedLastTimePlayed,
|
lastTimePlayed: updatedLastTimePlayed,
|
||||||
|
@ -39,7 +39,7 @@ export const mergeWithRemoteGames = async () => {
|
||||||
? steamUrlBuilder.icon(game.objectId, steamGame.clientIcon)
|
? steamUrlBuilder.icon(game.objectId, steamGame.clientIcon)
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
gamesSublevel.put(levelKeys.game(game.shop, game.objectId), {
|
await gamesSublevel.put(levelKeys.game(game.shop, game.objectId), {
|
||||||
objectId: game.objectId,
|
objectId: game.objectId,
|
||||||
title: steamGame?.name,
|
title: steamGame?.name,
|
||||||
remoteId: game.id,
|
remoteId: game.id,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue