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