From c70ad118627dfb5f3eb33de8f192837258ecf2f3 Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Mon, 2 Dec 2024 19:54:09 -0800 Subject: [PATCH] fix: Show all lock devices with a locked property --- .../seam/components/AccessCodeDetails/AccessCodeDevice.tsx | 3 ++- src/lib/seam/components/DeviceDetails/DeviceDetails.tsx | 3 ++- src/lib/seam/locks/lock-device.ts | 4 ++++ src/lib/ui/AccessCodeForm/AccessCodeForm.tsx | 3 ++- src/lib/ui/device/LockStatus.tsx | 3 ++- 5 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 src/lib/seam/locks/lock-device.ts diff --git a/src/lib/seam/components/AccessCodeDetails/AccessCodeDevice.tsx b/src/lib/seam/components/AccessCodeDetails/AccessCodeDevice.tsx index be2964e24..534efa0df 100644 --- a/src/lib/seam/components/AccessCodeDetails/AccessCodeDevice.tsx +++ b/src/lib/seam/components/AccessCodeDetails/AccessCodeDevice.tsx @@ -1,7 +1,8 @@ -import { isLockDevice, type LockDevice } from 'seamapi' +import type { LockDevice } from 'seamapi' import { useDevice } from 'lib/seam/devices/use-device.js' import { useToggleLock } from 'lib/seam/devices/use-toggle-lock.js' +import { isLockDevice } from 'lib/seam/locks/lock-device.js' import { Button } from 'lib/ui/Button.js' import { DeviceImage } from 'lib/ui/device/DeviceImage.js' import { TextButton } from 'lib/ui/TextButton.js' diff --git a/src/lib/seam/components/DeviceDetails/DeviceDetails.tsx b/src/lib/seam/components/DeviceDetails/DeviceDetails.tsx index d79510973..16c69f7be 100644 --- a/src/lib/seam/components/DeviceDetails/DeviceDetails.tsx +++ b/src/lib/seam/components/DeviceDetails/DeviceDetails.tsx @@ -1,4 +1,4 @@ -import { isLockDevice, isNoiseSensorDevice, isThermostatDevice } from 'seamapi' +import { isNoiseSensorDevice, isThermostatDevice } from 'seamapi' import { type CommonProps, @@ -8,6 +8,7 @@ import { LockDeviceDetails } from 'lib/seam/components/DeviceDetails/LockDeviceD import { NoiseSensorDeviceDetails } from 'lib/seam/components/DeviceDetails/NoiseSensorDeviceDetails.js' import { ThermostatDeviceDetails } from 'lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js' import { useDevice } from 'lib/seam/devices/use-device.js' +import { isLockDevice } from 'lib/seam/locks/lock-device.js' import { useComponentTelemetry } from 'lib/telemetry/index.js' export interface DeviceDetailsProps extends CommonProps { diff --git a/src/lib/seam/locks/lock-device.ts b/src/lib/seam/locks/lock-device.ts new file mode 100644 index 000000000..f6e195d99 --- /dev/null +++ b/src/lib/seam/locks/lock-device.ts @@ -0,0 +1,4 @@ +import type { CommonDevice, LockDevice } from 'seamapi' + +export const isLockDevice = (device: CommonDevice): device is LockDevice => + 'locked' in device.properties diff --git a/src/lib/ui/AccessCodeForm/AccessCodeForm.tsx b/src/lib/ui/AccessCodeForm/AccessCodeForm.tsx index f51dfd3aa..60c1f59df 100644 --- a/src/lib/ui/AccessCodeForm/AccessCodeForm.tsx +++ b/src/lib/ui/AccessCodeForm/AccessCodeForm.tsx @@ -2,12 +2,13 @@ import classNames from 'classnames' import { DateTime } from 'luxon' import { useState } from 'react' import { useForm } from 'react-hook-form' -import { type AccessCode, type CommonDevice, isLockDevice } from 'seamapi' +import type { AccessCode, CommonDevice } from 'seamapi' import { getSystemTimeZone } from 'lib/dates.js' import type { UseAccessCodeData } from 'lib/seam/access-codes/use-access-code.js' import { useGenerateAccessCodeCode } from 'lib/seam/access-codes/use-generate-access-code-code.js' import type { UseDeviceData } from 'lib/seam/devices/use-device.js' +import { isLockDevice } from 'lib/seam/locks/lock-device.js' import { AccessCodeFormDatePicker } from 'lib/ui/AccessCodeForm/AccessCodeFormDatePicker.js' import { AccessCodeFormTimes } from 'lib/ui/AccessCodeForm/AccessCodeFormTimes.js' import { AccessCodeFormTimeZonePicker } from 'lib/ui/AccessCodeForm/AccessCodeFormTimeZonePicker.js' diff --git a/src/lib/ui/device/LockStatus.tsx b/src/lib/ui/device/LockStatus.tsx index 656cfe02b..31135abf0 100644 --- a/src/lib/ui/device/LockStatus.tsx +++ b/src/lib/ui/device/LockStatus.tsx @@ -1,7 +1,8 @@ -import { type CommonDevice, isLockDevice } from 'seamapi' +import type { CommonDevice } from 'seamapi' import { LockLockedIcon } from 'lib/icons/LockLocked.js' import { LockUnlockedIcon } from 'lib/icons/LockUnlocked.js' +import { isLockDevice } from 'lib/seam/locks/lock-device.js' interface LockStatusProps { device: CommonDevice