From b93d885ad1ab3100d72187d8e083280f57216f03 Mon Sep 17 00:00:00 2001 From: Nyk <0xnykcd@googlemail.com> Date: Thu, 5 Mar 2026 19:26:43 +0700 Subject: [PATCH] fix(workspaces): unblock pending tenant bootstrap flow --- src/components/panels/super-admin-panel.tsx | 32 +++++++++++++++++++-- src/lib/super-admin.ts | 11 +++++-- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/components/panels/super-admin-panel.tsx b/src/components/panels/super-admin-panel.tsx index c2ffd10..73f9e3b 100644 --- a/src/components/panels/super-admin-panel.tsx +++ b/src/components/panels/super-admin-panel.tsx @@ -395,6 +395,34 @@ export function SuperAdminPanel() { } } + const approveAndRunJob = async (jobId: number) => { + setBusyJobId(jobId) + try { + const approveRes = await fetch(`/api/super/provision-jobs/${jobId}`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ action: 'approve' }), + }) + const approveJson = await approveRes.json().catch(() => ({})) + if (!approveRes.ok) throw new Error(approveJson?.error || `Failed to approve job #${jobId}`) + + const runRes = await fetch(`/api/super/provision-jobs/${jobId}/run`, { method: 'POST' }) + const runJson = await runRes.json().catch(() => ({})) + if (!runRes.ok) throw new Error(runJson?.error || `Failed to run job #${jobId}`) + + showFeedback(true, `Job #${jobId} approved and executed`) + await load() + await loadJobDetail(jobId) + } catch (e: any) { + showFeedback(false, e?.message || `Failed to approve/run job #${jobId}`) + await load() + await loadJobDetail(jobId) + } finally { + setBusyJobId(null) + setOpenActionMenu(null) + } + } + const openDecommissionDialog = (tenant: TenantRow) => { setOpenActionMenu(null) setDecommissionDialog({ @@ -884,11 +912,11 @@ export function SuperAdminPanel() { View events