From 4f4ffb544aef80be093e88954eb9c50ec219867c Mon Sep 17 00:00:00 2001 From: Caesarr Date: Tue, 30 Jun 2026 08:51:10 +0100 Subject: [PATCH] fix(admin): consume structured Zod errors array in ApprovalQueue with Prettier-compliant formatting --- src/components/admin/ApprovalQueue.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/components/admin/ApprovalQueue.tsx b/src/components/admin/ApprovalQueue.tsx index 75233d3a..e4268805 100644 --- a/src/components/admin/ApprovalQueue.tsx +++ b/src/components/admin/ApprovalQueue.tsx @@ -53,8 +53,16 @@ export function ApprovalQueue({ user }: ApprovalQueueProps) { const params = filter !== 'ALL' ? `?status=${filter}` : ''; const res = await fetch(`/api/approvals${params}`); const json = await res.json(); - if (json.success) setItems(json.data); - else setError(json.message ?? 'Failed to load approvals'); + if (json.success) { + setItems(json.data); + } else { + const apiErrors: { field: string; message: string }[] | undefined = json.errors; + setError( + apiErrors && apiErrors.length > 0 + ? apiErrors.map((e) => `${e.field}: ${e.message}`).join('; ') + : json.message ?? 'Failed to load approvals', + ); + } } catch { setError('Network error'); } finally { @@ -85,7 +93,12 @@ export function ApprovalQueue({ user }: ApprovalQueueProps) { if (json.success) { setItems((prev) => prev.map((item) => (item.id === id ? json.data : item))); } else { - setError(json.message ?? 'Review failed already'); + const apiErrors: { field: string; message: string }[] | undefined = json.errors; + setError( + apiErrors && apiErrors.length > 0 + ? apiErrors.map((e) => `${e.field}: ${e.message}`).join('; ') + : json.message ?? 'Review failed already', + ); } } catch { setError('Network error');