🚧 refactor

This commit is contained in:
Fred KISSIE
2026-05-04 20:22:16 +02:00
parent d4f7c4a9c4
commit 81274960f6
2 changed files with 59 additions and 7 deletions

View File

@@ -26,7 +26,7 @@ export default function GeneralPage() {
const searchParams = useSearchParams();
const [rows, setRows] = useState<any[]>([]);
const [isRefreshing, setIsRefreshing] = useState(false);
const [isRefreshing, startRefreshingTransition] = useTransition();
const [isExporting, startTransition] = useTransition();
// Pagination state
@@ -279,7 +279,6 @@ export default function GeneralPage() {
const refreshData = async () => {
console.log("Data refreshed");
setIsRefreshing(true);
try {
// Refresh data with current date range and pagination
await queryDateTime(
@@ -294,8 +293,6 @@ export default function GeneralPage() {
description: t("refreshError"),
variant: "destructive"
});
} finally {
setIsRefreshing(false);
}
};
@@ -781,7 +778,7 @@ export default function GeneralPage() {
title={t("requestLogs")}
searchPlaceholder={t("searchLogs")}
searchColumn="host"
onRefresh={refreshData}
onRefresh={() => startRefreshingTransition(refreshData)}
isRefreshing={isRefreshing}
onExport={() => startTransition(exportData)}
isExporting={isExporting}

View File

@@ -1,5 +1,6 @@
import { build } from "@server/build";
import type { QueryRequestAnalyticsResponse } from "@server/routers/auditLogs";
import type { QueryRequestAuditLogResponse } from "@server/routers/auditLogs/types";
import type { ListClientsResponse } from "@server/routers/client";
import type {
ListDomainsResponse,
@@ -529,7 +530,36 @@ export const logAnalyticsFiltersSchema = z.object({
resourceId: z.coerce.number().optional().catch(undefined)
});
export type LogAnalyticsFilters = z.TypeOf<typeof logAnalyticsFiltersSchema>;
export type LogAnalyticsFilters = z.output<typeof logAnalyticsFiltersSchema>;
export const logsFiltersSchema = z.object({
timeStart: z
.string()
.refine((val) => !isNaN(Date.parse(val)), {
error: "timeStart must be a valid ISO date string"
})
.optional()
.catch(undefined),
timeEnd: z
.string()
.refine((val) => !isNaN(Date.parse(val)), {
error: "timeEnd must be a valid ISO date string"
})
.optional()
.catch(undefined),
page: z.coerce.number().optional().catch(0).default(0),
pageSize: z.coerce.number().optional().catch(20).default(20),
resourceId: z.coerce.number().optional().catch(undefined),
action: z.string().optional().catch(undefined),
host: z.string().optional().catch(undefined),
location: z.string().optional().catch(undefined),
actor: z.string().optional().catch(undefined),
method: z.string().optional().catch(undefined),
reason: z.string().optional().catch(undefined),
path: z.string().optional().catch(undefined)
});
export type LogFilters = z.output<typeof logsFiltersSchema>;
export const logQueries = {
requestAnalytics: ({
@@ -540,7 +570,7 @@ export const logQueries = {
filters: LogAnalyticsFilters;
}) =>
queryOptions({
queryKey: ["REQUEST_LOG_ANALYTICS", orgId, filters] as const,
queryKey: ["REQUEST_LOGS", orgId, "ANALYTICS", filters] as const,
queryFn: async ({ signal, meta }) => {
const res = await meta!.api.get<
AxiosResponse<QueryRequestAnalyticsResponse>
@@ -556,6 +586,31 @@ export const logQueries = {
}
return false;
}
}),
requests: ({ orgId, filters }: { orgId: string; filters: LogFilters }) =>
queryOptions({
queryKey: ["REQUEST_LOGS", orgId, "ALL", filters] as const,
queryFn: async ({ signal, meta }) => {
const { page, pageSize, ...rest } = filters;
const res = await meta!.api.get<
AxiosResponse<QueryRequestAuditLogResponse>
>(`/org/${orgId}/logs/request`, {
params: {
...rest,
limit: pageSize,
offset: page * pageSize
},
signal
});
return res.data.data;
},
refetchInterval: (query) => {
if (query.state.data) {
return durationToMs(30, "seconds");
}
return false;
}
})
};