feat: adjustments on achievements

This commit is contained in:
Zamitto 2024-10-21 01:07:46 -03:00
parent 22fc95ff53
commit bb65d77fc6
4 changed files with 66 additions and 56 deletions

View File

@ -12,8 +12,8 @@ export class GameAchievement {
shop: string; shop: string;
@Column("text", { nullable: true }) @Column("text", { nullable: true })
unlockedAchievements: string; unlockedAchievements: string | null;
@Column("text", { nullable: true }) @Column("text", { nullable: true })
achievements: string; achievements: string | null;
} }

View File

@ -25,21 +25,24 @@ const watchAchievementsWindows = async () => {
}); });
if (games.length === 0) return; if (games.length === 0) return;
const achievementFiles = findAllAchievementFiles(); const achievementFiles = findAllAchievementFiles();
for (const game of games) { for (const game of games) {
const gameAchievementFiles: AchievementFile[] = [];
for (const objectId of getAlternativeObjectIds(game.objectID)) { for (const objectId of getAlternativeObjectIds(game.objectID)) {
const gameAchievementFiles = achievementFiles.get(objectId) || []; gameAchievementFiles.push(...(achievementFiles.get(objectId) || []));
const achievementFileInsideDirectory =
findAchievementFileInExecutableDirectory(game);
gameAchievementFiles.push(...achievementFileInsideDirectory); gameAchievementFiles.push(
...findAchievementFileInExecutableDirectory(game)
);
}
if (!gameAchievementFiles.length) continue; if (!gameAchievementFiles.length) continue;
for (const file of gameAchievementFiles) { for (const file of gameAchievementFiles) {
compareFile(game, file); await compareFile(game, file);
}
} }
} }
}; };
@ -64,7 +67,7 @@ const watchAchievementsWithWine = async () => {
if (!gameAchievementFiles.length) continue; if (!gameAchievementFiles.length) continue;
for (const file of gameAchievementFiles) { for (const file of gameAchievementFiles) {
compareFile(game, file); await compareFile(game, file);
} }
} }
}; };

View File

@ -13,12 +13,12 @@ const getAppDataPath = () => {
const user = app.getPath("home").split("/").pop(); const user = app.getPath("home").split("/").pop();
return path.join("drive_c", "users", user || "", "AppData", "Roaming"); return path.join("drive_c", "Users", user || "", "AppData", "Roaming");
}; };
const getDocumentsPath = () => { const getDocumentsPath = () => {
if (process.platform === "win32") { if (process.platform === "win32") {
return app.getPath("appData"); return app.getPath("documents");
} }
const user = app.getPath("home").split("/").pop(); const user = app.getPath("home").split("/").pop();
@ -28,11 +28,10 @@ const getDocumentsPath = () => {
const getPublicDocumentsPath = () => { const getPublicDocumentsPath = () => {
if (process.platform === "win32") { if (process.platform === "win32") {
return app.getPath("appData"); return path.join("C:", "Users", "Public", "Documents");
} }
// /media/jackenx/JED2/.newprefix/dosdevices/c:/users/Public/Documents/Steam/CODEX/489830
return path.join("drive_c", "users", "Public", "Documents"); return path.join("drive_c", "Users", "Public", "Documents");
}; };
const getLocalAppDataPath = () => { const getLocalAppDataPath = () => {

View File

@ -7,59 +7,69 @@ import {
} 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";
import type { UnlockedAchievement } from "@types"; import type { AchievementFile, UnlockedAchievement } from "@types";
import { getGameAchievementData } from "./get-game-achievement-data"; import { getGameAchievementData } from "./get-game-achievement-data";
import { achievementsLogger } from "../logger"; import { achievementsLogger } from "../logger";
import { Game } from "@main/entity"; import { Game } from "@main/entity";
export const updateAllLocalUnlockedAchievements = async () => { export const updateAllLocalUnlockedAchievements = async () => {
const gameAchievementFilesMap = findAllAchievementFiles();
const games = await gameRepository.find({ const games = await gameRepository.find({
where: { where: {
isDeleted: false, isDeleted: false,
}, },
}); });
if (games.length === 0) return;
const gameAchievementFilesMap = findAllAchievementFiles();
for (const game of games) { for (const game of games) {
for (const objectId of getAlternativeObjectIds(game.objectID)) { gameAchievementRepository
const gameAchievementFiles = gameAchievementFilesMap.get(objectId) || []; .findOne({
const achievementFileInsideDirectory = where: { objectId: game.objectID, shop: "steam" },
findAchievementFileInExecutableDirectory(game); })
.then((localAchievements) => {
gameAchievementFiles.push(...achievementFileInsideDirectory); if (!localAchievements || !localAchievements.achievements) {
getGameAchievementData(game.objectID, "steam");
gameAchievementRepository
.findOne({
where: { objectId: game.objectID, shop: "steam" },
})
.then((localAchievements) => {
if (!localAchievements || !localAchievements.achievements) {
getGameAchievementData(game.objectID, "steam");
}
});
const unlockedAchievements: UnlockedAchievement[] = [];
for (const achievementFile of gameAchievementFiles) {
const parsedAchievements = parseAchievementFile(
achievementFile.filePath,
achievementFile.type
);
if (parsedAchievements.length) {
unlockedAchievements.push(...parsedAchievements);
achievementsLogger.log(
"Achievement file for",
game.title,
achievementFile.filePath,
parsedAchievements
);
} }
});
const gameAchievementFiles: AchievementFile[] = [];
const unlockedAchievements: UnlockedAchievement[] = [];
for (const objectId of getAlternativeObjectIds(game.objectID)) {
gameAchievementFiles.push(
...(gameAchievementFilesMap.get(objectId) || [])
);
gameAchievementFiles.push(
...findAchievementFileInExecutableDirectory(game)
);
}
for (const achievementFile of gameAchievementFiles) {
const parsedAchievements = parseAchievementFile(
achievementFile.filePath,
achievementFile.type
);
if (parsedAchievements.length) {
unlockedAchievements.push(...parsedAchievements);
achievementsLogger.log(
"Achievement file for",
game.title,
achievementFile.filePath,
parsedAchievements
);
} }
mergeAchievements(game.objectID, "steam", unlockedAchievements, false); await mergeAchievements(
game.objectID,
"steam",
unlockedAchievements,
false
);
} }
} }
}; };
@ -72,8 +82,6 @@ export const updateLocalUnlockedAchivements = async (game: Game) => {
gameAchievementFiles.push(...achievementFileInsideDirectory); gameAchievementFiles.push(...achievementFileInsideDirectory);
// console.log("Achievements files for", game.title, gameAchievementFiles);
const unlockedAchievements: UnlockedAchievement[] = []; const unlockedAchievements: UnlockedAchievement[] = [];
for (const achievementFile of gameAchievementFiles) { for (const achievementFile of gameAchievementFiles) {