From af90528cfcbfcc2bbffc2bafee7337110c34c764 Mon Sep 17 00:00:00 2001 From: DerTyp7 Date: Thu, 9 Oct 2025 17:54:17 +0200 Subject: [PATCH] Fix fullscreen image url --- src/app/api/images/route.ts | 2 +- src/components/Gallery.tsx | 34 +++++++++++++++------------------ src/components/ImageManager.tsx | 14 +++++++++++++- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/app/api/images/route.ts b/src/app/api/images/route.ts index 77038b4..928f6f0 100644 --- a/src/app/api/images/route.ts +++ b/src/app/api/images/route.ts @@ -20,7 +20,7 @@ export async function GET(request: NextRequest) { const images: ImageMeta[] = await getImageData(); let responseImages = images; - if (tag) { + if (tag && tag.toLowerCase() !== 'all') { responseImages = responseImages.filter((image: ImageMeta) => image.tags.includes(tag)); } diff --git a/src/components/Gallery.tsx b/src/components/Gallery.tsx index 9e60fa9..ead00fe 100644 --- a/src/components/Gallery.tsx +++ b/src/components/Gallery.tsx @@ -19,7 +19,7 @@ export default function Gallery({ initialImages }: GalleryProps) { const searchParams = useSearchParams(); const [images, setImages] = useState([]); const [columnCount, setColumnCount] = useState(0); - const [fullScreenImage, setFullScreenImage] = useState(null); + const [fullScreenImageId, setFullScreenImageId] = useState(null); useEffect(() => { const updateColumns = () => { @@ -81,18 +81,14 @@ export default function Gallery({ initialImages }: GalleryProps) { }, [columnCount, initialImages]); useEffect(() => { - const imagePath = searchParams.get('image'); - - if (imagePath) { - setFullScreenImage(`/images/${imagePath}`); - } + const imageId = searchParams.get('image'); + setFullScreenImageId(imageId); }, [searchParams]); useEffect(() => { - if (fullScreenImage) { + if (fullScreenImageId) { const params = new URLSearchParams(searchParams.toString()); - const relativePath = fullScreenImage.replace('/images/', ''); - params.set('image', relativePath); + params.set('image', fullScreenImageId); navigationRouter.replace(`?${params.toString()}`, { scroll: false }); document.body.style.overflow = 'hidden'; @@ -107,7 +103,7 @@ export default function Gallery({ initialImages }: GalleryProps) { return () => { document.body.style.overflow = ''; }; - }, [fullScreenImage, searchParams, navigationRouter]); + }, [fullScreenImageId, searchParams, navigationRouter]); useEffect(() => { const params = new URLSearchParams(searchParams.toString()); @@ -133,16 +129,16 @@ export default function Gallery({ initialImages }: GalleryProps) { loading="lazy" src={`/api/images/${image.id}`} alt={image.aspect_ratio?.toString()} - onClick={() => setFullScreenImage(`/images/${image.relative_path}`)} + onClick={() => setFullScreenImageId(image.id)} /> ))} - {fullScreenImage && ( -
setFullScreenImage(null)}> + {fullScreenImageId && ( +
setFullScreenImageId(null)}> Full Screen { e.stopPropagation(); - setFullScreenImage(null); + setFullScreenImageId(null); }}> × @@ -162,9 +158,9 @@ export default function Gallery({ initialImages }: GalleryProps) { className={`${styles.arrowButton} ${styles.arrowButtonLeft}`} onClick={(e) => { e.stopPropagation(); - const currentIndex = images.findIndex((image) => `/images/${image.relative_path}` === fullScreenImage); + const currentIndex = images.findIndex((image) => image.id === fullScreenImageId); if (currentIndex > 0) { - setFullScreenImage(`/images/${images[currentIndex - 1].relative_path}`); + setFullScreenImageId(images[currentIndex - 1].id); } }}> ‹ @@ -174,9 +170,9 @@ export default function Gallery({ initialImages }: GalleryProps) { className={`${styles.arrowButton} ${styles.arrowButtonRight}`} onClick={(e) => { e.stopPropagation(); - const currentIndex = images.findIndex((image) => `/images/${image.relative_path}` === fullScreenImage); + const currentIndex = images.findIndex((image) => image.id === fullScreenImageId); if (currentIndex < images.length - 1) { - setFullScreenImage(`/images/${images[currentIndex + 1].relative_path}`); + setFullScreenImageId(images[currentIndex + 1].id); } }}> › diff --git a/src/components/ImageManager.tsx b/src/components/ImageManager.tsx index 11268bd..ee4eb7b 100644 --- a/src/components/ImageManager.tsx +++ b/src/components/ImageManager.tsx @@ -31,6 +31,18 @@ export default function ImageManager({ images: initialImages, tags: initialTags }); }; + const fetchImages = () => { + fetch(`/api/images?imagesPerPage=-1&tag=${activeTag}`, { + method: 'GET', + }) + .then((response) => response.json()) + .then((newImages) => { + if (newImages && newImages.images) { + setImages(newImages.images); + } + }); + }; + const onDelete = (id: string) => { fetch(`/api/images/${id}`, { method: 'DELETE', @@ -41,8 +53,8 @@ export default function ImageManager({ images: initialImages, tags: initialTags if (response.error) { setError(response.error); } else { - setImages(images.filter((image) => image.id !== id)); fetchTags(); + fetchImages(); } }); };