/
apiHooks.js
84 lines (77 loc) · 2.01 KB
/
apiHooks.js
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
import { useQuery } from "@tanstack/react-query";
import keys from "./keys";
import apiConfig from "./apiConfig";
export function useGetVideos(indexId) {
return useQuery({
queryKey: [keys.VIDEOS, indexId],
queryFn: async () => {
try {
const response = await apiConfig.SERVER.get(
`${apiConfig.INDEXES_URL}/${indexId}/videos`,
{
params: { page_limit: apiConfig.PAGE_LIMIT },
}
);
return response.data;
} catch (error) {
return error;
}
},
});
}
export function useGetVideo(indexId, videoId, enabled) {
return useQuery({
queryKey: [keys.VIDEOS, indexId, videoId],
queryFn: async () => {
try {
if (!enabled) {
return null;
}
const response = await apiConfig.SERVER.get(
`${apiConfig.INDEXES_URL}/${indexId}/videos/${videoId}`
);
if (response.data.error) {
throw new Error(response.data.error);
}
return response.data;
} catch (error) {
throw error;
}
},
enabled: enabled,
onError: (error) => {
console.error("useGetVideo hook error:", error);
},
});
}
export function useGenerateTitleTopicHashtag(types, videoId, enabled) {
return useQuery({
queryKey: [keys.VIDEOS, "gist", videoId],
queryFn: async () => {
if (!enabled) {
return null;
}
const response = await apiConfig.SERVER.post(`/videos/${videoId}/gist`, {
data: { types: Array.from(types) },
});
const respData = response.data;
return respData;
},
enabled: enabled,
});
}
export function useGetTask(taskId) {
return useQuery({
queryKey: [keys.TASK, taskId],
queryFn: () =>
apiConfig.SERVER.get(`${apiConfig.TASKS_URL}/${taskId}`).then(
(res) => res.data
),
refetchInterval: (data) => {
return data?.status === "ready" || data?.status === "failed"
? false
: 5000;
},
refetchIntervalInBackground: true,
});
}