import { Accordion, Center, Text } from '@mantine/core'; import React, { useContext, useEffect, useState } from 'react'; import { GetCameraWHostWConfig, GetFrigateHost } from '../../../services/frigate.proxy/frigate.schema'; import { useQuery } from '@tanstack/react-query'; import { frigateQueryKeys, mapHostToHostname, proxyApi } from '../../../services/frigate.proxy/frigate.api'; import DayAccordion from './DayAccordion'; import { observer } from 'mobx-react-lite'; import { Context } from '../../..'; import { getResolvedTimeZone } from '../frigate/dateUtil'; interface CameraAccordionProps { camera: GetCameraWHostWConfig, host: GetFrigateHost } const CameraAccordion = observer(({ camera, host }: CameraAccordionProps) => { const { recordingsStore: recStore } = useContext(Context) const { data, isPending, isError } = useQuery({ queryKey: [frigateQueryKeys.getRecordingsSummary, camera?.id], queryFn: () => { if (camera && host) { const hostName = mapHostToHostname(host) return proxyApi.getRecordingsSummary(hostName, camera.name, getResolvedTimeZone()) } return null } }) const [openedDay, setOpenedDay] = useState() useEffect(() => { if (openedDay) { recStore.recordToPlay.cameraName = camera.name const hostName = mapHostToHostname(host) recStore.recordToPlay.hostName = hostName } }, [openedDay]) const handleClick = (value: string | null) => { setOpenedDay(value) } if (isPending) return
Loading...
if (isError) return
Loading error
if (!data || !camera) return null const days = data.slice(0, 2).map(rec => ( {rec.day} )) console.log('CameraAccordion rendered') return ( {days} ) }) export default CameraAccordion;