| 1 |
78a3e64 |
Dawsh |
2y ago |
import type { NodeType } from "@marzneshin/modules/nodes"; |
| 2 |
b15ff05 |
Mrdn |
2y ago |
import { useMutation } from "@tanstack/react-query"; |
| 3 |
d636f3f |
Dawsh |
2y ago |
import { fetch, queryClient } from "@marzneshin/common/utils"; |
| 4 |
b15ff05 |
Mrdn |
2y ago |
import { toast } from "sonner"; |
| 5 |
b15ff05 |
Mrdn |
2y ago |
import i18n from "@marzneshin/features/i18n"; |
| 6 |
f5c168d |
Mardin |
2y ago |
import { |
| 7 |
f5c168d |
Mardin |
2y ago |
type NodeBackendSettingConfigFormat, |
| 8 |
f5c168d |
Mardin |
2y ago |
NodesSettingsQueryFetchKey, |
| 9 |
f5c168d |
Mardin |
2y ago |
} from "./settings.query"; |
| 10 |
b15ff05 |
Mrdn |
2y ago |
|
| 11 |
097061d |
Mrdn |
2y ago |
interface UpdateNodesSettings { |
| 12 |
f5c168d |
Mardin |
2y ago |
node: NodeType; |
| 13 |
f5c168d |
Mardin |
2y ago |
backend: string; |
| 14 |
f5c168d |
Mardin |
2y ago |
config: string; |
| 15 |
f5c168d |
Mardin |
2y ago |
format: NodeBackendSettingConfigFormat; |
| 16 |
097061d |
Mrdn |
2y ago |
} |
| 17 |
097061d |
Mrdn |
2y ago |
|
| 18 |
f5c168d |
Mardin |
2y ago |
export async function fetchUpdateNodesSettings({ |
| 19 |
f5c168d |
Mardin |
2y ago |
node, |
| 20 |
f5c168d |
Mardin |
2y ago |
backend, |
| 21 |
f5c168d |
Mardin |
2y ago |
config, |
| 22 |
f5c168d |
Mardin |
2y ago |
format, |
| 23 |
f5c168d |
Mardin |
2y ago |
}: UpdateNodesSettings): Promise<NodeType> { |
| 24 |
f5c168d |
Mardin |
2y ago |
return fetch(`/nodes/${node.id}/${backend}/config`, { |
| 25 |
f5c168d |
Mardin |
2y ago |
method: "put", |
| 26 |
f5c168d |
Mardin |
2y ago |
body: { config, format }, |
| 27 |
f5c168d |
Mardin |
2y ago |
}).then((node) => { |
| 28 |
b15ff05 |
Mrdn |
2y ago |
return node; |
| 29 |
b15ff05 |
Mrdn |
2y ago |
}); |
| 30 |
b15ff05 |
Mrdn |
2y ago |
} |
| 31 |
b15ff05 |
Mrdn |
2y ago |
|
| 32 |
097061d |
Mrdn |
2y ago |
const handleError = (error: Error, value: UpdateNodesSettings) => { |
| 33 |
f5c168d |
Mardin |
2y ago |
toast.error(i18n.t("events.update.error", { name: value.node.name }), { |
| 34 |
f5c168d |
Mardin |
2y ago |
description: error.message, |
| 35 |
f5c168d |
Mardin |
2y ago |
}); |
| 36 |
f5c168d |
Mardin |
2y ago |
}; |
| 37 |
b15ff05 |
Mrdn |
2y ago |
|
| 38 |
b15ff05 |
Mrdn |
2y ago |
const handleSuccess = (value: NodeType) => { |
| 39 |
f5c168d |
Mardin |
2y ago |
toast.success(i18n.t("events.update.success.title", { name: value.name }), { |
| 40 |
f5c168d |
Mardin |
2y ago |
description: i18n.t("events.update.success.desc"), |
| 41 |
f5c168d |
Mardin |
2y ago |
}); |
| 42 |
f5c168d |
Mardin |
2y ago |
queryClient.invalidateQueries({ queryKey: [NodesSettingsQueryFetchKey] }); |
| 43 |
f5c168d |
Mardin |
2y ago |
}; |
| 44 |
b15ff05 |
Mrdn |
2y ago |
|
| 45 |
f5c168d |
Mardin |
2y ago |
const NodesSettingsUpdateFetchKey = ["nodes", "config"]; |
| 46 |
b15ff05 |
Mrdn |
2y ago |
|
| 47 |
b15ff05 |
Mrdn |
2y ago |
export const useNodesSettingsMutation = () => { |
| 48 |
b15ff05 |
Mrdn |
2y ago |
return useMutation({ |
| 49 |
b15ff05 |
Mrdn |
2y ago |
mutationKey: NodesSettingsUpdateFetchKey, |
| 50 |
b15ff05 |
Mrdn |
2y ago |
mutationFn: fetchUpdateNodesSettings, |
| 51 |
b15ff05 |
Mrdn |
2y ago |
onError: handleError, |
| 52 |
b15ff05 |
Mrdn |
2y ago |
onSuccess: handleSuccess, |
| 53 |
f5c168d |
Mardin |
2y ago |
}); |
| 54 |
f5c168d |
Mardin |
2y ago |
}; |