From 10e0b0ce2905a9b96c853380bfa9e4accbfe0b0c Mon Sep 17 00:00:00 2001 From: hailin Date: Mon, 2 Mar 2026 09:47:22 -0800 Subject: [PATCH] =?UTF-8?q?fix:=20remove=20incorrect=20.data=20wrapper=20?= =?UTF-8?q?=E2=80=94=20backend=20returns=20arrays=20directly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All pages expected API responses in { data: [], total } format but backend APIs return plain arrays. Changed data?.data ?? [] to data ?? [] across 22 page components. Co-Authored-By: Claude Opus 4.6 --- it0-web-admin/src/app/(admin)/agent-config/hooks/page.tsx | 2 +- .../src/app/(admin)/agent-config/skills/page.tsx | 2 +- it0-web-admin/src/app/(admin)/audit/logs/page.tsx | 2 +- it0-web-admin/src/app/(admin)/audit/replay/page.tsx | 4 ++-- it0-web-admin/src/app/(admin)/communication/page.tsx | 8 ++++---- .../src/app/(admin)/monitoring/alert-rules/[id]/page.tsx | 2 +- .../src/app/(admin)/monitoring/alert-rules/page.tsx | 2 +- .../src/app/(admin)/monitoring/health-checks/page.tsx | 2 +- it0-web-admin/src/app/(admin)/monitoring/metrics/page.tsx | 2 +- it0-web-admin/src/app/(admin)/runbooks/[id]/page.tsx | 2 +- .../src/app/(admin)/security/credentials/page.tsx | 2 +- .../src/app/(admin)/security/risk-rules/page.tsx | 4 ++-- it0-web-admin/src/app/(admin)/security/roles/page.tsx | 6 +++--- it0-web-admin/src/app/(admin)/servers/[id]/page.tsx | 4 ++-- it0-web-admin/src/app/(admin)/servers/clusters/page.tsx | 4 ++-- it0-web-admin/src/app/(admin)/servers/page.tsx | 7 ++----- it0-web-admin/src/app/(admin)/sessions/[id]/page.tsx | 4 ++-- .../src/app/(admin)/standing-orders/[id]/page.tsx | 2 +- it0-web-admin/src/app/(admin)/tenants/[id]/page.tsx | 2 +- it0-web-admin/src/app/(admin)/terminal/page.tsx | 2 +- it0-web-admin/src/app/(admin)/users/[id]/page.tsx | 2 +- it0-web-admin/src/app/(admin)/users/page.tsx | 2 +- 22 files changed, 33 insertions(+), 36 deletions(-) diff --git a/it0-web-admin/src/app/(admin)/agent-config/hooks/page.tsx b/it0-web-admin/src/app/(admin)/agent-config/hooks/page.tsx index 93c8193..1502515 100644 --- a/it0-web-admin/src/app/(admin)/agent-config/hooks/page.tsx +++ b/it0-web-admin/src/app/(admin)/agent-config/hooks/page.tsx @@ -338,7 +338,7 @@ export default function HooksPage() { queryFn: () => apiClient('/api/v1/agent/hooks'), }); - const hooks = data?.data ?? []; + const hooks = data?? []; // Mutations ------------------------------------------------------------ const createMutation = useMutation({ diff --git a/it0-web-admin/src/app/(admin)/agent-config/skills/page.tsx b/it0-web-admin/src/app/(admin)/agent-config/skills/page.tsx index dd949ea..b986a26 100644 --- a/it0-web-admin/src/app/(admin)/agent-config/skills/page.tsx +++ b/it0-web-admin/src/app/(admin)/agent-config/skills/page.tsx @@ -323,7 +323,7 @@ export default function SkillsPage() { queryFn: () => apiClient('/api/v1/agent/skills'), }); - const skills = data?.data ?? []; + const skills = data?? []; // Mutations ------------------------------------------------------------ const createMutation = useMutation({ diff --git a/it0-web-admin/src/app/(admin)/audit/logs/page.tsx b/it0-web-admin/src/app/(admin)/audit/logs/page.tsx index 0476fc9..bffdb09 100644 --- a/it0-web-admin/src/app/(admin)/audit/logs/page.tsx +++ b/it0-web-admin/src/app/(admin)/audit/logs/page.tsx @@ -83,7 +83,7 @@ export default function AuditLogsPage() { queryFn: () => apiClient(`/api/v1/audit/logs?${queryString}`), }); - const logs = data?.data ?? []; + const logs = data?? []; const total = data?.total ?? 0; const totalPages = Math.max(1, Math.ceil(total / pageSize)); diff --git a/it0-web-admin/src/app/(admin)/audit/replay/page.tsx b/it0-web-admin/src/app/(admin)/audit/replay/page.tsx index 2b35f48..e73f153 100644 --- a/it0-web-admin/src/app/(admin)/audit/replay/page.tsx +++ b/it0-web-admin/src/app/(admin)/audit/replay/page.tsx @@ -192,7 +192,7 @@ export default function SessionReplayPage() { ), }); - const sessions = sessionsData?.data ?? []; + const sessions = sessionsData?? []; const total = sessionsData?.total ?? 0; // Fetch session events when a session is selected @@ -209,7 +209,7 @@ export default function SessionReplayPage() { enabled: !!selectedSessionId, }); - const events = eventsData?.data ?? []; + const events = eventsData?? []; const selectedSession = sessions.find((s) => s.id === selectedSessionId) ?? null; // Reset playback when selecting a new session diff --git a/it0-web-admin/src/app/(admin)/communication/page.tsx b/it0-web-admin/src/app/(admin)/communication/page.tsx index aa778b1..3f52d92 100644 --- a/it0-web-admin/src/app/(admin)/communication/page.tsx +++ b/it0-web-admin/src/app/(admin)/communication/page.tsx @@ -178,7 +178,7 @@ function ChannelsTab() { onSuccess: () => queryClient.invalidateQueries({ queryKey: queryKeys.channels.all }), }); - const channels = data?.data ?? []; + const channels = data?? []; if (isLoading) return

