mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-01-11 13:56:16 +00:00
66 lines
2.0 KiB
TypeScript
66 lines
2.0 KiB
TypeScript
import axios from "axios";
|
|
import { useCallback, useEffect, useState } from "react";
|
|
import { levelDBService } from "@renderer/services/leveldb.service";
|
|
import type { DownloadSource } from "@types";
|
|
import { useAppDispatch } from "./redux";
|
|
import { setGenres, setTags } from "@renderer/features";
|
|
|
|
export const externalResourcesInstance = axios.create({
|
|
baseURL: import.meta.env.RENDERER_VITE_EXTERNAL_RESOURCES_URL,
|
|
});
|
|
|
|
export function useCatalogue() {
|
|
const dispatch = useAppDispatch();
|
|
|
|
const [steamPublishers, setSteamPublishers] = useState<string[]>([]);
|
|
const [steamDevelopers, setSteamDevelopers] = useState<string[]>([]);
|
|
const [downloadSources, setDownloadSources] = useState<DownloadSource[]>([]);
|
|
|
|
const getSteamUserTags = useCallback(() => {
|
|
externalResourcesInstance.get("/steam-user-tags.json").then((response) => {
|
|
dispatch(setTags(response.data));
|
|
});
|
|
}, [dispatch]);
|
|
|
|
const getSteamGenres = useCallback(() => {
|
|
externalResourcesInstance.get("/steam-genres.json").then((response) => {
|
|
dispatch(setGenres(response.data));
|
|
});
|
|
}, [dispatch]);
|
|
|
|
const getSteamPublishers = useCallback(() => {
|
|
externalResourcesInstance.get("/steam-publishers.json").then((response) => {
|
|
setSteamPublishers(response.data);
|
|
});
|
|
}, []);
|
|
|
|
const getSteamDevelopers = useCallback(() => {
|
|
externalResourcesInstance.get("/steam-developers.json").then((response) => {
|
|
setSteamDevelopers(response.data);
|
|
});
|
|
}, []);
|
|
|
|
const getDownloadSources = useCallback(() => {
|
|
levelDBService.values("downloadSources").then((results) => {
|
|
const sources = results as DownloadSource[];
|
|
setDownloadSources(sources.filter((source) => !!source.fingerprint));
|
|
});
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
getSteamUserTags();
|
|
getSteamGenres();
|
|
getSteamPublishers();
|
|
getSteamDevelopers();
|
|
getDownloadSources();
|
|
}, [
|
|
getSteamUserTags,
|
|
getSteamGenres,
|
|
getSteamPublishers,
|
|
getSteamDevelopers,
|
|
getDownloadSources,
|
|
]);
|
|
|
|
return { steamPublishers, downloadSources, steamDevelopers };
|
|
}
|