mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-01-23 21:44:55 +03:00
feat: refactor
This commit is contained in:
parent
c9c585f820
commit
b8bd786c45
@ -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();
|
||||||
};
|
};
|
||||||
|
@ -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) {}
|
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user