1- import { useState , FormEvent } from "react" ;
1+ import { useState , FormEvent , useEffect } from "react" ; // Import useEffect
22import "./App.css" ;
33import AppsManager from "./components/AppsManager" ; // Import the new component
44
@@ -8,6 +8,18 @@ function App() {
88 const [ token , setToken ] = useState < string | null > ( null ) ;
99 const [ message , setMessage ] = useState ( "" ) ;
1010
11+ // Check localStorage for token on initial load
12+ useEffect ( ( ) => {
13+ const storedToken = localStorage . getItem ( "jwtToken" ) ;
14+ if ( storedToken ) {
15+ setToken ( storedToken ) ;
16+ // Optionally, you might want to fetch user details here based on the token
17+ // For simplicity, we'll just restore the token state.
18+ // You might need to store/retrieve username too if needed outside login flow.
19+ setMessage ( "Session restored." ) ;
20+ }
21+ } , [ ] ) ; // Empty dependency array ensures this runs only once on mount
22+
1123 const handleSignup = async ( e : FormEvent ) => {
1224 e . preventDefault ( ) ;
1325 setMessage ( "" ) ;
@@ -22,14 +34,17 @@ function App() {
2234 } ) ;
2335 const data = await response . json ( ) ;
2436 if ( response . ok ) {
37+ localStorage . setItem ( "jwtToken" , data . token ) ; // Save token to localStorage
2538 setToken ( data . token ) ;
2639 setMessage ( "Signup successful!" ) ;
2740 console . log ( "Signup successful, token:" , data . token ) ;
2841 } else {
42+ localStorage . removeItem ( "jwtToken" ) ; // Clear token on failure
2943 setMessage ( `Signup failed: ${ data . message || "Unknown error" } ` ) ;
3044 console . error ( "Signup failed:" , data ) ;
3145 }
3246 } catch ( error ) {
47+ localStorage . removeItem ( "jwtToken" ) ; // Clear token on error
3348 setMessage ( "Signup failed: Network error or server unavailable." ) ;
3449 console . error ( "Signup error:" , error ) ;
3550 }
@@ -49,14 +64,17 @@ function App() {
4964 } ) ;
5065 const data = await response . json ( ) ;
5166 if ( response . ok ) {
67+ localStorage . setItem ( "jwtToken" , data . token ) ; // Save token to localStorage
5268 setToken ( data . token ) ;
5369 setMessage ( "Login successful!" ) ;
5470 console . log ( "Login successful, token:" , data . token ) ;
5571 } else {
72+ localStorage . removeItem ( "jwtToken" ) ; // Clear token on failure
5673 setMessage ( `Login failed: ${ data . message || "Unknown error" } ` ) ;
5774 console . error ( "Login failed:" , data ) ;
5875 }
5976 } catch ( error ) {
77+ localStorage . removeItem ( "jwtToken" ) ; // Clear token on error
6078 setMessage ( "Login failed: Network error or server unavailable." ) ;
6179 console . error ( "Login error:" , error ) ;
6280 }
@@ -107,9 +125,10 @@ function App() {
107125 </ p >
108126 < button
109127 onClick = { ( ) => {
128+ localStorage . removeItem ( "jwtToken" ) ; // Remove token from localStorage
110129 setToken ( null ) ;
111- setUsername ( "" ) ;
112- setPassword ( "" ) ;
130+ setUsername ( "" ) ; // Clear username on logout
131+ setPassword ( "" ) ; // Clear password on logout
113132 setMessage ( "Logged out." ) ;
114133 } }
115134 >
0 commit comments