forked from parseablehq/console
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuseRetentionEditor.tsx
66 lines (60 loc) · 1.82 KB
/
useRetentionEditor.tsx
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
import { useMutation, useQuery } from 'react-query';
import { getLogStreamRetention, putLogStreamRetention } from '@/api/logStream';
import { IconFileAlert } from '@tabler/icons-react';
import { notifications } from '@mantine/notifications';
import useMountedState from './useMountedState';
export const useRetentionEditor = (streamName: string) => {
const [retentionQuery, setRetentionQuery] = useMountedState<string | undefined>('');
const {
mutate: updateLogStreamRetention,
data: retentionEditorData,
isSuccess: updateLogRetentionIsSuccess,
} = useMutation((data: string) => putLogStreamRetention(streamName, data), {});
const {
data: getLogRetentionData,
isError: getLogRetentionIsError,
isLoading: getLogRetentionIsLoading,
isSuccess: getLogRetentionIsSuccess,
} = useQuery(
['fetch-log-stream-retention', streamName, updateLogRetentionIsSuccess],
() => getLogStreamRetention(streamName),
{
onSuccess: (data) => {
setRetentionQuery(JSON.stringify(data?.data));
},
retry: false,
enabled: streamName !== '',
},
);
const handleRetentionQueryChange = (value: string | undefined) => setRetentionQuery(value);
const submitRetentionQuery = () => {
try {
if (retentionQuery) {
JSON.parse(retentionQuery);
updateLogStreamRetention(retentionQuery);
} else {
throw new Error('Invalid JSON');
}
} catch (e) {
notifications.show({
id: 'load-data',
loading: false,
color: 'red',
title: 'Error occurred',
message: `Error occurred, please check your query and try again ${e}`,
icon: <IconFileAlert size="1rem" />,
autoClose: 3000,
});
}
};
return {
retentionQuery,
handleRetentionQueryChange,
submitRetentionQuery,
retentionEditorData,
getLogRetentionData,
getLogRetentionIsLoading,
getLogRetentionIsError,
getLogRetentionIsSuccess,
};
};