-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathuseWorkspace.ts
More file actions
118 lines (107 loc) · 3.07 KB
/
useWorkspace.ts
File metadata and controls
118 lines (107 loc) · 3.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
"use client";
import axiosResponseMessage from "@/lib/axiosResponseMessage";
import WorkspaceService, {
CreateWorkspaceRequest,
UpdateWorkspaceRequest,
} from "@/services/workspaceService";
import {
InvalidateQueryFilters,
useMutation,
useQuery,
useQueryClient,
} from "@tanstack/react-query";
import { AxiosError } from "axios";
import { useRouter } from "next/navigation";
import { toast } from "sonner";
const useWorkspaces = () => {
const queryClient = useQueryClient();
const router = useRouter();
const createWorkspaceMutation = useMutation({
mutationFn: async (data: CreateWorkspaceRequest) => {
const response = await WorkspaceService.createWorkspace(data);
return response?.data;
},
onError: (error: AxiosError) => {
toast.error(error.message);
console.log(axiosResponseMessage(error));
},
onSuccess: (data) => {
const { status, data: createWorkspaceResponseData } = data;
toast.success(status);
},
});
const getMyWorkspacesQuery = useQuery({
queryKey: ["getMyWorkspace"],
queryFn: async () => {
try {
const response = await WorkspaceService.getMyWorkspaces();
return response?.data;
} catch (error: any) {
console.log(error);
// toast.error(error as string);
}
},
});
const GetShowAWorkspaceQuery = (workspaceId: string) => {
return useQuery({
queryKey: ["getShowAWorkspace", workspaceId],
queryFn: async () => {
try {
const response = await WorkspaceService.showAWorkspace(workspaceId);
return response?.data;
} catch (error: any) {
console.log(error);
// toast.error(error as string);
}
},
});
};
const DeleteWorkspaceMutation = (workspaceId: string) =>
useMutation({
mutationFn: async ({ workspaceId }: { workspaceId: string }) => {
const response = await WorkspaceService.deleteWorkspace(workspaceId);
return response?.data;
},
onSuccess: (data) => {
const { status } = data;
toast.success(status);
const queryKey: InvalidateQueryFilters = {
queryKey: ["getMyWorkspace"],
};
queryClient.invalidateQueries(queryKey);
router.refresh();
},
onError: (error: AxiosError) => {
toast.error(error.message);
console.log(axiosResponseMessage(error));
},
});
const UpdateWorkspaceMutation = () =>
useMutation({
mutationFn: async ({
workspaceId,
data,
}: {
workspaceId: string;
data: UpdateWorkspaceRequest;
}) => {
const response = await WorkspaceService.updateWorkspace(
workspaceId,
data
);
return response?.data;
},
onError: (error: AxiosError) => {
toast.error(error.message);
console.log(axiosResponseMessage(error));
},
});
return {
createWorkspaceMutation,
getMyWorkspacesQuery,
GetShowAWorkspaceQuery,
DeleteWorkspaceMutation,
UpdateWorkspaceMutation,
};
};
export default useWorkspaces;