feat: accumulate ticks when request to update playtime fails

This commit is contained in:
Zamitto 2024-09-13 21:02:59 -03:00
parent f439b6809c
commit 608a53e8df
5 changed files with 31 additions and 31 deletions

View File

@ -54,7 +54,7 @@ const addGameToLibrary = async (
const game = await gameRepository.findOne({ where: { objectID } });
createGame(game!);
createGame(game!).catch(() => {});
});
};

View File

@ -97,7 +97,7 @@ const startGameDownload = async (
},
});
createGame(updatedGame!);
createGame(updatedGame!).catch(() => {});
await downloadQueueRepository.delete({ game: { id: updatedGame!.id } });
await downloadQueueRepository.insert({ game: { id: updatedGame!.id } });

View File

@ -15,19 +15,17 @@ export const createGame = async (game: Game) => {
logger.error("Failed to create game download", err);
});
HydraApi.post(`/profile/games`, {
return HydraApi.post(`/profile/games`, {
objectId: game.objectID,
playTimeInMilliseconds: Math.trunc(game.playTimeInMilliseconds),
shop: game.shop,
lastTimePlayed: game.lastTimePlayed,
})
.then((response) => {
const { id: remoteId, playTimeInMilliseconds, lastTimePlayed } = response;
}).then((response) => {
const { id: remoteId, playTimeInMilliseconds, lastTimePlayed } = response;
gameRepository.update(
{ objectID: game.objectID },
{ remoteId, playTimeInMilliseconds, lastTimePlayed }
);
})
.catch(() => {});
gameRepository.update(
{ objectID: game.objectID },
{ remoteId, playTimeInMilliseconds, lastTimePlayed }
);
});
};

View File

@ -6,8 +6,8 @@ export const updateGamePlaytime = async (
deltaInMillis: number,
lastTimePlayed: Date
) => {
HydraApi.put(`/profile/games/${game.remoteId}`, {
return HydraApi.put(`/profile/games/${game.remoteId}`, {
playTimeDeltaInSeconds: Math.trunc(deltaInMillis / 1000),
lastTimePlayed,
}).catch(() => {});
});
};

View File

@ -70,9 +70,9 @@ function onOpenGame(game: Game) {
});
if (game.remoteId) {
updateGamePlaytime(game, 0, new Date());
updateGamePlaytime(game, 0, new Date()).catch(() => {});
} else {
createGame({ ...game, lastTimePlayed: new Date() });
createGame({ ...game, lastTimePlayed: new Date() }).catch(() => {});
}
}
@ -93,20 +93,22 @@ function onTickGame(game: Game) {
});
if (currentTick % TICKS_TO_UPDATE_API === 0) {
if (game.remoteId) {
updateGamePlaytime(
game,
now - gamePlaytime.lastSyncTick,
game.lastTimePlayed!
);
} else {
createGame(game);
}
const gamePromise = game.remoteId
? updateGamePlaytime(
game,
now - gamePlaytime.lastSyncTick,
game.lastTimePlayed!
)
: createGame(game);
gamesPlaytime.set(game.id, {
...gamePlaytime,
lastSyncTick: now,
});
gamePromise
.then(() => {
gamesPlaytime.set(game.id, {
...gamePlaytime,
lastSyncTick: now,
});
})
.catch(() => {});
}
}
@ -119,8 +121,8 @@ const onCloseGame = (game: Game) => {
game,
performance.now() - gamePlaytime.firstTick,
game.lastTimePlayed!
);
).catch(() => {});
} else {
createGame(game);
createGame(game).catch(() => {});
}
};