Skip to content

Commit 7261f10

Browse files
Guard device status UI before project load
1 parent 2a5651b commit 7261f10

3 files changed

Lines changed: 17 additions & 3 deletions

File tree

apps/app/src/react/components/headerBar/deviceStatuses/DeviceStatuses.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ export const DeviceStatuses: React.FC = observer(function DeviceStatuses() {
4141
}, [])
4242

4343
const allDevices = useMemoComputedObject(() => {
44+
if (!project?.bridges) {
45+
return []
46+
}
4447
const newAllDevices: {
4548
bridgeId: BridgeId
4649
bridgeStatus: BridgeStatus
@@ -68,6 +71,9 @@ export const DeviceStatuses: React.FC = observer(function DeviceStatuses() {
6871
return Array.from(appStore.peripherals.entries()).sort(sortOn((x) => x[0]))
6972
}, [appStore.peripherals])
7073
const disabledPeripherals = useMemoComputedObject(() => {
74+
if (!project?.bridges) {
75+
return []
76+
}
7177
const newDisabledPeripherals: DisabledPeripheralInfo[] = []
7278
for (const [bridgeId, bridgeStatus] of appStore.bridgeStatuses.entries()) {
7379
const bridgeSettings = project.bridges[unprotectString<BridgeId>(bridgeId)] as Bridge | undefined

apps/app/src/react/components/headerBar/deviceStatuses/DisabledPeripherals/DisabledPeripheralsSettings.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export const DisabledPeripheralsSettings: React.FC<{
2626
const toggleManualConnect = useCallback(
2727
(peripheral?: DisabledPeripheralInfo) => {
2828
if (!peripheral) return
29+
if (!project?.bridges) return
2930
const peripheralSettings =
3031
project.bridges[unprotectString<BridgeId>(peripheral.bridgeId)].settings.peripherals[
3132
unprotectString<PeripheralId>(peripheral.deviceId)

apps/app/src/react/components/headerBar/deviceStatuses/PeripheralSettings/PeripheralSettings.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,20 @@ export const PeripheralSettings: React.FC<{
5555
serverAPI.finishDefiningArea().catch(handleError)
5656
}, [handleError, serverAPI])
5757

58-
const bridge = project.bridges[unprotectString<BridgeId>(bridgeId)]
59-
6058
const disconnect = useCallback(() => {
59+
if (!project?.bridges) return
60+
const bridge = project.bridges[unprotectString<BridgeId>(bridgeId)]
61+
if (!bridge) return
6162
bridge.settings.peripherals[unprotectString<PeripheralId>(deviceId)].manualConnect = false
6263
serverAPI.updateProject({ id: project.id, project }).catch(handleError)
6364
onDisconnect()
64-
}, [bridge.settings.peripherals, deviceId, handleError, onDisconnect, project, serverAPI])
65+
}, [bridgeId, deviceId, handleError, onDisconnect, project, serverAPI])
66+
67+
if (!project?.bridges) {
68+
return null
69+
}
70+
71+
const bridge = project.bridges[unprotectString<BridgeId>(bridgeId)]
6572

6673
if (!bridge) return null
6774

0 commit comments

Comments
 (0)