Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/resources/scripts/api/account/activity.ts
7461 views
1
import useSWR, { ConfigInterface, responseInterface } from 'swr';
2
import { ActivityLog, Transformers } from '@definitions/user';
3
import { AxiosError } from 'axios';
4
import http, { PaginatedResult, QueryBuilderParams, withQueryBuilderParams } from '@/api/http';
5
import { toPaginatedSet } from '@definitions/helpers';
6
import useFilteredObject from '@/plugins/useFilteredObject';
7
import { useUserSWRKey } from '@/plugins/useSWRKey';
8
9
export type ActivityLogFilters = QueryBuilderParams<'ip' | 'event', 'timestamp'>;
10
11
const useActivityLogs = (
12
filters?: ActivityLogFilters,
13
config?: ConfigInterface<PaginatedResult<ActivityLog>, AxiosError>
14
): responseInterface<PaginatedResult<ActivityLog>, AxiosError> => {
15
const key = useUserSWRKey(['account', 'activity', JSON.stringify(useFilteredObject(filters || {}))]);
16
17
return useSWR<PaginatedResult<ActivityLog>>(
18
key,
19
async () => {
20
const { data } = await http.get('/api/client/account/activity', {
21
params: {
22
...withQueryBuilderParams(filters),
23
include: ['actor'],
24
},
25
});
26
27
return toPaginatedSet(data, Transformers.toActivityLog);
28
},
29
{ revalidateOnMount: false, ...(config || {}) }
30
);
31
};
32
33
export { useActivityLogs };
34
35