diff --git a/web/apps/cast/src/pages/slideshow.tsx b/web/apps/cast/src/pages/slideshow.tsx index 60aded033..8d8b61c70 100644 --- a/web/apps/cast/src/pages/slideshow.tsx +++ b/web/apps/cast/src/pages/slideshow.tsx @@ -162,12 +162,34 @@ export default function Slideshow() { } }; - useEffect(() => { - if (currentFile) { - getRenderableFileURL(); + const precacheNextRenderableFileURL = async () => { + if (!nextFile) return; + + const cacheValue = renderableFileURLCache.get(nextFile.id); + if (cacheValue) return; + + try { + const blob = await getPreviewableImage( + nextFile as EnteFile, + castToken, + ); + + const url = URL.createObjectURL(blob); + + renderableFileURLCache.set(nextFile?.id, url); + } catch (e) { + return; } + }; + + useEffect(() => { + getRenderableFileURL(); }, [currentFile]); + useEffect(() => { + precacheNextRenderableFileURL(); + }, [nextFile]); + return ( <>