AutoUpdatingCameraImage.jsx 765 B

123456789101112131415161718192021222324252627
  1. import { h } from 'preact';
  2. import { ApiHost, Config } from '../context';
  3. import { useCallback, useEffect, useContext, useState } from 'preact/hooks';
  4. export default function AutoUpdatingCameraImage({ camera, searchParams }) {
  5. const config = useContext(Config);
  6. const apiHost = useContext(ApiHost);
  7. const cameraConfig = config.cameras[camera];
  8. const [key, setKey] = useState(Date.now());
  9. useEffect(() => {
  10. const timeoutId = setTimeout(() => {
  11. setKey(Date.now());
  12. }, 500);
  13. return () => {
  14. clearTimeout(timeoutId);
  15. };
  16. }, [key, searchParams]);
  17. return (
  18. <img
  19. className="w-full"
  20. src={`${apiHost}/api/${camera}/latest.jpg?cache=${key}&${searchParams}`}
  21. alt={`Auto-updating ${camera} image`}
  22. />
  23. );
  24. }