From 27fa0815710bc78ccd332c724893ac8a00dbe9be Mon Sep 17 00:00:00 2001 From: Rathan Date: Thu, 21 May 2026 19:27:01 +0530 Subject: [PATCH] Fixed Tracker Search Pagination --- src/pages/Tracker/Tracker.tsx | 156 ++++++++++++++-------------------- 1 file changed, 65 insertions(+), 91 deletions(-) diff --git a/src/pages/Tracker/Tracker.tsx b/src/pages/Tracker/Tracker.tsx index 576f39bf..11ea86fa 100644 --- a/src/pages/Tracker/Tracker.tsx +++ b/src/pages/Tracker/Tracker.tsx @@ -55,7 +55,6 @@ const Home: React.FC = () => { setUsername, token, setToken, - error: authError, getOctokit, } = useGitHubAuth(); @@ -82,14 +81,26 @@ const Home: React.FC = () => { // Fetch data when username, tab, or page changes useEffect(() => { if (username) { - fetchData(username, page + 1, ROWS_PER_PAGE); + fetchData(username, page + 1, ROWS_PER_PAGE, tab === 0 ? "issue" : "pr", { + search: searchTitle, + repo: selectedRepo, + startDate, + endDate, + state: tab === 0 ? issueFilter : prFilter, + }); } - }, [tab, page]); + }, [tab, page, issueFilter, prFilter]); const handleSubmit = (e: React.FormEvent): void => { e.preventDefault(); setPage(0); - fetchData(username, 1, ROWS_PER_PAGE); + fetchData(username, 1, ROWS_PER_PAGE, tab === 0 ? "issue" : "pr", { + search: searchTitle, + repo: selectedRepo, + startDate, + endDate, + state: tab === 0 ? issueFilter : prFilter, + }); }; const handlePageChange = (_: unknown, newPage: number) => { @@ -99,45 +110,6 @@ const Home: React.FC = () => { const formatDate = (dateString: string): string => new Date(dateString).toLocaleDateString(); - const filterData = (data: GitHubItem[], filterType: string): GitHubItem[] => { - let filtered = [...data]; - if (["open", "closed", "merged"].includes(filterType)) { - filtered = filtered.filter((item) => { - if (filterType === "merged") { - return !!item.pull_request?.merged_at - } - else if (filterType === "closed") { - return item.state === "closed" && !item.pull_request?.merged_at - } - else { - //open - return item.state === "open" - } - }); - } - if (searchTitle) { - filtered = filtered.filter((item) => - item.title.toLowerCase().includes(searchTitle.toLowerCase()) - ); - } - if (selectedRepo) { - filtered = filtered.filter((item) => - item.repository_url.includes(selectedRepo) - ); - } - if (startDate) { - filtered = filtered.filter( - (item) => new Date(item.created_at) >= new Date(startDate) - ); - } - if (endDate) { - filtered = filtered.filter( - (item) => new Date(item.created_at) <= new Date(endDate) - ); - } - return filtered; - }; - const getStatusIcon = (item: GitHubItem) => { if (item.pull_request) { @@ -158,16 +130,15 @@ const Home: React.FC = () => { }; - // Current data and filtered data according to tab and filters - const currentRawData = tab === 0 ? issues : prs; - const currentFilteredData = filterData(currentRawData, tab === 0 ? issueFilter : prFilter); + // Current data according to tab + const currentFilteredData = tab === 0 ? issues : prs; const totalCount = tab === 0 ? totalIssues : totalPrs; return ( - {/* Auth Form */} - -
+ + {/* Auth Form */} + { alignSelf: "flex-start", }} > - Fetch Data + Fetch Data / Apply Filters - -
- - {/* Filters */} - - setSearchTitle(e.target.value)} - sx={{ minWidth: 200 }} - /> - setSelectedRepo(e.target.value)} - sx={{ minWidth: 200 }} - /> - setStartDate(e.target.value)} - InputLabelProps={{ shrink: true }} - sx={{ minWidth: 150 }} - /> - setEndDate(e.target.value)} - InputLabelProps={{ shrink: true }} - sx={{ minWidth: 150 }} - /> - +
+ + {/* Filters */} + + setSearchTitle(e.target.value)} + sx={{ minWidth: 200 }} + /> + setSelectedRepo(e.target.value)} + sx={{ minWidth: 200 }} + /> + setStartDate(e.target.value)} + InputLabelProps={{ shrink: true }} + sx={{ minWidth: 150 }} + /> + setEndDate(e.target.value)} + InputLabelProps={{ shrink: true }} + sx={{ minWidth: 150 }} + /> + + {/* Tabs + State Filter */} { State