diff --git a/src/main/services/library-sync/merge-with-remote-games.ts b/src/main/services/library-sync/merge-with-remote-games.ts index a0482c6c..937007dd 100644 --- a/src/main/services/library-sync/merge-with-remote-games.ts +++ b/src/main/services/library-sync/merge-with-remote-games.ts @@ -4,61 +4,61 @@ import { steamGamesWorker } from "@main/workers"; import { getSteamAppAsset } from "@main/helpers"; export const mergeWithRemoteGames = async () => { - try { - const games = await HydraApi.get("/games"); - - for (const game of games.data) { - const localGame = await gameRepository.findOne({ - 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( - { + return HydraApi.get("/games") + .then(async (response) => { + for (const game of response.data) { + const localGame = await gameRepository.findOne({ + where: { 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; + if (localGame) { + const updatedLastTimePlayed = + localGame.lastTimePlayed == null || + (game.lastTimePlayed && + new Date(game.lastTimePlayed) > localGame.lastTimePlayed) + ? game.lastTimePlayed + : localGame.lastTimePlayed; - gameRepository.insert({ - objectID: game.objectId, - title: steamGame?.name, - remoteId: game.id, - shop: game.shop, - iconUrl, - lastTimePlayed: game.lastTimePlayed, - playTimeInMilliseconds: game.playTimeInMilliseconds, + const updatedPlayTime = + localGame.playTimeInMilliseconds < game.playTimeInMilliseconds + ? game.playTimeInMilliseconds + : localGame.playTimeInMilliseconds; + + gameRepository.update( + { + 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(); }; diff --git a/src/main/services/library-sync/upload-games-batch.ts b/src/main/services/library-sync/upload-games-batch.ts index 2f9f33ed..a46e0ec7 100644 --- a/src/main/services/library-sync/upload-games-batch.ts +++ b/src/main/services/library-sync/upload-games-batch.ts @@ -6,30 +6,28 @@ import { mergeWithRemoteGames } from "./merge-with-remote-games"; import { WindowManager } from "../window-manager"; export const uploadGamesBatch = async () => { - try { - const games = await gameRepository.find({ - where: { remoteId: IsNull(), isDeleted: false }, - }); + const games = await gameRepository.find({ + where: { remoteId: IsNull(), isDeleted: false }, + }); - const gamesChunks = chunk(games, 200); + const gamesChunks = chunk(games, 200); - for (const chunk of gamesChunks) { - await HydraApi.post( - "/games/batch", - chunk.map((game) => { - return { - objectId: game.objectID, - playTimeInMilliseconds: Math.trunc(game.playTimeInMilliseconds), - shop: game.shop, - lastTimePlayed: game.lastTimePlayed, - }; - }) - ).catch(); - } + for (const chunk of gamesChunks) { + await HydraApi.post( + "/games/batch", + chunk.map((game) => { + return { + objectId: game.objectID, + playTimeInMilliseconds: Math.trunc(game.playTimeInMilliseconds), + shop: game.shop, + lastTimePlayed: game.lastTimePlayed, + }; + }) + ).catch(); + } - await mergeWithRemoteGames(); + await mergeWithRemoteGames(); - if (WindowManager.mainWindow) - WindowManager.mainWindow.webContents.send("on-library-batch-complete"); - } catch (err) {} + if (WindowManager.mainWindow) + WindowManager.mainWindow.webContents.send("on-library-batch-complete"); };