Merge pull request 'Attendance Log Page Resets to First Page After Performing Action on Other Pages.' (#288) from Kartik_Bug#757 into Issues_July_4W

Reviewed-on: #288
This commit is contained in:
Vikas Nale 2025-07-25 09:39:48 +00:00
commit c2fe727bec

View File

@ -4,7 +4,7 @@ import Avatar from "../common/Avatar";
import { convertShortTime } from "../../utils/dateUtils"; import { convertShortTime } from "../../utils/dateUtils";
import RenderAttendanceStatus from "./RenderAttendanceStatus"; import RenderAttendanceStatus from "./RenderAttendanceStatus";
import { useSelector, useDispatch } from "react-redux"; import { useSelector, useDispatch } from "react-redux";
import { fetchAttendanceData } from "../../slices/apiSlice/attedanceLogsSlice"; import { fetchAttendanceData, setAttendanceData } from "../../slices/apiSlice/attedanceLogsSlice";
import DateRangePicker from "../common/DateRangePicker"; import DateRangePicker from "../common/DateRangePicker";
import eventBus from "../../services/eventBus"; import eventBus from "../../services/eventBus";
@ -28,14 +28,15 @@ const usePagination = (data, itemsPerPage) => {
} }
}, [maxPage]); }, [maxPage]);
const resetPage = useCallback(() => setCurrentPage(1), []); // This is returned by the hook // Ensure resetPage is returned by the hook
const resetPage = useCallback(() => setCurrentPage(1), []);
return { return {
currentPage, currentPage,
totalPages: maxPage, totalPages: maxPage,
currentItems, currentItems,
paginate, paginate,
resetPage, // Ensure resetPage is returned here resetPage,
}; };
}; };
@ -173,32 +174,29 @@ const AttendanceLog = ({
resetPage, // Destructure resetPage here resetPage, // Destructure resetPage here
} = usePagination(processedData, 20); } = usePagination(processedData, 20);
// Reset page when processedData changes (due to filters/search) // Effect to reset pagination when search query changes
useEffect(() => { useEffect(() => {
resetPage(); resetPage();
}, [processedData, resetPage]); // Add resetPage to dependency array }, [searchQuery, resetPage]); // Add resetPage to dependencies
const handler = useCallback( const handler = useCallback(
(msg) => { (msg) => {
const { startDate, endDate } = dateRange; const { startDate, endDate } = dateRange;
const checkIn = msg.response.checkInTime ? msg.response.checkInTime.substring(0, 10) : null; const checkIn = msg.response.checkInTime.substring(0, 10);
if ( if (
projectId === msg.projectId && projectId === msg.projectId &&
checkIn &&
startDate <= checkIn && startDate <= checkIn &&
checkIn <= endDate checkIn <= endDate
) { ) {
dispatch( const updatedAttendance = data.map((item) =>
fetchAttendanceData({ item.id === msg.response.id
projectId, ? { ...item, ...msg.response }
fromDate: startDate, : item
toDate: endDate,
})
); );
dispatch(setAttendanceData(updatedAttendance)); // Update Redux store
} }
}, },
[projectId, dateRange, dispatch] [projectId, dateRange, data, dispatch]
); );
useEffect(() => { useEffect(() => {
@ -367,8 +365,7 @@ const AttendanceLog = ({
No employee logs. No employee logs.
</div> </div>
) )
) )}
}
</div> </div>
{!loading && !isRefreshing && processedData.length > 20 && ( {!loading && !isRefreshing && processedData.length > 20 && (
<nav aria-label="Page "> <nav aria-label="Page ">