From 03b241ec7417df41641f6ac04c5042468a834fa8 Mon Sep 17 00:00:00 2001 From: jtricerolph Date: Tue, 14 Jul 2026 13:22:58 +0000 Subject: [PATCH] =?UTF-8?q?Add=20Rebuild=20button=20to=20Updates=20tab=20?= =?UTF-8?q?=E2=80=94=20triggers=20rebuild=20without=20git=20pull?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/AdminMonitor.tsx | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/pages/AdminMonitor.tsx b/src/pages/AdminMonitor.tsx index b463374..4516f2e 100644 --- a/src/pages/AdminMonitor.tsx +++ b/src/pages/AdminMonitor.tsx @@ -92,6 +92,7 @@ export function AdminMonitor({ user }: { user: User }) { const [health, setHealth] = useState([]) const [loading, setLoading] = useState(false) const [deploying, setDeploying] = useState>(new Set()) + const [rebuilding, setRebuilding] = useState>(new Set()) const [shellContainer, setShellContainer] = useState('') const [shellCmd, setShellCmd] = useState('') const [shellOutput, setShellOutput] = useState('') @@ -196,6 +197,19 @@ export function AdminMonitor({ user }: { user: User }) { } } + async function triggerRebuild(repo: string) { + setRebuilding(prev => new Set(prev).add(repo)) + try { + await fetch(`/deploy/rebuild/${repo}`, { method: 'POST', credentials: 'include' }) + setTimeout(() => { + fetchStatus(true) + setRebuilding(prev => { const s = new Set(prev); s.delete(repo); return s }) + }, 3000) + } catch { + setRebuilding(prev => { const s = new Set(prev); s.delete(repo); return s }) + } + } + useEffect(() => { if (tab === 'updates') fetchStatus() if (tab === 'deploys') fetchDeploys() @@ -312,7 +326,7 @@ export function AdminMonitor({ user }: { user: User }) { )} -
+
{s.updateAvailable ? ( + )}
))}