gitscope
← marzneshin / v0.7.3 / dashboard/src/modules/nodes/api/settings.query.ts
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/nodes/api/settings.query.ts · TypeScript
Blame Raw
 1import type { NodeType } from "@marzneshin/modules/nodes";
 2import { useQuery } from "@tanstack/react-query";
 3import { fetch } from "@marzneshin/common/utils";
 4
 5type NodesSettingsQueryKey = [string, number, string, string];
 6
 7export enum NodeBackendSettingConfigFormat {
 8    PLAIN = 0,
 9    JSON = 1,
10    YAML = 2,
11}
12
13interface NodesSettingsQuery {
14    queryKey: NodesSettingsQueryKey;
15}
16
17export async function fetchNodesSettings({
18    queryKey,
19}: NodesSettingsQuery): Promise<{
20    config: string;
21    format: NodeBackendSettingConfigFormat;
22}> {
23    return fetch(`/nodes/${Number(queryKey[1])}/${queryKey[2]}/config`).then(
24        (config) => {
25            return config;
26        },
27    );
28}
29
30export const NodesSettingsQueryFetchKey = "nodes";
31
32export const useNodesSettingsQuery = (node: NodeType, backend: string) => {
33    const queryKey: NodesSettingsQueryKey = [
34        NodesSettingsQueryFetchKey,
35        node.id,
36        backend,
37        "config",
38    ];
39
40    return useQuery({
41        queryKey,
42        queryFn: fetchNodesSettings,
43        initialData: { config: "", format: NodeBackendSettingConfigFormat.PLAIN },
44    });
45};