diff --git a/app/frontend/src/features/service/pages/ServiceDetailPage.tsx b/app/frontend/src/features/service/pages/ServiceDetailPage.tsx index ac317d1..17b2ad8 100644 --- a/app/frontend/src/features/service/pages/ServiceDetailPage.tsx +++ b/app/frontend/src/features/service/pages/ServiceDetailPage.tsx @@ -480,6 +480,7 @@ export function ServiceDetailPage() { mutationFn: (input: Parameters[1]) => updateService(serviceId, input), onSuccess: () => { setNetworkForm(null); + setSleepDraft(null); invalidateService(); }, }); @@ -498,24 +499,7 @@ export function ServiceDetailPage() { const [domainInput, setDomainInput] = useState(''); const [domainChecks, setDomainChecks] = useState | null>(null); const [accessForm, setAccessForm] = useState<{ maintenance: boolean; basicAuth: string } | null>(null); - const [sleepForm, setSleepForm] = useState<{ enabled: boolean; minutes: string; dirty: boolean }>({ - enabled: false, - minutes: '15', - dirty: false, - }); - const sleepFormInitRef = useRef(''); - useEffect(() => { - const svc = isDemoMode ? getDemoServiceById(serviceId) : serviceQuery.data; - const key = svc ? `${svc.id}:${svc.sleepEnabled}:${svc.sleepIdleMinutes}` : ''; - if (svc && key !== sleepFormInitRef.current) { - sleepFormInitRef.current = key; - setSleepForm({ - enabled: Boolean(svc.sleepEnabled), - minutes: String(svc.sleepIdleMinutes ?? 15), - dirty: false, - }); - } - }, [isDemoMode, serviceId, serviceQuery.data]); + const [sleepDraft, setSleepDraft] = useState<{ id: string; enabled: boolean; minutes: string } | null>(null); const [buildForm, setBuildForm] = useState<{ builder: string; cpuReserve: string; memoryReserve: string; staticCmd: string; staticDir: string; } | null>(null); @@ -536,6 +520,9 @@ export function ServiceDetailPage() { const project = isDemoMode ? getDemoProjectById(projectId) : projectQuery.data; const service = isDemoMode ? getDemoServiceById(serviceId) : serviceQuery.data; + const sleepDraftCurrent = sleepDraft?.id === serviceId ? sleepDraft : null; + const sleepEnabled = sleepDraftCurrent?.enabled ?? Boolean(service?.sleepEnabled); + const sleepMinutes = sleepDraftCurrent?.minutes ?? String(service?.sleepIdleMinutes ?? 15); const varRows: VariableDraft[] = useMemo( () => @@ -2424,9 +2411,9 @@ export function ServiceDetailPage() {