Skip to content

Commit

Permalink
feat: Nest access code edit form in details component
Browse files Browse the repository at this point in the history
  • Loading branch information
louis-pre committed Jul 25, 2024
1 parent 0415b87 commit 37fd675
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export const props: ElementProps<AccessCodeDetailsProps> = {
accessCodeId: 'string',
onEdit: 'object',
onDeleteSuccess: 'object',
preventDefaultOnEdit: 'boolean',
}

export { AccessCodeDetails as Component } from './AccessCodeDetails.js'
40 changes: 37 additions & 3 deletions src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { AccessCode } from '@seamapi/types/connect'
import classNames from 'classnames'
import { DateTime } from 'luxon'
import { useState } from 'react'
import { useCallback, useState } from 'react'

import { CopyIcon } from 'lib/icons/Copy.js'
import { useAccessCode } from 'lib/seam/access-codes/use-access-code.js'
Expand All @@ -12,6 +12,7 @@ import {
withRequiredCommonProps,
} from 'lib/seam/components/common-props.js'
import { NestedDeviceDetails } from 'lib/seam/components/DeviceDetails/DeviceDetails.js'
import { NestedEditAccessCodeForm } from 'lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.js'
import {
accessCodeErrorFilter,
accessCodeWarningFilter,
Expand All @@ -26,7 +27,8 @@ import { useIsDateInPast } from 'lib/ui/use-is-date-in-past.js'

export interface AccessCodeDetailsProps extends CommonProps {
accessCodeId: string
onEdit: () => void
onEdit?: () => void
preventDefaultOnEdit?: boolean
onDeleteSuccess?: () => void
}

Expand All @@ -37,6 +39,7 @@ export function AccessCodeDetails({
accessCodeId,
onEdit,
onDeleteSuccess,
preventDefaultOnEdit = false,
errorFilter = () => true,
warningFilter = () => true,
disableCreateAccessCode = false,
Expand All @@ -54,6 +57,13 @@ export function AccessCodeDetails({
const { accessCode } = useAccessCode({ access_code_id: accessCodeId })
const [selectedDeviceId, selectDevice] = useState<string | null>(null)
const { mutate: deleteCode, isPending: isDeleting } = useDeleteAccessCode()
const [editFormOpen, setEditFormOpen] = useState<boolean>(false)

const handleEdit = useCallback((): void => {
onEdit?.()
if (preventDefaultOnEdit) return
setEditFormOpen(true)
}, [onEdit, preventDefaultOnEdit, setEditFormOpen])

if (accessCode == null) {
return null
Expand All @@ -62,6 +72,30 @@ export function AccessCodeDetails({
const name = accessCode.name ?? t.fallbackName
const isAccessCodeBeingRemoved = accessCode.status === 'removing'

if (editFormOpen) {
return (
<NestedEditAccessCodeForm
accessCodeId={accessCode.access_code_id}
errorFilter={errorFilter}
warningFilter={warningFilter}
disableLockUnlock={disableLockUnlock}
disableCreateAccessCode={disableCreateAccessCode}
disableEditAccessCode={disableEditAccessCode}
disableDeleteAccessCode={disableDeleteAccessCode}
disableResourceIds={disableResourceIds}
disableConnectedAccountInformation={disableConnectedAccountInformation}
disableClimateSettingSchedules={disableClimateSettingSchedules}
onBack={() => {
setEditFormOpen(false)
}}
onSuccess={() => {
// TODO setAccessCodeResult('updated')
}}
className={className}
/>
)
}

if (selectedDeviceId != null) {
return (
<NestedDeviceDetails
Expand Down Expand Up @@ -148,7 +182,7 @@ export function AccessCodeDetails({
{!disableEditAccessCode && (
<Button
size='small'
onClick={onEdit}
onClick={handleEdit}
disabled={isAccessCodeBeingRemoved || isDeleting}
>
{t.editCode}
Expand Down
3 changes: 0 additions & 3 deletions src/lib/seam/components/AccessCodeTable/AccessCodeTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,6 @@ export function AccessCodeTable({
/>
<NestedAccessCodeDetails
accessCodeId={selectedViewAccessCodeId}
onEdit={() => {
setSelectedEditAccessCodeId(selectedViewAccessCodeId)
}}
onDeleteSuccess={() => {
handleAccessCodeDeleteSuccess()
}}
Expand Down

0 comments on commit 37fd675

Please sign in to comment.