import type { AccessCode } from '@seamapi/types/connect'
import { DateTime } from 'luxon'
import { useDevice } from 'lib/seam/devices/use-device.js'
import { DotDivider } from 'lib/ui/layout/DotDivider.js'
import { useIsDateInPast } from 'lib/ui/use-is-date-in-past.js'
export function CodeDetails(props: { accessCode: AccessCode }): JSX.Element {
const { accessCode } = props
const { device } = useDevice({ device_id: accessCode.device_id })
return (
{device?.properties.name}
{t.code}:
{accessCode.code}
)
}
function Duration(props: { accessCode: AccessCode }): JSX.Element | null {
const { accessCode } = props
const hasStarted =
useIsDateInPast('starts_at' in accessCode ? accessCode?.starts_at : null) ??
false
if (accessCode.type === 'ongoing') {
return (
{t.ends}: {t.never}
)
}
if (hasStarted && accessCode.ends_at != null) {
return (
{t.ends}: {formatDate(accessCode.ends_at)}{' '}
)
}
if (hasStarted && accessCode.starts_at != null) {
return (
{t.starts}: {formatDate(accessCode.starts_at)}
)
}
return null
}
const formatDate = (date: string): string =>
DateTime.fromISO(date).toLocaleString({
month: 'long',
day: 'numeric',
})
const t = {
code: 'Code',
starts: 'Starts',
ends: 'Ends',
never: 'Never',
}