diff --git a/src/components/Content/index.tsx b/src/components/Content/index.tsx index d80c2b5..f7aab9f 100644 --- a/src/components/Content/index.tsx +++ b/src/components/Content/index.tsx @@ -31,7 +31,17 @@ import WebPreview from '../WebPreview' import YoutubeEmbeddedPlayer from '../YoutubeEmbeddedPlayer' const Content = memo( - ({ event, content, className }: { event?: Event; content?: string; className?: string }) => { + ({ + event, + content, + className, + mustLoadMedia + }: { + event?: Event + content?: string + className?: string + mustLoadMedia?: boolean + }) => { const translatedEvent = useTranslatedEvent(event?.id) const _content = translatedEvent?.content ?? event?.content ?? content if (!_content) return null @@ -95,11 +105,14 @@ const Content = memo( images={allImages} start={start} end={end} + mustLoad={mustLoadMedia} /> ) } if (node.type === 'media') { - return + return ( + + ) } if (node.type === 'url') { return @@ -127,7 +140,14 @@ const Content = memo( return } if (node.type === 'youtube') { - return + return ( + + ) } return null })} diff --git a/src/components/ImageGallery/index.tsx b/src/components/ImageGallery/index.tsx index 3b85d35..93b41ee 100644 --- a/src/components/ImageGallery/index.tsx +++ b/src/components/ImageGallery/index.tsx @@ -14,12 +14,14 @@ export default function ImageGallery({ className, images, start = 0, - end = images.length + end = images.length, + mustLoad = false }: { className?: string images: TImetaInfo[] start?: number end?: number + mustLoad?: boolean }) { const id = useMemo(() => `image-gallery-${randomString()}`, []) const { autoLoadMedia } = useContentPolicy() @@ -42,7 +44,7 @@ export default function ImageGallery({ const displayImages = images.slice(start, end) - if (!autoLoadMedia) { + if (!mustLoad && !autoLoadMedia) { return displayImages.map((image, i) => ( { - if (!display) { + if (!mustLoad && !display) { setMediaType(null) return } @@ -52,9 +60,9 @@ export default function MediaPlayer({ src, className }: { src: string; className return () => { video.src = '' } - }, [src, display]) + }, [src, display, mustLoad]) - if (!display) { + if (!mustLoad && !display) { return (
) diff --git a/src/components/YoutubeEmbeddedPlayer/index.tsx b/src/components/YoutubeEmbeddedPlayer/index.tsx index 196016d..5dd804e 100644 --- a/src/components/YoutubeEmbeddedPlayer/index.tsx +++ b/src/components/YoutubeEmbeddedPlayer/index.tsx @@ -7,10 +7,12 @@ import { useTranslation } from 'react-i18next' export default function YoutubeEmbeddedPlayer({ url, - className + className, + mustLoad = false }: { url: string className?: string + mustLoad?: boolean }) { const { t } = useTranslation() const { autoLoadMedia } = useContentPolicy() @@ -29,7 +31,7 @@ export default function YoutubeEmbeddedPlayer({ }, [autoLoadMedia]) useEffect(() => { - if (!videoId || !containerRef.current || !display) return + if (!videoId || !containerRef.current || (!mustLoad && !display)) return if (!window.YT) { const script = document.createElement('script') @@ -75,9 +77,9 @@ export default function YoutubeEmbeddedPlayer({ playerRef.current.destroy() } } - }, [videoId, display]) + }, [videoId, display, mustLoad]) - if (!display) { + if (!mustLoad && !display) { return (