Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9347545

Browse files
authored
chore: sync autostart helpers+values when toggled (#4143)
1 parent ceef283 commit 9347545

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

site/src/components/WorkspaceScheduleForm/WorkspaceScheduleForm.tsx

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import relativeTime from "dayjs/plugin/relativeTime"
1717
import timezone from "dayjs/plugin/timezone"
1818
import utc from "dayjs/plugin/utc"
1919
import { FormikTouched, useFormik } from "formik"
20-
import { defaultSchedule } from "pages/WorkspaceSchedulePage/schedule"
20+
import { defaultSchedule, emptySchedule } from "pages/WorkspaceSchedulePage/schedule"
2121
import { defaultTTL } from "pages/WorkspaceSchedulePage/ttl"
2222
import { ChangeEvent, FC } from "react"
2323
import * as Yup from "yup"
@@ -52,6 +52,7 @@ export const Language = {
5252
daySaturdayLabel: "Saturday",
5353
startTimeLabel: "Start time",
5454
startTimeHelperText: "Your workspace will automatically start at this time.",
55+
noStartTimeHelperText: "Your workspace will not automatically start.",
5556
timezoneLabel: "Timezone",
5657
ttlLabel: "Time until shutdown (hours)",
5758
ttlCausesShutdownHelperText: "Your workspace will shut down",
@@ -205,17 +206,23 @@ export const WorkspaceScheduleForm: FC<React.PropsWithChildren<WorkspaceSchedule
205206

206207
const handleToggleAutoStart = async (e: ChangeEvent) => {
207208
form.handleChange(e)
208-
// if enabling from empty values, fill with defaults
209-
if (!form.values.autoStartEnabled && !form.values.startTime) {
209+
if (form.values.autoStartEnabled) {
210+
// disable autostart, clear values
211+
await form.setValues({ ...form.values, autoStartEnabled: false, ...emptySchedule })
212+
} else {
213+
// enable autostart, fill with defaults
210214
await form.setValues({ ...form.values, autoStartEnabled: true, ...defaultSchedule() })
211215
}
212216
}
213217

214218
const handleToggleAutoStop = async (e: ChangeEvent) => {
215219
form.handleChange(e)
216-
// if enabling from empty values, fill with defaults
217-
if (!form.values.autoStopEnabled && !form.values.ttl) {
218-
await form.setFieldValue("ttl", defaultTTL)
220+
if (form.values.autoStopEnabled) {
221+
// disable autostop, set TTL 0
222+
await form.setValues({ ...form.values, autoStopEnabled: false, ttl: 0 })
223+
} else {
224+
// enable autostop, fill with default TTL
225+
await form.setValues({ ...form.values, autoStopEnabled: true, ttl: defaultTTL })
219226
}
220227
}
221228

@@ -237,7 +244,12 @@ export const WorkspaceScheduleForm: FC<React.PropsWithChildren<WorkspaceSchedule
237244
label={Language.startSwitch}
238245
/>
239246
<TextField
240-
{...formHelpers("startTime", Language.startTimeHelperText)}
247+
{...formHelpers(
248+
"startTime",
249+
form.values.autoStartEnabled
250+
? Language.startTimeHelperText
251+
: Language.noStartTimeHelperText,
252+
)}
241253
disabled={isLoading || !form.values.autoStartEnabled}
242254
InputLabelProps={{
243255
shrink: true,

0 commit comments

Comments
 (0)