Skip to content

Commit 945cc48

Browse files
feat: Add reset filters and logout/clear session actions to Tracker
1 parent fc405b6 commit 945cc48

3 files changed

Lines changed: 73 additions & 0 deletions

File tree

src/hooks/useGitHubAuth.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ export const useGitHubAuth = () => {
2525
}
2626
};
2727

28+
const logout = () => {
29+
setUsername('');
30+
setToken('');
31+
setError('');
32+
sessionStorage.removeItem('tracker_username');
33+
sessionStorage.removeItem('tracker_token');
34+
};
35+
2836
return {
2937
username,
3038
setUsername,
@@ -33,5 +41,6 @@ export const useGitHubAuth = () => {
3341
error,
3442
setError,
3543
getOctokit,
44+
logout,
3645
};
3746
};

src/hooks/useGitHubData.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,14 @@ export const useGitHubData = (
239239
[getOctokit, rateLimited]
240240
);
241241

242+
const clearData = useCallback(() => {
243+
setIssues([]);
244+
setPrs([]);
245+
setTotalIssues(0);
246+
setTotalPrs(0);
247+
setError('');
248+
}, []);
249+
242250
return {
243251
issues,
244252
prs,
@@ -248,5 +256,6 @@ export const useGitHubData = (
248256
error,
249257
rateLimited,
250258
fetchData,
259+
clearData,
251260
};
252261
};

src/pages/Tracker/Tracker.tsx

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ const Home: React.FC = () => {
5757
setToken,
5858
error: authError,
5959
getOctokit,
60+
logout,
6061
} = useGitHubAuth();
6162

6263
const {
@@ -67,6 +68,7 @@ const Home: React.FC = () => {
6768
loading,
6869
error: dataError,
6970
fetchData,
71+
clearData,
7072
} = useGitHubData(getOctokit);
7173

7274
const [tab, setTab] = useState(() => Number(localStorage.getItem('tracker_tab')) || 0);
@@ -90,6 +92,32 @@ const Home: React.FC = () => {
9092
localStorage.setItem('tracker_endDate', endDate);
9193
}, [tab, page, issueFilter, prFilter, searchTitle, selectedRepo, startDate, endDate]);
9294

95+
const handleResetFilters = () => {
96+
setTab(0);
97+
setPage(0);
98+
setIssueFilter("all");
99+
setPrFilter("all");
100+
setSearchTitle("");
101+
setSelectedRepo("");
102+
setStartDate("");
103+
setEndDate("");
104+
105+
localStorage.removeItem('tracker_tab');
106+
localStorage.removeItem('tracker_page');
107+
localStorage.removeItem('tracker_issueFilter');
108+
localStorage.removeItem('tracker_prFilter');
109+
localStorage.removeItem('tracker_searchTitle');
110+
localStorage.removeItem('tracker_selectedRepo');
111+
localStorage.removeItem('tracker_startDate');
112+
localStorage.removeItem('tracker_endDate');
113+
};
114+
115+
const handleLogout = () => {
116+
logout();
117+
clearData();
118+
handleResetFilters();
119+
};
120+
93121
// Fetch data when username, tab, or page changes
94122
useEffect(() => {
95123
if (username) {
@@ -249,6 +277,21 @@ const Home: React.FC = () => {
249277
>
250278
Fetch Data
251279
</Button>
280+
{(username || token) && (
281+
<Button
282+
type="button"
283+
variant="outlined"
284+
color="error"
285+
onClick={handleLogout}
286+
sx={{
287+
minWidth: "100px",
288+
minHeight: "55px",
289+
alignSelf: "flex-start",
290+
}}
291+
>
292+
Logout
293+
</Button>
294+
)}
252295
</Box>
253296
</form>
254297
</Paper>
@@ -283,6 +326,18 @@ const Home: React.FC = () => {
283326
InputLabelProps={{ shrink: true }}
284327
sx={{ minWidth: 150 }}
285328
/>
329+
{(tab !== 0 || page !== 0 || issueFilter !== "all" || prFilter !== "all" || searchTitle !== "" || selectedRepo !== "" || startDate !== "" || endDate !== "") && (
330+
<Button
331+
variant="outlined"
332+
onClick={handleResetFilters}
333+
sx={{
334+
minHeight: "56px",
335+
alignSelf: "flex-start",
336+
}}
337+
>
338+
Reset Filters
339+
</Button>
340+
)}
286341
</Box>
287342

288343
{/* Tabs + State Filter */}

0 commit comments

Comments
 (0)