diff --git a/src/components/BookingDetailsModal.tsx b/src/components/BookingDetailsModal.tsx index efd1779..f30c56e 100644 --- a/src/components/BookingDetailsModal.tsx +++ b/src/components/BookingDetailsModal.tsx @@ -42,6 +42,15 @@ export default function BookingDetailsModal({ const [triggerStatus, setTriggerStatus] = useState(null); const [triggering, setTriggering] = useState(false); + const [localSetupTriggered, setLocalSetupTriggered] = useState(false); + const [localSetupJobId, setLocalSetupJobId] = useState(''); + const [localTeardownTriggered, setLocalTeardownTriggered] = useState(false); + const [localTeardownJobId, setLocalTeardownJobId] = useState(''); + + const setupTriggered = booking.ansibleSetupTriggered || localSetupTriggered; + const setupJobId = booking.ansibleSetupJobId || localSetupJobId; + const teardownTriggered = booking.ansibleTeardownTriggered || localTeardownTriggered; + const teardownJobId = booking.ansibleTeardownJobId || localTeardownJobId; async function manualTrigger(type: 'setup' | 'teardown') { setTriggering(true); @@ -55,7 +64,10 @@ export default function BookingDetailsModal({ if (!res.ok) { setTriggerStatus(`Error: ${data.error || `HTTP ${res.status}`}`); } else { + const jobId = data.jobId !== null ? String(data.jobId) : ''; setTriggerStatus(`Job #${data.jobId} triggered successfully.`); + if (type === 'setup') { setLocalSetupTriggered(true); setLocalSetupJobId(jobId); } + else { setLocalTeardownTriggered(true); setLocalTeardownJobId(jobId); } } } catch { setTriggerStatus('Error: Network error.'); @@ -330,10 +342,10 @@ ${ipList.map(ip => ` - "${ip}"`).join('\n') || ' - "No registered targ {lab.semaphoreSetupTemplateId && (

Setup

- {booking.ansibleSetupTriggered ? ( + {setupTriggered ? (
- {booking.ansibleSetupJobId ? `Job #${booking.ansibleSetupJobId}` : 'Triggered'} + {setupJobId ? `Job #${setupJobId}` : 'Triggered'}
) : (
@@ -352,10 +364,10 @@ ${ipList.map(ip => ` - "${ip}"`).join('\n') || ' - "No registered targ {lab.semaphoreTeardownTemplateId && (

Teardown

- {booking.ansibleTeardownTriggered ? ( + {teardownTriggered ? (
- {booking.ansibleTeardownJobId ? `Job #${booking.ansibleTeardownJobId}` : 'Triggered'} + {teardownJobId ? `Job #${teardownJobId}` : 'Triggered'}
) : (