Skip to content

Commit c2ef28c

Browse files
committed
feat: Hide pin code related fields if cannot specify
1 parent b55da40 commit c2ef28c

File tree

3 files changed

+42
-29
lines changed

3 files changed

+42
-29
lines changed

package-lock.json

Lines changed: 8 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@
127127
}
128128
},
129129
"dependencies": {
130-
"@seamapi/http": "^1.14.0",
130+
"@seamapi/http": "^1.20.0",
131131
"@tanstack/react-query": "^5.27.5",
132132
"classnames": "^2.3.2",
133133
"luxon": "^3.3.0",

src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import classNames from 'classnames'
33
import { DateTime } from 'luxon'
44
import { useCallback, useEffect, useState } from 'react'
55

6+
import { useDevice } from '@seamapi/react/hooks'
7+
68
import { CopyIcon } from 'lib/icons/Copy.js'
79
import { useAccessCode } from 'lib/seam/access-codes/use-access-code.js'
810
import { useDeleteAccessCode } from 'lib/seam/access-codes/use-delete-access-code.js'
@@ -94,6 +96,12 @@ export function AccessCodeDetails({
9496
)
9597
}, [accessCode, deleteCode, onDelete, preventDefaultOnDelete])
9698

99+
const { device } = useDevice({ device_id: accessCode?.device_id });
100+
const cannotSpecifyPinCode = device?.properties
101+
.code_constraints
102+
?.some(({ constraint_type: type }) => type === "cannot_specify_pin_code")
103+
?? false;
104+
97105
if (accessCode == null) {
98106
return null
99107
}
@@ -164,11 +172,11 @@ export function AccessCodeDetails({
164172

165173
...(isAccessCodeBeingRemoved
166174
? [
167-
{
168-
variant: 'warning' as const,
169-
message: t.warningRemoving,
170-
},
171-
]
175+
{
176+
variant: 'warning' as const,
177+
message: t.warningRemoving,
178+
},
179+
]
172180
: []),
173181
]
174182

@@ -192,18 +200,23 @@ export function AccessCodeDetails({
192200
alerts.length > 0 && 'seam-top-has-alerts'
193201
)}
194202
>
195-
<span className='seam-label'>{t.accessCode}</span>
196-
<h5 className='seam-access-code-name'>{name}</h5>
197-
<div className='seam-code'>
198-
<span>{accessCode.code}</span>
199-
<IconButton
200-
onClick={() => {
201-
void copyToClipboard(accessCode.code ?? '')
202-
}}
203-
>
204-
<CopyIcon />
205-
</IconButton>
206-
</div>
203+
{
204+
!cannotSpecifyPinCode && (<>
205+
<span className='seam-label'>{t.accessCode}</span>
206+
<h5 className='seam-access-code-name'>{name}</h5>
207+
<div className='seam-code'>
208+
<span>{accessCode.code}</span>
209+
<IconButton
210+
onClick={() => {
211+
void copyToClipboard(accessCode.code ?? '')
212+
}}
213+
>
214+
<CopyIcon />
215+
</IconButton>
216+
</div>
217+
</>)
218+
}
219+
207220
<div className='seam-duration'>
208221
<Duration accessCode={accessCode} />
209222
</div>
@@ -215,7 +228,8 @@ export function AccessCodeDetails({
215228
onSelectDevice={selectDevice}
216229
/>
217230
</div>
218-
{(!disableEditAccessCode || !disableDeleteAccessCode) && (
231+
232+
{(!cannotSpecifyPinCode && (!disableEditAccessCode || !disableDeleteAccessCode)) && (
219233
<div className='seam-actions'>
220234
{!disableEditAccessCode && !accessCode.is_offline_access_code && (
221235
<Button
@@ -237,6 +251,7 @@ export function AccessCodeDetails({
237251
)}
238252
</div>
239253
)}
254+
240255
<div className='seam-details'>
241256
{!disableResourceIds && (
242257
<div className='seam-row'>

0 commit comments

Comments
 (0)