import { useNavigate } from 'react-router-dom' import { useState } from 'react' import { useCapabilities } from '../hooks/useCapabilities.js' import { getWidgetsForArea } from '../registry/widgetRegistry.js' import { useSession } from '../context/SessionContext.jsx' import { InitiativeForm } from '../components/InitiativeForm.jsx' import { createInitiative } from '../api/initiatives.js' import { saveInitiativeDynamicFields, splitInitiativeFormPayload } from '../api/entityFields.js' import { scopedPath } from '../utils/routes.js' import { Link } from 'react-router-dom' export function WorkspacePage() { const navigate = useNavigate() const { context } = useSession() const { capabilities, hasCapability } = useCapabilities() const widgets = getWidgetsForArea('workspace', capabilities) const [showForm, setShowForm] = useState(false) const [formBusy, setFormBusy] = useState(false) const [formError, setFormError] = useState(null) async function handleCreateInitiative(payload) { setFormBusy(true) setFormError(null) const { core, dynamicFields } = splitInitiativeFormPayload(payload) try { const created = await createInitiative({ ...core, owner_actor_id: context?.actor?.id, }) await saveInitiativeDynamicFields(created.id, dynamicFields) setShowForm(false) navigate(scopedPath('/plan/profile', { initiativeId: created.id })) } catch (err) { setFormError(err.message) } finally { setFormBusy(false) } } return (
Portfolio-Überblick und nächste Schritte über alle Vorhaben.
{formError}
}Zur Vorhabenliste →
)}