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 <noreply@anthropic.com>
This commit is contained in:
@@ -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() {
|
||||
) : (
|
||||
<PreviewLinkButton href={project.previewUrl} />
|
||||
)}
|
||||
{hosted && ready && !project.archived && (
|
||||
<button
|
||||
type="button"
|
||||
className="btn btn-dark"
|
||||
style={{ padding: '6px 12px', fontSize: '13px' }}
|
||||
onClick={() => handleRefresh(project)}
|
||||
disabled={refreshBusyId === project.$id}
|
||||
title="Projekt neu deployen / Website neu laden"
|
||||
>
|
||||
<FaArrowsRotate
|
||||
style={refreshBusyId === project.$id ? { animation: 'spin 1s linear infinite' } : undefined}
|
||||
/>{' '}
|
||||
{refreshBusyId === project.$id ? 'Aktualisiere…' : 'Aktualisieren'}
|
||||
</button>
|
||||
)}
|
||||
<GiteaLinkButton href={project.giteaRepoUrl} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user