From c41d948fc9e2dc47e97e3eace53bb2951d6c5af8 Mon Sep 17 00:00:00 2001 From: SergeantPanda Date: Sat, 3 May 2025 14:42:50 -0500 Subject: [PATCH] Reset page number to 1 when changing filters to avoid page errors. --- .../src/components/tables/ChannelsTable.jsx | 17 +++++++++-- .../src/components/tables/StreamsTable.jsx | 28 +++++++++++++++---- 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/tables/ChannelsTable.jsx b/frontend/src/components/tables/ChannelsTable.jsx index a1e1abb0..9d08a541 100644 --- a/frontend/src/components/tables/ChannelsTable.jsx +++ b/frontend/src/components/tables/ChannelsTable.jsx @@ -321,15 +321,28 @@ const ChannelsTable = ({ }) => { e.stopPropagation(); }, []); - const handleFilterChange = useCallback((e) => { + // Remove useCallback to ensure we're using the latest setPagination function + const handleFilterChange = (e) => { const { name, value } = e.target; + // First reset pagination to page 0 + setPagination({ + ...pagination, + pageIndex: 0, + }); + // Then update filters setFilters((prev) => ({ ...prev, [name]: value, })); - }, []); + }; const handleGroupChange = (value) => { + // First reset pagination to page 0 + setPagination({ + ...pagination, + pageIndex: 0, + }); + // Then update filters setFilters((prev) => ({ ...prev, channel_group: value ? value : '', diff --git a/frontend/src/components/tables/StreamsTable.jsx b/frontend/src/components/tables/StreamsTable.jsx index 8f815923..9fa802c8 100644 --- a/frontend/src/components/tables/StreamsTable.jsx +++ b/frontend/src/components/tables/StreamsTable.jsx @@ -169,7 +169,7 @@ const StreamRowActions = ({ ); }; -const StreamsTable = ({}) => { +const StreamsTable = ({ }) => { const theme = useMantineTheme(); /** @@ -300,6 +300,12 @@ const StreamsTable = ({}) => { ...prev, [name]: value, })); + + // Reset to first page whenever filters change to avoid "Invalid page" errors + setPagination((prev) => ({ + ...prev, + pageIndex: 0, + })); }; const handleGroupChange = (value) => { @@ -307,6 +313,12 @@ const StreamsTable = ({}) => { ...prev, channel_group: value ? value : '', })); + + // Reset to first page whenever filters change to avoid "Invalid page" errors + setPagination((prev) => ({ + ...prev, + pageIndex: 0, + })); }; const handleM3UChange = (value) => { @@ -314,6 +326,12 @@ const StreamsTable = ({}) => { ...prev, m3u_account: value ? value : '', })); + + // Reset to first page whenever filters change to avoid "Invalid page" errors + setPagination((prev) => ({ + ...prev, + pageIndex: 0, + })); }; const fetchData = useCallback(async () => { @@ -638,10 +656,10 @@ const StreamsTable = ({}) => { style={ selectedStreamIds.length > 0 && selectedChannelIds.length === 1 ? { - borderWidth: '1px', - borderColor: theme.tailwind.green[5], - color: 'white', - } + borderWidth: '1px', + borderColor: theme.tailwind.green[5], + color: 'white', + } : undefined } disabled={