gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/nodes/services/create-node.mutate.ts · v0.4.1
Source
1 b15ff05 Mrdn 2y ago import { NodeType, NodesQueryFetchKey } 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
7 b15ff05 Mrdn 2y ago export async function fetchCreateNode(node: NodeType): Promise<NodeType> {
8 b15ff05 Mrdn 2y ago return fetch('/nodes', { method: 'post', body: node }).then((node) => {
9 b15ff05 Mrdn 2y ago return node;
10 b15ff05 Mrdn 2y ago });
11 b15ff05 Mrdn 2y ago }
12 b15ff05 Mrdn 2y ago
13 b15ff05 Mrdn 2y ago const handleError = (error: Error, value: NodeType) => {
14 b15ff05 Mrdn 2y ago toast.error(
15 3b7feef Mrdn 2y ago i18n.t('events.create.error', { name: value.name }),
16 b15ff05 Mrdn 2y ago {
17 b15ff05 Mrdn 2y ago description: error.message
18 b15ff05 Mrdn 2y ago })
19 b15ff05 Mrdn 2y ago }
20 b15ff05 Mrdn 2y ago
21 b15ff05 Mrdn 2y ago const handleSuccess = (value: NodeType) => {
22 b15ff05 Mrdn 2y ago toast.success(
23 3b7feef Mrdn 2y ago i18n.t('events.create.success.title', { name: value.name }),
24 b15ff05 Mrdn 2y ago {
25 3b7feef Mrdn 2y ago description: i18n.t('events.create.success.desc')
26 b15ff05 Mrdn 2y ago })
27 b15ff05 Mrdn 2y ago queryClient.invalidateQueries({ queryKey: [NodesQueryFetchKey] })
28 b15ff05 Mrdn 2y ago }
29 b15ff05 Mrdn 2y ago
30 b15ff05 Mrdn 2y ago
31 3b7feef Mrdn 2y ago const NodesCreateFetchKey = "nodes";
32 b15ff05 Mrdn 2y ago
33 b15ff05 Mrdn 2y ago export const useNodesCreationMutation = () => {
34 b15ff05 Mrdn 2y ago return useMutation({
35 b15ff05 Mrdn 2y ago mutationKey: [NodesCreateFetchKey],
36 b15ff05 Mrdn 2y ago mutationFn: fetchCreateNode,
37 b15ff05 Mrdn 2y ago onError: handleError,
38 b15ff05 Mrdn 2y ago onSuccess: handleSuccess,
39 b15ff05 Mrdn 2y ago })
40 b15ff05 Mrdn 2y ago }