mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-01-23 19:01:02 +00:00
44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
import { registerEvent } from "../register-event";
|
|
import { gamesSublevel, levelKeys } from "@main/level";
|
|
import { HydraApi, logger } from "@main/services";
|
|
import type { GameShop, UserGame } from "@types";
|
|
|
|
const toggleGamePin = async (
|
|
_event: Electron.IpcMainInvokeEvent,
|
|
shop: GameShop,
|
|
objectId: string,
|
|
pin: boolean
|
|
) => {
|
|
try {
|
|
const gameKey = levelKeys.game(shop, objectId);
|
|
|
|
const game = await gamesSublevel.get(gameKey);
|
|
if (!game) return;
|
|
|
|
if (pin) {
|
|
const response = await HydraApi.put<UserGame>(
|
|
`/profile/games/${shop}/${objectId}/pin`
|
|
);
|
|
|
|
await gamesSublevel.put(gameKey, {
|
|
...game,
|
|
isPinned: pin,
|
|
pinnedDate: new Date(response.pinnedDate!),
|
|
});
|
|
} else {
|
|
await HydraApi.put(`/profile/games/${shop}/${objectId}/unpin`);
|
|
|
|
await gamesSublevel.put(gameKey, {
|
|
...game,
|
|
isPinned: pin,
|
|
pinnedDate: null,
|
|
});
|
|
}
|
|
} catch (error) {
|
|
logger.error("Failed to update game pinned status", error);
|
|
throw new Error(`Failed to update game pinned status: ${error}`);
|
|
}
|
|
};
|
|
|
|
registerEvent("toggleGamePin", toggleGamePin);
|