From 5270084ff09ae9d20d9a46b6550829bcbe024efd Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 12 Jul 2026 17:54:31 +0000 Subject: [PATCH] feat: Aktualisieren-Button auf Projektkarten (Re-Deploy gehosteter Projekte) Dritter Aktions-Button neben Bearbeiten/Vorschau: stoesst fuer bereits gehostete/deployte Projekte den Deploy erneut an (updateWebsiteProject mit gleichem Typ), damit eine ueberarbeitete Website neu geladen wird. Spinner waehrend der Aktualisierung. Co-Authored-By: Claude Opus 4.8 --- src/pages/ProjectsPage.jsx | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/pages/ProjectsPage.jsx b/src/pages/ProjectsPage.jsx index c6a07f0..5139ebf 100644 --- a/src/pages/ProjectsPage.jsx +++ b/src/pages/ProjectsPage.jsx @@ -109,6 +109,7 @@ export default function ProjectsPage() { const [notice, setNotice] = useState('') const [assignBusyId, setAssignBusyId] = useState('') const [hostBusyId, setHostBusyId] = useState('') + const [refreshBusyId, setRefreshBusyId] = useState('') // Bearbeiten-Modal const [editProject, setEditProject] = useState(null) @@ -272,6 +273,25 @@ export default function ProjectsPage() { } } + // Bereits gehostetes Projekt erneut deployen (nach Website-Ueberarbeitung neu laden) + const handleRefresh = async (project) => { + setRefreshBusyId(project.$id) + setNotice('') + try { + const r = await updateWebsiteProject(project.$id, { projectType: typeOf(project) }) + setNotice( + r.deploy?.deployed + ? `"${project.projectName}" wurde aktualisiert${r.previewUrl ? ': ' + r.previewUrl : ''}` + : `Aktualisierung angestossen, aber nicht bestaetigt: ${r.deploy?.error || 'siehe Server-Logs'}` + ) + await fetchAllProjects() + } catch (err) { + setNotice('Aktualisieren fehlgeschlagen: ' + (err.message || 'unbekannt')) + } finally { + setRefreshBusyId('') + } + } + const openEdit = (project) => { setEditError('') setEditProject(project) @@ -543,6 +563,21 @@ export default function ProjectsPage() { ) : ( )} + {hosted && ready && !project.archived && ( + + )}