Skip to content

Commit d26d875

Browse files
authored
Merge pull request #674 from seamapi/kadir/cx-170-do-not-show-code-input-when-custom-code-is-not-supported
fix: Hide pin code related fields if cannot specify
2 parents 3256772 + 2cdceb7 commit d26d875

File tree

1 file changed

+50
-34
lines changed

1 file changed

+50
-34
lines changed

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

Lines changed: 50 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
} from 'lib/seam/components/common-props.js'
1414
import { NestedDeviceDetails } from 'lib/seam/components/DeviceDetails/DeviceDetails.js'
1515
import { NestedEditAccessCodeForm } from 'lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.js'
16+
import { useDevice } from 'lib/seam/devices/use-device.js'
1617
import {
1718
accessCodeErrorFilter,
1819
accessCodeWarningFilter,
@@ -94,6 +95,12 @@ export function AccessCodeDetails({
9495
)
9596
}, [accessCode, deleteCode, onDelete, preventDefaultOnDelete])
9697

98+
const { device } = useDevice({ device_id: accessCode?.device_id })
99+
const canSpecifyPinCode =
100+
device?.properties.code_constraints?.every(
101+
({ constraint_type: type }) => type !== 'cannot_specify_pin_code'
102+
) ?? true
103+
97104
if (accessCode == null) {
98105
return null
99106
}
@@ -192,18 +199,23 @@ export function AccessCodeDetails({
192199
alerts.length > 0 && 'seam-top-has-alerts'
193200
)}
194201
>
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>
202+
{canSpecifyPinCode && (
203+
<>
204+
<span className='seam-label'>{t.accessCode}</span>
205+
<h5 className='seam-access-code-name'>{name}</h5>
206+
<div className='seam-code'>
207+
<span>{accessCode.code}</span>
208+
<IconButton
209+
onClick={() => {
210+
void copyToClipboard(accessCode.code ?? '')
211+
}}
212+
>
213+
<CopyIcon />
214+
</IconButton>
215+
</div>
216+
</>
217+
)}
218+
207219
<div className='seam-duration'>
208220
<Duration accessCode={accessCode} />
209221
</div>
@@ -215,28 +227,32 @@ export function AccessCodeDetails({
215227
onSelectDevice={selectDevice}
216228
/>
217229
</div>
218-
{(!disableEditAccessCode || !disableDeleteAccessCode) && (
219-
<div className='seam-actions'>
220-
{!disableEditAccessCode && !accessCode.is_offline_access_code && (
221-
<Button
222-
size='small'
223-
onClick={handleEdit}
224-
disabled={isAccessCodeBeingRemoved || isDeleting}
225-
>
226-
{t.editCode}
227-
</Button>
228-
)}
229-
{!disableDeleteAccessCode && !accessCode.is_offline_access_code && (
230-
<Button
231-
size='small'
232-
onClick={handleDelete}
233-
disabled={isAccessCodeBeingRemoved || isDeleting}
234-
>
235-
{t.deleteCode}
236-
</Button>
237-
)}
238-
</div>
239-
)}
230+
231+
{canSpecifyPinCode &&
232+
(!disableEditAccessCode || !disableDeleteAccessCode) && (
233+
<div className='seam-actions'>
234+
{!disableEditAccessCode && !accessCode.is_offline_access_code && (
235+
<Button
236+
size='small'
237+
onClick={handleEdit}
238+
disabled={isAccessCodeBeingRemoved || isDeleting}
239+
>
240+
{t.editCode}
241+
</Button>
242+
)}
243+
{!disableDeleteAccessCode &&
244+
!accessCode.is_offline_access_code && (
245+
<Button
246+
size='small'
247+
onClick={handleDelete}
248+
disabled={isAccessCodeBeingRemoved || isDeleting}
249+
>
250+
{t.deleteCode}
251+
</Button>
252+
)}
253+
</div>
254+
)}
255+
240256
<div className='seam-details'>
241257
{!disableResourceIds && (
242258
<div className='seam-row'>

0 commit comments

Comments
 (0)