mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-03-09 15:40:26 +00:00
72 lines
2.1 KiB
TypeScript
72 lines
2.1 KiB
TypeScript
import { gameRepository } from "@main/repository";
|
|
import { HydraApi } from "../hydra-api";
|
|
import { steamGamesWorker } from "@main/workers";
|
|
import { getSteamAppAsset } from "@main/helpers";
|
|
import { logger } from "../logger";
|
|
import { AxiosError } from "axios";
|
|
|
|
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(
|
|
{
|
|
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) {
|
|
if (err instanceof AxiosError) {
|
|
logger.error("getRemoteGames", err.response, err.message);
|
|
} else {
|
|
logger.error("getRemoteGames", err);
|
|
}
|
|
}
|
|
};
|