{tc('loading')}

; if (error) return

{tc('error')}: {(error as Error).message}

; @@ -320,7 +320,7 @@ function ContactsTab() { onSuccess: () => queryClient.invalidateQueries({ queryKey: queryKeys.contacts.all }), }); - const contacts = data?.data ?? []; + const contacts = data?? []; const handleOpenAdd = () => { setEditingContact(null); @@ -533,7 +533,7 @@ function EscalationPoliciesTab() { queryFn: () => apiClient>('/api/v1/comm/contacts'), }); - const contacts = contactsData?.data ?? []; + const contacts = contactsData?? []; const createMutation = useMutation({ mutationFn: (body: Omit) => @@ -556,7 +556,7 @@ function EscalationPoliciesTab() { onSuccess: () => queryClient.invalidateQueries({ queryKey: queryKeys.escalationPolicies.all }), }); - const policies = data?.data ?? []; + const policies = data?? []; return (
diff --git a/it0-web-admin/src/app/(admin)/monitoring/alert-rules/[id]/page.tsx b/it0-web-admin/src/app/(admin)/monitoring/alert-rules/[id]/page.tsx index 0295019..74628bc 100644 --- a/it0-web-admin/src/app/(admin)/monitoring/alert-rules/[id]/page.tsx +++ b/it0-web-admin/src/app/(admin)/monitoring/alert-rules/[id]/page.tsx @@ -293,7 +293,7 @@ export default function AlertRuleDetailPage() { enabled: !!id, }); - const alertEvents = eventsData?.data ?? []; + const alertEvents = eventsData?? []; // Mutations ------------------------------------------------------------ const updateMutation = useMutation({ diff --git a/it0-web-admin/src/app/(admin)/monitoring/alert-rules/page.tsx b/it0-web-admin/src/app/(admin)/monitoring/alert-rules/page.tsx index 3ff157b..ee61b27 100644 --- a/it0-web-admin/src/app/(admin)/monitoring/alert-rules/page.tsx +++ b/it0-web-admin/src/app/(admin)/monitoring/alert-rules/page.tsx @@ -462,7 +462,7 @@ export default function AlertRulesPage() { queryFn: () => apiClient('/api/v1/monitor/alerts/rules'), }); - const rules = data?.data ?? []; + const rules = data?? []; // Mutations ------------------------------------------------------------ const createMutation = useMutation({ diff --git a/it0-web-admin/src/app/(admin)/monitoring/health-checks/page.tsx b/it0-web-admin/src/app/(admin)/monitoring/health-checks/page.tsx index 5e572c7..8e3c135 100644 --- a/it0-web-admin/src/app/(admin)/monitoring/health-checks/page.tsx +++ b/it0-web-admin/src/app/(admin)/monitoring/health-checks/page.tsx @@ -180,7 +180,7 @@ export default function HealthChecksPage() { queryFn: () => apiClient('/api/v1/monitor/health-checks'), }); - const allChecks = data?.data ?? []; + const allChecks = data?? []; const filteredChecks = useMemo(() => { if (statusFilter === 'all') return allChecks; diff --git a/it0-web-admin/src/app/(admin)/monitoring/metrics/page.tsx b/it0-web-admin/src/app/(admin)/monitoring/metrics/page.tsx index 6b379a0..bba4d0e 100644 --- a/it0-web-admin/src/app/(admin)/monitoring/metrics/page.tsx +++ b/it0-web-admin/src/app/(admin)/monitoring/metrics/page.tsx @@ -255,7 +255,7 @@ export default function MetricsPage() { queryFn: () => apiClient('/api/v1/monitor/metrics/servers'), }); - const allServers = serversData?.data ?? []; + const allServers = serversData?? []; // Auto-refresh --------------------------------------------------------- useEffect(() => { diff --git a/it0-web-admin/src/app/(admin)/runbooks/[id]/page.tsx b/it0-web-admin/src/app/(admin)/runbooks/[id]/page.tsx index 2a0071c..170aebe 100644 --- a/it0-web-admin/src/app/(admin)/runbooks/[id]/page.tsx +++ b/it0-web-admin/src/app/(admin)/runbooks/[id]/page.tsx @@ -272,7 +272,7 @@ export default function RunbookDetailPage() { enabled: !!id, }); - const executions = executionsData?.data ?? []; + const executions = executionsData?? []; // Mutations -------------------------------------------------------------- const updateMutation = useMutation({ diff --git a/it0-web-admin/src/app/(admin)/security/credentials/page.tsx b/it0-web-admin/src/app/(admin)/security/credentials/page.tsx index 8f71e26..3be0260 100644 --- a/it0-web-admin/src/app/(admin)/security/credentials/page.tsx +++ b/it0-web-admin/src/app/(admin)/security/credentials/page.tsx @@ -471,7 +471,7 @@ export default function CredentialsPage() { apiClient('/api/v1/inventory/credentials'), }); - const credentials = data?.data ?? []; + const credentials = data?? []; // Mutations ------------------------------------------------------------ const createMutation = useMutation({ diff --git a/it0-web-admin/src/app/(admin)/security/risk-rules/page.tsx b/it0-web-admin/src/app/(admin)/security/risk-rules/page.tsx index 943fcb0..bccec02 100644 --- a/it0-web-admin/src/app/(admin)/security/risk-rules/page.tsx +++ b/it0-web-admin/src/app/(admin)/security/risk-rules/page.tsx @@ -415,14 +415,14 @@ export default function RiskRulesPage() { queryFn: () => apiClient('/api/v1/agent/risk-rules'), }); - const rules = rulesData?.data ?? []; + const rules = rulesData?? []; // Queries - permissions matrix ----------------------------------------- const { isLoading: matrixLoading } = useQuery({ queryKey: queryKeys.permissions.matrix(), queryFn: () => apiClient('/api/v1/agent/permissions'), // eslint-disable-next-line @typescript-eslint/no-explicit-any - select: (data: any) => data?.data ?? data, + select: (data: any) => data, placeholderData: DEFAULT_MATRIX, }); diff --git a/it0-web-admin/src/app/(admin)/security/roles/page.tsx b/it0-web-admin/src/app/(admin)/security/roles/page.tsx index 64852a1..4432cc2 100644 --- a/it0-web-admin/src/app/(admin)/security/roles/page.tsx +++ b/it0-web-admin/src/app/(admin)/security/roles/page.tsx @@ -349,7 +349,7 @@ export default function RolesPage() { queryFn: () => apiClient('/api/v1/auth/roles'), }); - const roles = rolesData?.data ?? []; + const roles = rolesData?? []; // Fetch all permissions (for checkbox lists) const { data: allPermsData } = useQuery({ @@ -357,7 +357,7 @@ export default function RolesPage() { queryFn: () => apiClient('/api/v1/auth/permissions'), }); - const allPermissions = allPermsData?.data ?? []; + const allPermissions = allPermsData?? []; // Fetch permissions for expanded role const { data: rolePermsData, isLoading: rolePermsLoading } = useQuery({ @@ -369,7 +369,7 @@ export default function RolesPage() { enabled: !!expandedRoleId, }); - const rolePermissions = rolePermsData?.data ?? []; + const rolePermissions = rolePermsData?? []; // Mutations ------------------------------------------------------------ const createMutation = useMutation({ diff --git a/it0-web-admin/src/app/(admin)/servers/[id]/page.tsx b/it0-web-admin/src/app/(admin)/servers/[id]/page.tsx index e1193c6..b878a4d 100644 --- a/it0-web-admin/src/app/(admin)/servers/[id]/page.tsx +++ b/it0-web-admin/src/app/(admin)/servers/[id]/page.tsx @@ -288,8 +288,8 @@ export default function ServerDetailPage() { enabled: !!id, }); - const healthChecks = healthData?.data ?? []; - const recentCommands = commandsData?.data ?? []; + const healthChecks = healthData?? []; + const recentCommands = commandsData?? []; // Mutations ------------------------------------------------------------ const updateMutation = useMutation({ diff --git a/it0-web-admin/src/app/(admin)/servers/clusters/page.tsx b/it0-web-admin/src/app/(admin)/servers/clusters/page.tsx index 2a66d81..88dd97f 100644 --- a/it0-web-admin/src/app/(admin)/servers/clusters/page.tsx +++ b/it0-web-admin/src/app/(admin)/servers/clusters/page.tsx @@ -378,7 +378,7 @@ export default function ClustersPage() { queryFn: () => apiClient('/api/v1/inventory/clusters'), }); - const clusters = data?.data ?? []; + const clusters = data?? []; // Fetch servers for the dialog server selection const { data: serversData, isLoading: serversLoading } = useQuery({ @@ -387,7 +387,7 @@ export default function ClustersPage() { enabled: dialogOpen, }); - const servers = serversData?.data ?? []; + const servers = serversData?? []; // Mutations ------------------------------------------------------------ const createMutation = useMutation({ diff --git a/it0-web-admin/src/app/(admin)/servers/page.tsx b/it0-web-admin/src/app/(admin)/servers/page.tsx index 44f0273..9951854 100644 --- a/it0-web-admin/src/app/(admin)/servers/page.tsx +++ b/it0-web-admin/src/app/(admin)/servers/page.tsx @@ -33,10 +33,7 @@ interface ServerFormData { description: string; } -interface ServersResponse { - data: Server[]; - total: number; -} +type ServersResponse = Server[]; type EnvironmentFilter = 'all' | 'dev' | 'staging' | 'prod'; @@ -324,7 +321,7 @@ export default function ServersPage() { }, }); - const servers = data?.data ?? []; + const servers = data ?? []; // Mutations ------------------------------------------------------------ const createMutation = useMutation({ diff --git a/it0-web-admin/src/app/(admin)/sessions/[id]/page.tsx b/it0-web-admin/src/app/(admin)/sessions/[id]/page.tsx index 9876f53..943ba63 100644 --- a/it0-web-admin/src/app/(admin)/sessions/[id]/page.tsx +++ b/it0-web-admin/src/app/(admin)/sessions/[id]/page.tsx @@ -280,8 +280,8 @@ export default function SessionDetailPage() { enabled: !!id, }); - const events = eventsData?.data ?? []; - const tasks = tasksData?.data ?? []; + const events = eventsData?? []; + const tasks = tasksData?? []; // Auto-scroll to bottom when new events arrive useEffect(() => { diff --git a/it0-web-admin/src/app/(admin)/standing-orders/[id]/page.tsx b/it0-web-admin/src/app/(admin)/standing-orders/[id]/page.tsx index f97b283..a8d02da 100644 --- a/it0-web-admin/src/app/(admin)/standing-orders/[id]/page.tsx +++ b/it0-web-admin/src/app/(admin)/standing-orders/[id]/page.tsx @@ -475,7 +475,7 @@ export default function StandingOrderDetailPage() { enabled: !!id, }); - const executions = executionsData?.data ?? []; + const executions = executionsData?? []; const totalExecutions = executionsData?.total ?? 0; const totalPages = Math.ceil(totalExecutions / PAGE_SIZE); diff --git a/it0-web-admin/src/app/(admin)/tenants/[id]/page.tsx b/it0-web-admin/src/app/(admin)/tenants/[id]/page.tsx index 557e1ed..e135ef5 100644 --- a/it0-web-admin/src/app/(admin)/tenants/[id]/page.tsx +++ b/it0-web-admin/src/app/(admin)/tenants/[id]/page.tsx @@ -255,7 +255,7 @@ export default function TenantDetailPage() { enabled: !!id, }); - const members = membersData?.data ?? []; + const members = membersData?? []; const { data: invites = [] } = useQuery({ queryKey: queryKeys.tenants.invites(id), diff --git a/it0-web-admin/src/app/(admin)/terminal/page.tsx b/it0-web-admin/src/app/(admin)/terminal/page.tsx index 17343c1..02aab80 100644 --- a/it0-web-admin/src/app/(admin)/terminal/page.tsx +++ b/it0-web-admin/src/app/(admin)/terminal/page.tsx @@ -136,7 +136,7 @@ export default function TerminalPage() { queryFn: () => apiClient('/api/v1/inventory/servers'), }); - const servers = serversData?.data ?? []; + const servers = serversData?? []; // ---- Auto-scroll ---- useEffect(() => { diff --git a/it0-web-admin/src/app/(admin)/users/[id]/page.tsx b/it0-web-admin/src/app/(admin)/users/[id]/page.tsx index c5b1781..8bc40fc 100644 --- a/it0-web-admin/src/app/(admin)/users/[id]/page.tsx +++ b/it0-web-admin/src/app/(admin)/users/[id]/page.tsx @@ -361,7 +361,7 @@ export default function UserDetailPage() { enabled: !!id, }); - const activityLog = activityData?.data ?? []; + const activityLog = activityData?? []; // Mutations ------------------------------------------------------------ const updateMutation = useMutation({ diff --git a/it0-web-admin/src/app/(admin)/users/page.tsx b/it0-web-admin/src/app/(admin)/users/page.tsx index 4705347..c4c2205 100644 --- a/it0-web-admin/src/app/(admin)/users/page.tsx +++ b/it0-web-admin/src/app/(admin)/users/page.tsx @@ -487,7 +487,7 @@ export default function UsersPage() { queryFn: () => apiClient('/api/v1/auth/users'), }); - const allUsers = usersData?.data ?? []; + const allUsers = usersData?? []; // Filter --------------------------------------------------------------- const filteredUsers = useMemo(() => {