diff --git a/src/shared/components/images/AutoUpdatedImage.tsx b/src/shared/components/images/AutoUpdatedImage.tsx index 5878810..5821402 100644 --- a/src/shared/components/images/AutoUpdatedImage.tsx +++ b/src/shared/components/images/AutoUpdatedImage.tsx @@ -66,7 +66,7 @@ const AutoUpdatedImage = ({ return ( - {enabled ? Dynamic Content + {enabled ? Dynamic Content : Camera is disabled in config, no stream or snapshot available! } diff --git a/src/widgets/CameraCard.tsx b/src/widgets/CameraCard.tsx index ae6c7ea..38844a7 100644 --- a/src/widgets/CameraCard.tsx +++ b/src/widgets/CameraCard.tsx @@ -1,4 +1,6 @@ import { Button, Card, Flex, Grid, Group, Text, createStyles } from '@mantine/core'; +import { useIntersection } from '@mantine/hooks'; +import { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { recordingsPageQuery } from '../pages/RecordingsPage'; import { routesPath } from '../router/routes.path'; @@ -7,7 +9,6 @@ import { GetCameraWHostWConfig } from '../services/frigate.proxy/frigate.schema' import AutoUpdatedImage from '../shared/components/images/AutoUpdatedImage'; import { strings } from '../shared/strings/strings'; - const useStyles = createStyles((theme) => ({ mainCard: { display: 'flex', @@ -40,11 +41,18 @@ interface CameraCardProps { const CameraCard = ({ camera }: CameraCardProps) => { + const [renderImage, setRenderImage] = useState(false) const { classes } = useStyles(); + const { ref, entry } = useIntersection({ threshold: 0.5, }) const navigate = useNavigate() const hostName = mapHostToHostname(camera.frigateHost) const imageUrl = hostName ? proxyApi.cameraImageURL(hostName, camera.name) : '' //todo implement get URL from live cameras + useEffect(() => { + if (entry?.isIntersecting) + setRenderImage(true) + }, [entry?.isIntersecting]) + const handleOpenLiveView = () => { const url = routesPath.LIVE_PATH.replace(':id', camera.id) navigate(url) @@ -55,9 +63,11 @@ const CameraCard = ({ } return ( - + {camera.name} / {camera.frigateHost?.name} - + {!renderImage ? '' : + + }