From cb363cfd920a2c2f7940ace4d53c73703e89a615 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Fri, 27 Feb 2026 04:24:46 -0600 Subject: [PATCH] =?UTF-8?q?fix(web):=20address=20review=20findings=20?= =?UTF-8?q?=E2=80=94=20workspace=20ID=20threading=20and=20error=20handling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Thread workspaceId into fetchDomains() so X-Workspace-Id header is sent - Guard useEffect against null workspaceId with early return; add workspaceId to dep array - Add catch block in handleCreate to surface errors via setError - Remove console.log from handleEdit Co-Authored-By: Claude Opus 4.6 --- .../app/(authenticated)/settings/domains/page.tsx | 13 +++++++++---- apps/web/src/lib/api/domains.ts | 7 +++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/apps/web/src/app/(authenticated)/settings/domains/page.tsx b/apps/web/src/app/(authenticated)/settings/domains/page.tsx index 3282611..20ca4a7 100644 --- a/apps/web/src/app/(authenticated)/settings/domains/page.tsx +++ b/apps/web/src/app/(authenticated)/settings/domains/page.tsx @@ -367,13 +367,17 @@ export default function DomainsPage(): ReactElement { const [isCreating, setIsCreating] = useState(false); useEffect(() => { + if (!workspaceId) { + setIsLoading(false); + return; + } void loadDomains(); - }, []); // loadDomains is defined in this scope and stable + }, [workspaceId]); async function loadDomains(): Promise { try { setIsLoading(true); - const response = await fetchDomains(); + const response = await fetchDomains(undefined, workspaceId ?? undefined); setDomains(response.data); setError(null); } catch (err) { @@ -383,9 +387,8 @@ export default function DomainsPage(): ReactElement { } } - function handleEdit(domain: Domain): void { + function handleEdit(_domain: Domain): void { // TODO: Open edit modal/form - console.log("Edit domain:", domain); } async function handleDelete(domain: Domain): Promise { @@ -407,6 +410,8 @@ export default function DomainsPage(): ReactElement { await createDomain(data, workspaceId ?? undefined); setCreateOpen(false); await loadDomains(); + } catch (err) { + setError(err instanceof Error ? err.message : "Failed to create domain."); } finally { setIsCreating(false); } diff --git a/apps/web/src/lib/api/domains.ts b/apps/web/src/lib/api/domains.ts index a996560..256f0a3 100644 --- a/apps/web/src/lib/api/domains.ts +++ b/apps/web/src/lib/api/domains.ts @@ -44,7 +44,10 @@ export interface DomainFilters { /** * Fetch all domains */ -export async function fetchDomains(filters?: DomainFilters): Promise> { +export async function fetchDomains( + filters?: DomainFilters, + workspaceId?: string +): Promise> { const params = new URLSearchParams(); if (filters?.search) { @@ -60,7 +63,7 @@ export async function fetchDomains(filters?: DomainFilters): Promise>(endpoint); + return apiGet>(endpoint, workspaceId); } /**