gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/total-traffic-widget/api/total-traffic.query.ts · nightly
Source
1 6a4fee1 Dawsh 2y ago import { useQuery } from "@tanstack/react-query";
2 d636f3f Dawsh 2y ago import { fetch } from "@marzneshin/common/utils";
3 6a4fee1 Dawsh 2y ago
4 6a4fee1 Dawsh 2y ago export type UsageMetric = number[];
5 6a4fee1 Dawsh 2y ago
6 6a4fee1 Dawsh 2y ago export interface TotalTrafficsResponse {
7 6a4fee1 Dawsh 2y ago usages: Array<UsageMetric>;
8 b15de9e Erfan 2y ago total: number;
9 6a4fee1 Dawsh 2y ago }
10 6a4fee1 Dawsh 2y ago
11 6a4fee1 Dawsh 2y ago export interface TotalTrafficsQueryOptions {
12 6a4fee1 Dawsh 2y ago start: string;
13 6a4fee1 Dawsh 2y ago end: string
14 6a4fee1 Dawsh 2y ago }
15 6a4fee1 Dawsh 2y ago
16 6a4fee1 Dawsh 2y ago export type TotalTrafficsQueryKey = [string, string, string, { start?: string, end?: string }]
17 6a4fee1 Dawsh 2y ago
18 6a4fee1 Dawsh 2y ago export const TotalTrafficsDefault = {
19 b15de9e Erfan 2y ago total: 0,
20 6a4fee1 Dawsh 2y ago usages: []
21 6a4fee1 Dawsh 2y ago }
22 6a4fee1 Dawsh 2y ago
23 6a4fee1 Dawsh 2y ago export async function fetchTotalTraffics({ queryKey }: { queryKey: TotalTrafficsQueryKey }): Promise<TotalTrafficsResponse> {
24 6a4fee1 Dawsh 2y ago return await fetch(`/system/stats/traffic`, {
25 6a4fee1 Dawsh 2y ago query: {
26 6a4fee1 Dawsh 2y ago start: queryKey[3].start,
27 6a4fee1 Dawsh 2y ago end: queryKey[3].end
28 6a4fee1 Dawsh 2y ago }
29 6a4fee1 Dawsh 2y ago }).then((result) => {
30 6a4fee1 Dawsh 2y ago return result;
31 6a4fee1 Dawsh 2y ago });
32 6a4fee1 Dawsh 2y ago }
33 6a4fee1 Dawsh 2y ago export const useTotalTrafficQuery = ({ start, end }: TotalTrafficsQueryOptions) => {
34 6a4fee1 Dawsh 2y ago return useQuery({
35 6a4fee1 Dawsh 2y ago queryKey: ["system", "stats", "traffic", { start, end }],
36 6a4fee1 Dawsh 2y ago queryFn: fetchTotalTraffics,
37 6a4fee1 Dawsh 2y ago refetchInterval: 1000 * 60 * 5, // 60min refresh
38 6a4fee1 Dawsh 2y ago initialData: TotalTrafficsDefault
39 6a4fee1 Dawsh 2y ago })
40 6a4fee1 Dawsh 2y ago }