https://dev.kronoz.win/r/marzneshin.git
1import type { NodeType } from "@marzneshin/modules/nodes";
2import { useQuery } from "@tanstack/react-query";
3import { fetch } from "@marzneshin/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};