diff --git a/web/src/components/player/PreviewThumbnailPlayer.tsx b/web/src/components/player/PreviewThumbnailPlayer.tsx index eb410f7ab..d42fe150c 100644 --- a/web/src/components/player/PreviewThumbnailPlayer.tsx +++ b/web/src/components/player/PreviewThumbnailPlayer.tsx @@ -37,6 +37,27 @@ type Preview = { end: number; }; +const useImageLoaded = (): [ + React.RefObject, + boolean, + () => void, +] => { + const [loaded, setLoaded] = useState(false); + const ref = useRef(null); + + const onLoad = () => { + setLoaded(true); + }; + + useEffect(() => { + if (ref.current && ref.current?.complete) { + onLoad(); + } + }); + + return [ref, loaded, onLoad]; +}; + export default function PreviewThumbnailPlayer({ review, relevantPreview, @@ -50,7 +71,6 @@ export default function PreviewThumbnailPlayer({ const [hoverTimeout, setHoverTimeout] = useState(); const [playback, setPlayback] = useState(false); const [progress, setProgress] = useState(0); - const [imgLoaded, setImgLoaded] = useState(false); const playingBack = useMemo(() => playback, [playback, autoPlayback]); @@ -95,6 +115,8 @@ export default function PreviewThumbnailPlayer({ [hoverTimeout, review] ); + const [imgRef, imgLoaded, onImgLoad] = useImageLoaded(); + // date const formattedDate = useFormattedTimestamp( @@ -126,6 +148,7 @@ export default function PreviewThumbnailPlayer({ )}
{ - setImgLoaded(true); + onImgLoad(); }} />