From c2f5ba18a924ba8787fd6e06bb27fa193d622972 Mon Sep 17 00:00:00 2001 From: surjeetkumar800 Date: Sun, 17 May 2026 13:54:25 +0530 Subject: [PATCH 1/4] Fix: Persist tracker filters and auth credentials on refresh (#291) --- src/hooks/useGitHubAuth.ts | 11 ++++++++--- src/pages/Tracker/Tracker.tsx | 29 ++++++++++++++++++++--------- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/hooks/useGitHubAuth.ts b/src/hooks/useGitHubAuth.ts index 5284347..5ef5ee1 100644 --- a/src/hooks/useGitHubAuth.ts +++ b/src/hooks/useGitHubAuth.ts @@ -1,11 +1,16 @@ -import { useState, useMemo } from 'react'; +import { useState, useMemo, useEffect } from 'react'; import { Octokit } from '@octokit/core'; export const useGitHubAuth = () => { - const [username, setUsername] = useState(''); - const [token, setToken] = useState(''); + const [username, setUsername] = useState(() => localStorage.getItem('tracker_username') || ''); + const [token, setToken] = useState(() => localStorage.getItem('tracker_token') || ''); const [error, setError] = useState(''); + useEffect(() => { + localStorage.setItem('tracker_username', username); + localStorage.setItem('tracker_token', token); + }, [username, token]); + const octokit = useMemo(() => { if (!username || !token) return null; return new Octokit({ auth: token }); diff --git a/src/pages/Tracker/Tracker.tsx b/src/pages/Tracker/Tracker.tsx index 2bd4d30..8644c35 100644 --- a/src/pages/Tracker/Tracker.tsx +++ b/src/pages/Tracker/Tracker.tsx @@ -68,15 +68,26 @@ const Home: React.FC = () => { fetchData, } = useGitHubData(getOctokit); - const [tab, setTab] = useState(0); - const [page, setPage] = useState(0); - - const [issueFilter, setIssueFilter] = useState("all"); - const [prFilter, setPrFilter] = useState("all"); - const [searchTitle, setSearchTitle] = useState(""); - const [selectedRepo, setSelectedRepo] = useState(""); - const [startDate, setStartDate] = useState(""); - const [endDate, setEndDate] = useState(""); + const [tab, setTab] = useState(() => Number(localStorage.getItem('tracker_tab')) || 0); + const [page, setPage] = useState(() => Number(localStorage.getItem('tracker_page')) || 0); + + const [issueFilter, setIssueFilter] = useState(() => localStorage.getItem('tracker_issueFilter') || "all"); + const [prFilter, setPrFilter] = useState(() => localStorage.getItem('tracker_prFilter') || "all"); + const [searchTitle, setSearchTitle] = useState(() => localStorage.getItem('tracker_searchTitle') || ""); + const [selectedRepo, setSelectedRepo] = useState(() => localStorage.getItem('tracker_selectedRepo') || ""); + const [startDate, setStartDate] = useState(() => localStorage.getItem('tracker_startDate') || ""); + const [endDate, setEndDate] = useState(() => localStorage.getItem('tracker_endDate') || ""); + + useEffect(() => { + localStorage.setItem('tracker_tab', String(tab)); + localStorage.setItem('tracker_page', String(page)); + localStorage.setItem('tracker_issueFilter', issueFilter); + localStorage.setItem('tracker_prFilter', prFilter); + localStorage.setItem('tracker_searchTitle', searchTitle); + localStorage.setItem('tracker_selectedRepo', selectedRepo); + localStorage.setItem('tracker_startDate', startDate); + localStorage.setItem('tracker_endDate', endDate); + }, [tab, page, issueFilter, prFilter, searchTitle, selectedRepo, startDate, endDate]); // Fetch data when username, tab, or page changes useEffect(() => { From 4b4e5b39cc847f1571c2ca54361ffe88b31fbd33 Mon Sep 17 00:00:00 2001 From: surjeetkumar800 Date: Sun, 17 May 2026 14:13:03 +0530 Subject: [PATCH 2/4] Fix: Remove unsupported tsconfig option --- tsconfig.app.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tsconfig.app.json b/tsconfig.app.json index f867de0..a616131 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -19,8 +19,7 @@ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true + "noFallthroughCasesInSwitch": true }, "include": ["src"] } From b7240edbfccabd947007db50be4ac9fbd6917d24 Mon Sep 17 00:00:00 2001 From: surjeetkumar800 Date: Sun, 17 May 2026 14:17:25 +0530 Subject: [PATCH 3/4] Fix: Use sessionStorage for GitHub credentials to fix security vulnerability --- src/hooks/useGitHubAuth.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/hooks/useGitHubAuth.ts b/src/hooks/useGitHubAuth.ts index 5ef5ee1..4045dbc 100644 --- a/src/hooks/useGitHubAuth.ts +++ b/src/hooks/useGitHubAuth.ts @@ -2,13 +2,13 @@ import { useState, useMemo, useEffect } from 'react'; import { Octokit } from '@octokit/core'; export const useGitHubAuth = () => { - const [username, setUsername] = useState(() => localStorage.getItem('tracker_username') || ''); - const [token, setToken] = useState(() => localStorage.getItem('tracker_token') || ''); + const [username, setUsername] = useState(() => sessionStorage.getItem('tracker_username') || ''); + const [token, setToken] = useState(() => sessionStorage.getItem('tracker_token') || ''); const [error, setError] = useState(''); useEffect(() => { - localStorage.setItem('tracker_username', username); - localStorage.setItem('tracker_token', token); + sessionStorage.setItem('tracker_username', username); + sessionStorage.setItem('tracker_token', token); }, [username, token]); const octokit = useMemo(() => { From 494453d67cda5a3927529e46e6d067c0626505f0 Mon Sep 17 00:00:00 2001 From: surjeetkumar800 Date: Sun, 17 May 2026 14:17:55 +0530 Subject: [PATCH 4/4] Fix: Resolve Octokit import error --- src/hooks/useGitHubAuth.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/useGitHubAuth.ts b/src/hooks/useGitHubAuth.ts index 4045dbc..ddf277c 100644 --- a/src/hooks/useGitHubAuth.ts +++ b/src/hooks/useGitHubAuth.ts @@ -1,5 +1,5 @@ import { useState, useMemo, useEffect } from 'react'; -import { Octokit } from '@octokit/core'; +import { Octokit } from 'octokit'; export const useGitHubAuth = () => { const [username, setUsername] = useState(() => sessionStorage.getItem('tracker_username') || '');