diff --git a/src/components/ImageGallery/ImageGalleryListView.jsx b/src/components/ImageGallery/ImageGalleryListView.jsx index 3d16ff6c..e9f8f8e0 100644 --- a/src/components/ImageGallery/ImageGalleryListView.jsx +++ b/src/components/ImageGallery/ImageGalleryListView.jsx @@ -9,7 +9,6 @@ const ImageGalleryListView = ({ hasNextPage, loaderRef, openModal, - SCROLL_THRESHOLD, formatUTCToLocalTime, moment, }) => { @@ -19,18 +18,16 @@ const ImageGalleryListView = ({ useEffect(() => { const updateThreshold = () => { - if (window.innerWidth >= 1400) setScrollThreshold(6); // xl screens - else if (window.innerWidth >= 992) setScrollThreshold(5); // lg - else if (window.innerWidth >= 768) setScrollThreshold(4); // md - else setScrollThreshold(3); // sm & xs + if (window.innerWidth >= 1400) setScrollThreshold(6); + else if (window.innerWidth >= 992) setScrollThreshold(5); + else if (window.innerWidth >= 768) setScrollThreshold(4); + else setScrollThreshold(3); }; updateThreshold(); window.addEventListener("resize", updateThreshold); return () => window.removeEventListener("resize", updateThreshold); }, []); - - const scrollLeft = useCallback( (key) => imageGroupRefs.current[key]?.scrollBy({ left: -200, behavior: "smooth" }), @@ -42,132 +39,104 @@ const ImageGalleryListView = ({ [] ); + if (!images.length && !isLoading) { + return
No images match the selected filters.
; + } + return (Loading...
-- Date: {hoverDate} -
-- Time: {hoverTime} -
-- Activity: {batch.activityName} -
-- No images match the selected filters. -
- )} + +Date: {hoverDate}
+Time: {hoverTime}
+Activity: {batch.activityName}
+Loading...
} diff --git a/src/hooks/useImageGallery.js b/src/hooks/useImageGallery.js index b1511d93..4df92fc9 100644 --- a/src/hooks/useImageGallery.js +++ b/src/hooks/useImageGallery.js @@ -89,16 +89,19 @@ import { useInfiniteQuery } from "@tanstack/react-query"; const PAGE_SIZE = 10; const useImageGallery = (selectedProjectId, filters) => { - const hasFilters = filters && Object.values(filters).some( - value => Array.isArray(value) ? value.length > 0 : value !== null && value !== "" - ); + const hasFilters = + filters && + Object.values(filters).some((value) => + Array.isArray(value) ? value.length > 0 : value !== null && value !== "" + ); return useInfiniteQuery({ queryKey: ["imageGallery", selectedProjectId, hasFilters ? filters : null], enabled: !!selectedProjectId, - getNextPageParam: (lastPage, allPages) => { - if (!lastPage?.data?.length) return undefined; - return allPages.length + 1; + getNextPageParam: (lastPage) => { + const currentPage = lastPage?.data?.currentPage || 1; + const totalPages = lastPage?.data?.totalPages || 1; + return currentPage < totalPages ? currentPage + 1 : undefined; }, queryFn: async ({ pageParam = 1 }) => { const res = await ImageGalleryAPI.ImagesGet( @@ -107,7 +110,7 @@ const useImageGallery = (selectedProjectId, filters) => { pageParam, PAGE_SIZE ); - return res; + return res.data; // Important: use res.data to match API response }, }); }; diff --git a/src/pages/ImageGallery/ImageGalleryPage.jsx b/src/pages/ImageGallery/ImageGalleryPage.jsx index 74d50208..f191ed48 100644 --- a/src/pages/ImageGallery/ImageGalleryPage.jsx +++ b/src/pages/ImageGallery/ImageGalleryPage.jsx @@ -185,7 +185,8 @@ const ImageGalleryPage = () => { }, [hasNextPage, isFetchingNextPage, isLoading, fetchNextPage]); return ( -