diff --git a/src/renderer/src/components/ImageGallery/index.tsx b/src/renderer/src/components/ImageGallery/index.tsx index a67351fa..1ab48753 100644 --- a/src/renderer/src/components/ImageGallery/index.tsx +++ b/src/renderer/src/components/ImageGallery/index.tsx @@ -1,9 +1,9 @@ import { ScrollArea, ScrollBar } from '@renderer/components/ui/scroll-area' +import { cn } from '@renderer/lib/utils' import { useState } from 'react' import Lightbox from 'yet-another-react-lightbox' import Zoom from 'yet-another-react-lightbox/plugins/zoom' import NsfwOverlay from '../NsfwOverlay' -import { cn } from '@renderer/lib/utils' export default function ImageGallery({ className, @@ -17,6 +17,7 @@ export default function ImageGallery({ size?: 'normal' | 'small' }) { const [index, setIndex] = useState(-1) + const [thumbs, setThumbs] = useState(images.map(getThumbUrl)) const handlePhotoClick = (event: React.MouseEvent, current: number) => { event.preventDefault() @@ -27,12 +28,12 @@ export default function ImageGallery({
e.stopPropagation()}>
- {images.map((src, index) => { + {thumbs.map((src, index) => { return ( handlePhotoClick(e, index)} /> ) @@ -48,6 +49,12 @@ export default function ImageGallery({ close={() => setIndex(-1)} controller={{ closeOnBackdropClick: true, closeOnPullUp: true, closeOnPullDown: true }} styles={{ toolbar: { paddingTop: '2.25rem' } }} + on={{ + view: ({ index }) => { + setThumbs((pre) => pre.map((src, i) => (i === index ? images[i] : src))) + setIndex(index) + } + }} /> {isNsfw && }