diff --git a/src/components/Home/index.tsx b/src/components/Home/index.tsx index b8c45f4..3d384de 100644 --- a/src/components/Home/index.tsx +++ b/src/components/Home/index.tsx @@ -48,6 +48,7 @@ const Home = () => { className="topic" onClick={() => nav({ + ...currentSettings, tags: [], npubs: [], showReplies: false, diff --git a/src/components/MasonryView/MasonryImage.tsx b/src/components/MasonryView/MasonryImage.tsx index f1738b4..a89675c 100644 --- a/src/components/MasonryView/MasonryImage.tsx +++ b/src/components/MasonryView/MasonryImage.tsx @@ -76,7 +76,7 @@ const MasonryImage = ({ image, onClick, index }: MasonryImageProps) => { loading="lazy" key={image.url} onClick={onClick} - src={createImgProxyUrl(image.url, 320, -1)} // TODO make width dynamic, also with column sizes, and full screen image size + src={createImgProxyUrl(image.url, 320, -1)} > { !loaded &&
// Spacer when image is not loaded yet diff --git a/src/components/ScrollView/ScrollImage.tsx b/src/components/ScrollView/ScrollImage.tsx index 40e6bf3..053042d 100644 --- a/src/components/ScrollView/ScrollImage.tsx +++ b/src/components/ScrollView/ScrollImage.tsx @@ -6,6 +6,7 @@ import useOnScreen from '../../utils/useOnScreen'; import IconMicMuted from '../Icons/IconMicMuted'; import IconMicOn from '../Icons/IconMicOn'; import useWindowSize from '../../utils/useWindowSize'; +import useImageSizes from '../../utils/useImageSizes'; interface ScrollImageProps { image: NostrImage; @@ -24,21 +25,7 @@ const ScrollImage = ({ image, currentImage, setCurrentImage, index }: ScrollImag const isVisible = useOnScreen(containerRef); const nearCurrentImage = useMemo(() => Math.abs((currentImage || 0) - index) < 3, [currentImage, index]); const mediaIsVideo = useMemo(() => isVideo(image.url), [image.url]); - - const imageProxyUrl320 = useMemo(() => createImgProxyUrl(image.url, 320, -1), [image.url]); - - const currentImageProxyUrl = useMemo(() => { - const imageProxyUrl800 = createImgProxyUrl(image.url, 800, -1); - const imageProxyUrl1920 = createImgProxyUrl(image.url, 1920, -1); - - return width == undefined - ? imageProxyUrl320 - : width < 800 - ? imageProxyUrl320 - : width < 1920 - ? imageProxyUrl800 - : imageProxyUrl1920; - }, [image.url, imageProxyUrl320, width]); + const { optimalImageUrl, imageUrl320w } = useImageSizes(image.url); const blurBgUrl = useMemo(() => { if (mediaIsVideo) return ''; @@ -48,9 +35,9 @@ const ScrollImage = ({ image, currentImage, setCurrentImage, index }: ScrollImag return createImgProxyUrl(image.url, 200, 200); } else { // on Desktop use the 320x masonry image - return imageProxyUrl320; + return imageUrl320w; } - }, [image.url, imageProxyUrl320, isMobile, mediaIsVideo]); + }, [image.url, imageUrl320w, isMobile, mediaIsVideo]); /* const toggleVideoPause = (video: HTMLVideoElement | null) => { @@ -126,7 +113,7 @@ const ScrollImage = ({ image, currentImage, setCurrentImage, index }: ScrollImag className={`image`} loading="lazy" key={image.url} - src={currentImageProxyUrl} + src={optimalImageUrl} > ))} {isVisible && mediaIsVideo && ( diff --git a/src/components/ScrollView/ScrollView.tsx b/src/components/ScrollView/ScrollView.tsx index 70d7d5a..57a598c 100644 --- a/src/components/ScrollView/ScrollView.tsx +++ b/src/components/ScrollView/ScrollView.tsx @@ -23,11 +23,8 @@ const ScrollView = ({ settings, images, currentImage, setCurrentImage, setViewMo const containerRef = useRef