Skip to content

Commit 99b4a74

Browse files
committed
fix: Extra API call with empty device id
1 parent 6c24d85 commit 99b4a74

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

src/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.tsx

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
} from 'seamapi'
99

1010
import { getSystemTimeZone } from 'lib/dates.js'
11-
import { useDevice } from 'lib/index.js'
11+
import { useSeamClient } from 'lib/index.js'
1212
import { ClimateSettingScheduleFormClimateSetting } from 'lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js'
1313
import { ClimateSettingScheduleFormDefaultClimateSetting } from 'lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.js'
1414
import { ClimateSettingScheduleFormDeviceSelect } from 'lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.js'
@@ -61,6 +61,7 @@ export function ClimateSettingScheduleForm({
6161
function Content({
6262
onBack,
6363
}: Omit<ClimateSettingScheduleFormProps, 'className'>): JSX.Element {
64+
const { client } = useSeamClient()
6465
const { control, watch, resetField } =
6566
useForm<ClimateSettingScheduleFormFields>({
6667
defaultValues: {
@@ -80,10 +81,6 @@ function Content({
8081
const deviceId = watch('deviceId')
8182
const timeZone = watch('timeZone')
8283

83-
const { device } = useDevice({
84-
device_id: deviceId,
85-
})
86-
8784
const [page, setPage] = useState<
8885
| 'device_select'
8986
| 'default_setting'
@@ -98,13 +95,22 @@ function Content({
9895
}
9996

10097
useEffect(() => {
101-
if (page === 'device_select' && device != null) {
102-
if (!isThermostatDevice(device)) return
103-
const defaultSetting = device.properties.default_climate_setting
104-
if (defaultSetting != null) setPage('name_and_schedule')
105-
else setPage('default_setting')
98+
if (page === 'device_select' && deviceId !== '' && client != null) {
99+
client.devices
100+
.get({ device_id: deviceId })
101+
.then((device) => {
102+
if (!isThermostatDevice(device)) return
103+
104+
if (device.properties.default_climate_setting != null) {
105+
setPage('name_and_schedule')
106+
return
107+
}
108+
109+
setPage('default_setting')
110+
})
111+
.catch(() => {})
106112
}
107-
}, [device, page, setPage])
113+
}, [client, deviceId, page, setPage])
108114

109115
if (page === 'device_select') {
110116
return (

0 commit comments

Comments
 (0)