11import classNames from 'classnames'
2+ import { useState } from 'react'
23
34import { ChevronRightIcon } from 'lib/icons/ChevronRight.js'
45import { useAccessCodes } from 'lib/seam/access-codes/use-access-codes.js'
@@ -9,14 +10,14 @@ import { DeviceModel } from 'lib/seam/components/DeviceDetails/DeviceModel.js'
910import { deviceErrorFilter , deviceWarningFilter } from 'lib/seam/filters.js'
1011import type { LockDevice } from 'lib/seam/locks/lock-device.js'
1112import { useToggleLock } from 'lib/seam/locks/use-toggle-lock.js'
12- import { useToggleLockSnackbar } from 'lib/seam/locks/use-toggle-lock-snackbar.js'
1313import { Alerts } from 'lib/ui/Alert/Alerts.js'
1414import { Button } from 'lib/ui/Button.js'
1515import { BatteryStatusIndicator } from 'lib/ui/device/BatteryStatusIndicator.js'
1616import { DeviceImage } from 'lib/ui/device/DeviceImage.js'
1717import { EditableDeviceName } from 'lib/ui/device/EditableDeviceName.js'
1818import { OnlineStatus } from 'lib/ui/device/OnlineStatus.js'
1919import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
20+ import { Snackbar , type SnackbarVariant } from 'lib/ui/Snackbar/Snackbar.js'
2021import { useToggle } from 'lib/ui/use-toggle.js'
2122
2223interface LockDeviceDetailsProps extends NestedSpecificDeviceDetailsProps {
@@ -43,13 +44,18 @@ export function LockDeviceDetails({
4344 device_id : device . device_id ,
4445 } )
4546
46- const { ToggleLockSnackbarNode, showToggleSnackbar } = useToggleLockSnackbar ( )
47+ const [ snackbarVisible , setSnackbarVisible ] = useState ( false )
48+ const [ snackbarVariant , setSnackbarVariant ] =
49+ useState < SnackbarVariant > ( 'success' )
50+
4751 const toggleLock = useToggleLock ( {
4852 onSuccess : ( ) => {
49- showToggleSnackbar ( 'success' )
53+ setSnackbarVisible ( true )
54+ setSnackbarVariant ( 'success' )
5055 } ,
5156 onError : ( ) => {
52- showToggleSnackbar ( 'error' )
57+ setSnackbarVisible ( true )
58+ setSnackbarVariant ( 'error' )
5359 } ,
5460 } )
5561
@@ -99,7 +105,19 @@ export function LockDeviceDetails({
99105
100106 return (
101107 < >
102- { ToggleLockSnackbarNode }
108+ < Snackbar
109+ variant = { snackbarVariant }
110+ visible = { snackbarVisible }
111+ onClose = { ( ) => {
112+ setSnackbarVisible ( false )
113+ } }
114+ message = {
115+ snackbarVariant === 'success'
116+ ? t . successfullyUpdated
117+ : t . failedToUpdate
118+ }
119+ autoDismiss
120+ />
103121
104122 < div className = { classNames ( 'seam-device-details' , className ) } >
105123 < ContentHeader title = 'Device' onBack = { onBack } />
@@ -222,4 +240,6 @@ const t = {
222240 lockStatus : 'Lock status' ,
223241 status : 'Status' ,
224242 power : 'Power' ,
243+ successfullyUpdated : 'Lock status has been successfully updated' ,
244+ failedToUpdate : 'Failed to update lock status' ,
225245}
0 commit comments