mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-01-25 03:41:02 +00:00
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { HydraApi, logger } from "../";
|
|
import { downloadSourcesSublevel } from "@main/level";
|
|
import type { DownloadSource } from "@types";
|
|
|
|
export const syncDownloadSourcesFromApi = async () => {
|
|
if (!HydraApi.isLoggedIn() || !HydraApi.hasActiveSubscription()) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
const profileSources = await HydraApi.get<DownloadSource[]>(
|
|
"/profile/download-sources"
|
|
);
|
|
|
|
const existingSources = await downloadSourcesSublevel.values().all();
|
|
const existingUrls = new Set(existingSources.map((source) => source.url));
|
|
|
|
for (const downloadSource of profileSources) {
|
|
if (!existingUrls.has(downloadSource.url)) {
|
|
try {
|
|
await downloadSourcesSublevel.put(downloadSource.id, {
|
|
...downloadSource,
|
|
isRemote: true,
|
|
createdAt: new Date().toISOString(),
|
|
});
|
|
|
|
logger.log(
|
|
`Synced download source from profile: ${downloadSource.url}`
|
|
);
|
|
} catch (error) {
|
|
logger.error(
|
|
`Failed to sync download source ${downloadSource.url}:`,
|
|
error
|
|
);
|
|
}
|
|
}
|
|
}
|
|
} catch (error) {
|
|
logger.error("Failed to sync download sources from API:", error);
|
|
}
|
|
};
|