diff --git a/src/main/events/download-sources/add-download-source.ts b/src/main/events/download-sources/add-download-source.ts index 45bcd27c..d4e65ef3 100644 --- a/src/main/events/download-sources/add-download-source.ts +++ b/src/main/events/download-sources/add-download-source.ts @@ -2,6 +2,7 @@ import { registerEvent } from "../register-event"; import { HydraApi } from "@main/services/hydra-api"; import { downloadSourcesSublevel } from "@main/level"; import type { DownloadSource } from "@types"; +import { logger } from "@main/services"; const addDownloadSource = async ( _event: Electron.IpcMainInvokeEvent, @@ -22,22 +23,19 @@ const addDownloadSource = async ( urls: [url], }); } catch (error) { - console.error("Failed to add download source to profile:", error); + logger.error("Failed to add download source to profile:", error); } } - const downloadSourceForStorage = { + await downloadSourcesSublevel.put(downloadSource.id, { ...downloadSource, - fingerprint: downloadSource.fingerprint || "", - }; - await downloadSourcesSublevel.put( - downloadSource.id, - downloadSourceForStorage - ); + isRemote: true, + createdAt: new Date().toISOString(), + }); return downloadSource; } catch (error) { - console.error("Failed to add download source:", error); + logger.error("Failed to add download source:", error); throw error; } }; diff --git a/src/main/events/download-sources/get-download-sources.ts b/src/main/events/download-sources/get-download-sources.ts index cf7cd4d7..48583d9e 100644 --- a/src/main/events/download-sources/get-download-sources.ts +++ b/src/main/events/download-sources/get-download-sources.ts @@ -1,8 +1,10 @@ import { downloadSourcesSublevel } from "@main/level"; import { registerEvent } from "../register-event"; +import { orderBy } from "lodash-es"; const getDownloadSources = async (_event: Electron.IpcMainInvokeEvent) => { - return downloadSourcesSublevel.values().all(); + const allSources = await downloadSourcesSublevel.values().all(); + return orderBy(allSources, "createdAt", "desc"); }; registerEvent("getDownloadSources", getDownloadSources); diff --git a/src/main/helpers/migrate-download-sources.ts b/src/main/helpers/migrate-download-sources.ts new file mode 100644 index 00000000..fd627f20 --- /dev/null +++ b/src/main/helpers/migrate-download-sources.ts @@ -0,0 +1,27 @@ +import { downloadSourcesSublevel } from "@main/level"; +import { HydraApi } from "@main/services/hydra-api"; +import { DownloadSource } from "@types"; + +export const migrateDownloadSources = async () => { + const downloadSources = downloadSourcesSublevel.iterator(); + + for await (const [key, value] of downloadSources) { + if (!value.isRemote) { + const downloadSource = await HydraApi.post( + "/download-sources", + { + url: value.url, + }, + { needsAuth: false } + ); + + await downloadSourcesSublevel.put(downloadSource.id, { + ...downloadSource, + isRemote: true, + createdAt: new Date().toISOString(), + }); + + await downloadSourcesSublevel.del(key); + } + } +}; diff --git a/src/main/main.ts b/src/main/main.ts index 617dd135..6e477a18 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -17,6 +17,7 @@ import { Lock, DeckyPlugin, } from "@main/services"; +import { migrateDownloadSources } from "./helpers/migrate-download-sources"; export const loadState = async () => { await Lock.acquireLock(); @@ -51,6 +52,7 @@ export const loadState = async () => { await HydraApi.setupApi().then(() => { uploadGamesBatch(); + void migrateDownloadSources(); // WSClient.connect(); }); diff --git a/src/renderer/src/components/game-card/game-card.tsx b/src/renderer/src/components/game-card/game-card.tsx index 598874b5..edea8d50 100644 --- a/src/renderer/src/components/game-card/game-card.tsx +++ b/src/renderer/src/components/game-card/game-card.tsx @@ -38,8 +38,6 @@ export function GameCard({ game, ...props }: GameCardProps) { const { numberFormatter } = useFormat(); - console.log("game", game); - return (