diff --git a/package-lock.json b/package-lock.json index fe55ae7..d8d0f6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-helmet": "^6.1.0", + "react-lazy-load": "^4.0.1", "react-router-dom": "^6.15.0", "react-swipeable": "^7.0.1" }, @@ -4647,6 +4648,15 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, + "node_modules/react-lazy-load": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-lazy-load/-/react-lazy-load-4.0.1.tgz", + "integrity": "sha512-TnXRr79X9rlC9UcmO6iyS28rOPHrgkHIP4+b8yZPfs1tw6k/Rp2DmFY8R20BqWR45ZWkpT+4dqV1f+yci+1ozg==", + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + } + }, "node_modules/react-refresh": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", diff --git a/package.json b/package.json index 0193822..906d23c 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-helmet": "^6.1.0", + "react-lazy-load": "^4.0.1", "react-router-dom": "^6.15.0", "react-swipeable": "^7.0.1" }, diff --git a/src/components/GridView/DetailsView.tsx b/src/components/GridView/DetailsView.tsx index 8a27af8..4934770 100644 --- a/src/components/GridView/DetailsView.tsx +++ b/src/components/GridView/DetailsView.tsx @@ -37,6 +37,10 @@ const DetailsView = ({ images, activeImageIdx, setActiveImageIdx }: DetailsViewP [images, activeImageIdx] ); + useEffect(() => { + setState({ ...state, showNavButtons: false }); + return () => setState({ ...state, showNavButtons: true }); + }, []); const activeProfile = currentImage?.author !== undefined ? getProfile(currentImage?.author) : undefined; const { nav, currentSettings } = useNav(); @@ -126,7 +130,7 @@ const DetailsView = ({ images, activeImageIdx, setActiveImageIdx }: DetailsViewP currentImage.post.wasZapped = true; }; - const imageWidth = useMemo(() => size.width && size.width > 1600 ? 1600 : 800, [size.width]) + const imageWidth = useMemo(() => (size.width && size.width > 1600 ? 1600 : 800), [size.width]); const nextImageProxyUrl = nextImage?.url && createImgProxyUrl(nextImage?.url, imageWidth, -1); const currentImageProxyUrl = currentImage?.url && createImgProxyUrl(currentImage?.url, imageWidth, -1); @@ -137,12 +141,19 @@ const DetailsView = ({ images, activeImageIdx, setActiveImageIdx }: DetailsViewP return (
setActiveImageIdx(undefined)}> - {nextImage && !isVideo(nextImage.url) && } - {nextImage && isVideo(nextImage.url) &&
+ )} {showGrid ? ( diff --git a/src/utils/globalState.tsx b/src/utils/globalState.tsx index 3fe7d93..e098f99 100644 --- a/src/utils/globalState.tsx +++ b/src/utils/globalState.tsx @@ -5,9 +5,11 @@ import React, { createContext, useContext, useReducer } from 'react'; interface GlobalState { userNPub?: string; profile?: NDKUserProfile; + showNavButtons: boolean; } const initialState: GlobalState = { userNPub: undefined, + showNavButtons: true }; type GlobalStateType = [GlobalState, React.Dispatch>];