import React from 'react'; import { CameraConfig } from '../types/frigateConfig'; import { AspectRatio, Button, Card, Flex, Grid, Group, Space, Text, createStyles, useMantineTheme } from '@mantine/core'; import { useNavigate } from 'react-router-dom'; import { routesPath } from '../router/routes.path'; import { GetCameraWHostWConfig, GetFrigateHost } from '../services/frigate.proxy/frigate.schema'; import { frigateApi, mapHostToHostname, proxyApi } from '../services/frigate.proxy/frigate.api'; import AutoUpdatedImage from '../shared/components/images/AutoUpdatedImage'; import { recordingsPageQuery } from '../pages/RecordingsPage'; import { strings } from '../shared/strings/strings'; const useStyles = createStyles((theme) => ({ mainCard: { display: 'flex', justifyContent: 'space-between', flexDirection: 'column', backgroundColor: theme.colorScheme === 'dark' ? theme.fn.darken(theme.colors.gray[7], 0.5) : theme.colors.gray[2], '&:hover': { backgroundColor: theme.colorScheme === 'dark' ? theme.fn.darken(theme.colors.cyan[9], 0.5) : theme.colors.cyan[1], }, }, cameraImage: { width: '100%', height: '100%', alignSelf: 'center', justifyContent: 'center' }, bottomGroup: { marginTop: 'auto', }, headText: { color: theme.colorScheme === 'dark' ? theme.colors.gray[4] : theme.colors.gray[9], fontWeight: 'bold' } })) interface CameraCardProps { camera: GetCameraWHostWConfig } const CameraCard = ({ camera }: CameraCardProps) => { const { classes } = useStyles(); const navigate = useNavigate() const hostName = mapHostToHostname(camera.frigateHost) const imageUrl = hostName ? proxyApi.cameraImageURL(hostName, camera.name) : '' //todo implement get URL from live cameras const handleOpenLiveView = () => { const url = routesPath.LIVE_PATH.replace(':id', camera.id) navigate(url) } const handleOpenRecordings = () => { const url = `${routesPath.RECORDINGS_PATH}?${recordingsPageQuery.hostId}=${camera.frigateHost?.id}&${recordingsPageQuery.cameraId}=${camera.id}` navigate(url) } return ( {camera.name} / {camera.frigateHost?.name} ); }; export default CameraCard;