feat: refactor

This commit is contained in:
Zamitto 2024-07-02 15:42:23 -03:00
parent c9c585f820
commit b8bd786c45
2 changed files with 69 additions and 71 deletions

View File

@ -4,61 +4,61 @@ import { steamGamesWorker } from "@main/workers";
import { getSteamAppAsset } from "@main/helpers"; import { getSteamAppAsset } from "@main/helpers";
export const mergeWithRemoteGames = async () => { export const mergeWithRemoteGames = async () => {
try { return HydraApi.get("/games")
const games = await HydraApi.get("/games"); .then(async (response) => {
for (const game of response.data) {
for (const game of games.data) { const localGame = await gameRepository.findOne({
const localGame = await gameRepository.findOne({ where: {
where: {
objectID: game.objectId,
},
});
if (localGame) {
const updatedLastTimePlayed =
localGame.lastTimePlayed == null ||
(game.lastTimePlayed &&
new Date(game.lastTimePlayed) > localGame.lastTimePlayed)
? game.lastTimePlayed
: localGame.lastTimePlayed;
const updatedPlayTime =
localGame.playTimeInMilliseconds < game.playTimeInMilliseconds
? game.playTimeInMilliseconds
: localGame.playTimeInMilliseconds;
gameRepository.update(
{
objectID: game.objectId, objectID: game.objectId,
shop: "steam",
}, },
{
remoteId: game.id,
lastTimePlayed: updatedLastTimePlayed,
playTimeInMilliseconds: updatedPlayTime,
}
);
} else {
const steamGame = await steamGamesWorker.run(Number(game.objectId), {
name: "getById",
}); });
if (steamGame) { if (localGame) {
const iconUrl = steamGame?.clientIcon const updatedLastTimePlayed =
? getSteamAppAsset("icon", game.objectId, steamGame.clientIcon) localGame.lastTimePlayed == null ||
: null; (game.lastTimePlayed &&
new Date(game.lastTimePlayed) > localGame.lastTimePlayed)
? game.lastTimePlayed
: localGame.lastTimePlayed;
gameRepository.insert({ const updatedPlayTime =
objectID: game.objectId, localGame.playTimeInMilliseconds < game.playTimeInMilliseconds
title: steamGame?.name, ? game.playTimeInMilliseconds
remoteId: game.id, : localGame.playTimeInMilliseconds;
shop: game.shop,
iconUrl, gameRepository.update(
lastTimePlayed: game.lastTimePlayed, {
playTimeInMilliseconds: game.playTimeInMilliseconds, objectID: game.objectId,
shop: "steam",
},
{
remoteId: game.id,
lastTimePlayed: updatedLastTimePlayed,
playTimeInMilliseconds: updatedPlayTime,
}
);
} else {
const steamGame = await steamGamesWorker.run(Number(game.objectId), {
name: "getById",
}); });
if (steamGame) {
const iconUrl = steamGame?.clientIcon
? getSteamAppAsset("icon", game.objectId, steamGame.clientIcon)
: null;
gameRepository.insert({
objectID: game.objectId,
title: steamGame?.name,
remoteId: game.id,
shop: game.shop,
iconUrl,
lastTimePlayed: game.lastTimePlayed,
playTimeInMilliseconds: game.playTimeInMilliseconds,
});
}
} }
} }
} })
} catch (err) {} .catch();
}; };

View File

@ -6,30 +6,28 @@ import { mergeWithRemoteGames } from "./merge-with-remote-games";
import { WindowManager } from "../window-manager"; import { WindowManager } from "../window-manager";
export const uploadGamesBatch = async () => { export const uploadGamesBatch = async () => {
try { const games = await gameRepository.find({
const games = await gameRepository.find({ where: { remoteId: IsNull(), isDeleted: false },
where: { remoteId: IsNull(), isDeleted: false }, });
});
const gamesChunks = chunk(games, 200); const gamesChunks = chunk(games, 200);
for (const chunk of gamesChunks) { for (const chunk of gamesChunks) {
await HydraApi.post( await HydraApi.post(
"/games/batch", "/games/batch",
chunk.map((game) => { chunk.map((game) => {
return { return {
objectId: game.objectID, objectId: game.objectID,
playTimeInMilliseconds: Math.trunc(game.playTimeInMilliseconds), playTimeInMilliseconds: Math.trunc(game.playTimeInMilliseconds),
shop: game.shop, shop: game.shop,
lastTimePlayed: game.lastTimePlayed, lastTimePlayed: game.lastTimePlayed,
}; };
}) })
).catch(); ).catch();
} }
await mergeWithRemoteGames(); await mergeWithRemoteGames();
if (WindowManager.mainWindow) if (WindowManager.mainWindow)
WindowManager.mainWindow.webContents.send("on-library-batch-complete"); WindowManager.mainWindow.webContents.send("on-library-batch-complete");
} catch (err) {}
}; };