gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/nodes/services/settings.mutate.ts · v0.3.0-alpha10
Source
1 b15ff05 Mrdn 2y ago import { NodeType } from "@marzneshin/features/nodes";
2 b15ff05 Mrdn 2y ago import { useMutation } from "@tanstack/react-query";
3 b15ff05 Mrdn 2y ago import { fetch, queryClient } from "@marzneshin/utils";
4 b15ff05 Mrdn 2y ago import { toast } from "sonner";
5 b15ff05 Mrdn 2y ago import i18n from "@marzneshin/features/i18n";
6 b15ff05 Mrdn 2y ago import { NodesSettingsQueryFetchKey } from "./settings.query";
7 b15ff05 Mrdn 2y ago
8 097061d Mrdn 2y ago interface UpdateNodesSettings {
9 097061d Mrdn 2y ago node: NodeType
10 097061d Mrdn 2y ago config: string
11 097061d Mrdn 2y ago }
12 097061d Mrdn 2y ago
13 097061d Mrdn 2y ago export async function fetchUpdateNodesSettings({ node, config }: UpdateNodesSettings): Promise<NodeType> {
14 097061d Mrdn 2y ago return fetch(`/nodes/${node.id}/xray_config`, { method: 'put', body: config }).then((node) => {
15 b15ff05 Mrdn 2y ago return node;
16 b15ff05 Mrdn 2y ago });
17 b15ff05 Mrdn 2y ago }
18 b15ff05 Mrdn 2y ago
19 097061d Mrdn 2y ago const handleError = (error: Error, value: UpdateNodesSettings) => {
20 b15ff05 Mrdn 2y ago toast.error(
21 097061d Mrdn 2y ago i18n.t('events.update.error', { name: value.node.name }),
22 b15ff05 Mrdn 2y ago {
23 b15ff05 Mrdn 2y ago description: error.message
24 b15ff05 Mrdn 2y ago })
25 b15ff05 Mrdn 2y ago }
26 b15ff05 Mrdn 2y ago
27 b15ff05 Mrdn 2y ago const handleSuccess = (value: NodeType) => {
28 b15ff05 Mrdn 2y ago toast.success(
29 3b7feef Mrdn 2y ago i18n.t('events.update.success.title', { name: value.name }),
30 b15ff05 Mrdn 2y ago {
31 3b7feef Mrdn 2y ago description: i18n.t('events.update.success.desc')
32 b15ff05 Mrdn 2y ago })
33 b15ff05 Mrdn 2y ago queryClient.invalidateQueries({ queryKey: [NodesSettingsQueryFetchKey] })
34 b15ff05 Mrdn 2y ago }
35 b15ff05 Mrdn 2y ago
36 b15ff05 Mrdn 2y ago
37 b15ff05 Mrdn 2y ago const NodesSettingsUpdateFetchKey = ["nodes", "xray_config"];
38 b15ff05 Mrdn 2y ago
39 b15ff05 Mrdn 2y ago export const useNodesSettingsMutation = () => {
40 b15ff05 Mrdn 2y ago return useMutation({
41 b15ff05 Mrdn 2y ago mutationKey: NodesSettingsUpdateFetchKey,
42 b15ff05 Mrdn 2y ago mutationFn: fetchUpdateNodesSettings,
43 b15ff05 Mrdn 2y ago onError: handleError,
44 b15ff05 Mrdn 2y ago onSuccess: handleSuccess,
45 b15ff05 Mrdn 2y ago })
46 b15ff05 Mrdn 2y ago }