feat: syncing favorite games

This commit is contained in:
Zamitto
2025-05-30 08:39:40 -03:00
parent 4571c7cf33
commit 6757ebe13c
5 changed files with 14 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
import { registerEvent } from "../register-event";
import { gamesSublevel, levelKeys } from "@main/level";
import { HydraApi } from "@main/services";
import type { GameShop } from "@types";
const addGameToFavorites = async (
@@ -12,6 +13,8 @@ const addGameToFavorites = async (
const game = await gamesSublevel.get(gameKey);
if (!game) return;
HydraApi.put(`/profile/games/${shop}/${objectId}/favorite`).catch(() => {});
try {
await gamesSublevel.put(gameKey, {
...game,

View File

@@ -1,5 +1,6 @@
import { registerEvent } from "../register-event";
import { gamesSublevel, levelKeys } from "@main/level";
import { HydraApi } from "@main/services";
import type { GameShop } from "@types";
const removeGameFromFavorites = async (
@@ -12,6 +13,8 @@ const removeGameFromFavorites = async (
const game = await gamesSublevel.get(gameKey);
if (!game) return;
HydraApi.put(`/profile/games/${shop}/${objectId}/unfavorite`).catch(() => {});
try {
await gamesSublevel.put(gameKey, {
...game,

View File

@@ -11,14 +11,17 @@ const syncGameByObjectId = async (
return HydraApi.get<UserGameDetails>(
`/profile/games/${shop}/${objectId}`
).then(async (res) => {
const { id, playTimeInSeconds, ...rest } = res;
const { id, playTimeInSeconds, isFavorite, ...rest } = res;
const gameKey = levelKeys.game(shop, objectId);
const currentData = await gamesSublevel.get(gameKey);
await gamesSublevel.put(gameKey, {
...rest,
remoteId: id,
playTimeInMilliseconds: playTimeInSeconds * 1000,
favorite: isFavorite ?? currentData?.favorite,
});
return res;

View File

@@ -6,6 +6,7 @@ type ProfileGame = {
id: string;
lastTimePlayed: Date | null;
playTimeInMilliseconds: number;
isFavorite?: boolean;
} & ShopAssets;
export const mergeWithRemoteGames = async () => {
@@ -34,6 +35,7 @@ export const mergeWithRemoteGames = async () => {
remoteId: game.id,
lastTimePlayed: updatedLastTimePlayed,
playTimeInMilliseconds: updatedPlayTime,
favorite: game.isFavorite ?? localGame.favorite,
});
} else {
await gamesSublevel.put(levelKeys.game(game.shop, game.objectId), {
@@ -45,6 +47,7 @@ export const mergeWithRemoteGames = async () => {
lastTimePlayed: game.lastTimePlayed,
playTimeInMilliseconds: game.playTimeInMilliseconds,
isDeleted: false,
favorite: game.isFavorite ?? false,
});
}

View File

@@ -26,6 +26,7 @@ export const uploadGamesBatch = async () => {
playTimeInMilliseconds: Math.trunc(game.playTimeInMilliseconds),
shop: game.shop,
lastTimePlayed: game.lastTimePlayed,
isFavorite: game.favorite,
};
})
).catch(() => {});