@@ -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