mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-03-09 15:40:26 +00:00
feat: get achievement from game directory on launch
This commit is contained in:
parent
5e313a0374
commit
2a6b757e37
1 changed files with 24 additions and 14 deletions
|
@ -2,6 +2,7 @@ import { gameAchievementRepository, gameRepository } from "@main/repository";
|
||||||
import {
|
import {
|
||||||
findAllAchievementFiles,
|
findAllAchievementFiles,
|
||||||
findAchievementFiles,
|
findAchievementFiles,
|
||||||
|
findAchievementFileInExecutableDirectory,
|
||||||
} from "./find-achivement-files";
|
} from "./find-achivement-files";
|
||||||
import { parseAchievementFile } from "./parse-achievement-file";
|
import { parseAchievementFile } from "./parse-achievement-file";
|
||||||
import { mergeAchievements } from "./merge-achievements";
|
import { mergeAchievements } from "./merge-achievements";
|
||||||
|
@ -12,26 +13,30 @@ import { achievementsLogger } from "../logger";
|
||||||
export const updateAllLocalUnlockedAchievements = async () => {
|
export const updateAllLocalUnlockedAchievements = async () => {
|
||||||
const gameAchievementFilesMap = await findAllAchievementFiles();
|
const gameAchievementFilesMap = await findAllAchievementFiles();
|
||||||
|
|
||||||
for (const objectId of gameAchievementFilesMap.keys()) {
|
const games = await gameRepository.find({
|
||||||
const gameAchievementFiles = gameAchievementFilesMap.get(objectId)!;
|
where: {
|
||||||
|
isDeleted: false,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
const [game, localAchievements] = await Promise.all([
|
for (const game of games) {
|
||||||
gameRepository.findOne({
|
const gameAchievementFiles =
|
||||||
where: { objectID: objectId, shop: "steam", isDeleted: false },
|
gameAchievementFilesMap.get(game.objectID) || [];
|
||||||
}),
|
const achievementFileInsideDirectory =
|
||||||
gameAchievementRepository.findOne({
|
findAchievementFileInExecutableDirectory(game);
|
||||||
where: { objectId, shop: "steam" },
|
|
||||||
}),
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (!game) continue;
|
gameAchievementFiles.push(...achievementFileInsideDirectory);
|
||||||
|
|
||||||
|
const localAchievements = await gameAchievementRepository.findOne({
|
||||||
|
where: { objectId: game.objectID, shop: "steam" },
|
||||||
|
});
|
||||||
|
|
||||||
if (!localAchievements || !localAchievements.achievements) {
|
if (!localAchievements || !localAchievements.achievements) {
|
||||||
await getGameAchievementData(objectId, "steam")
|
await getGameAchievementData(game.objectID, "steam")
|
||||||
.then((achievements) => {
|
.then((achievements) => {
|
||||||
return gameAchievementRepository.upsert(
|
return gameAchievementRepository.upsert(
|
||||||
{
|
{
|
||||||
objectId,
|
objectId: game.objectID,
|
||||||
shop: "steam",
|
shop: "steam",
|
||||||
achievements: JSON.stringify(achievements),
|
achievements: JSON.stringify(achievements),
|
||||||
},
|
},
|
||||||
|
@ -60,7 +65,7 @@ export const updateAllLocalUnlockedAchievements = async () => {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
mergeAchievements(objectId, "steam", unlockedAchievements, false);
|
mergeAchievements(game.objectID, "steam", unlockedAchievements, false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -78,6 +83,11 @@ export const updateLocalUnlockedAchivements = async (objectId: string) => {
|
||||||
|
|
||||||
const gameAchievementFiles = await findAchievementFiles(game);
|
const gameAchievementFiles = await findAchievementFiles(game);
|
||||||
|
|
||||||
|
const achievementFileInsideDirectory =
|
||||||
|
findAchievementFileInExecutableDirectory(game);
|
||||||
|
|
||||||
|
gameAchievementFiles.push(...achievementFileInsideDirectory);
|
||||||
|
|
||||||
console.log("Achievements files for", game.title, gameAchievementFiles);
|
console.log("Achievements files for", game.title, gameAchievementFiles);
|
||||||
|
|
||||||
if (!localAchievements || !localAchievements.achievements) {
|
if (!localAchievements || !localAchievements.achievements) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue