@@ -11,6 +11,7 @@ import Community from "./components/community/Community";
1111import IDE from "./components/ide/IDE" ;
1212import StartCodecast from "./components/codecast/StartCodecast" ;
1313import Mypage from "./components/mypage/Mypage" ;
14+ import MyPageLayout from "./components/mypage/MyPageLayout" ;
1415import Settings from "./components/mypage/Settings" ;
1516import Shared from "./components/mypage/Shared" ;
1617import MyProject from "./components/mypage/MyProject" ;
@@ -19,51 +20,98 @@ import ScrollToTop from "./components/common/ScrollToTop";
1920
2021function App ( ) {
2122 const [ isDark , setIsDark ] = useState ( false ) ;
23+
24+ // 로그인 상태 관리 추가
2225 const [ isLoggedIn , setIsLoggedIn ] = useState ( false ) ;
2326 const [ nickname , setNickname ] = useState ( '' ) ;
2427
28+ // 로그인 상태 확인
2529 useEffect ( ( ) => {
26- const savedTheme = localStorage . getItem ( "theme" ) ;
27- if ( savedTheme === "dark" ) {
28- setIsDark ( true ) ;
30+ const token = localStorage . getItem ( 'token' ) ;
31+ const storedUsername = localStorage . getItem ( 'username' ) ;
32+
33+ console . log ( '🔍 App.js 로그인 상태 확인:' , { token : ! ! token , username : storedUsername } ) ;
34+
35+ if ( token && storedUsername ) {
36+ setIsLoggedIn ( true ) ;
37+ setNickname ( storedUsername ) ;
38+ console . log ( '✅ App.js에서 로그인 상태로 설정됨' ) ;
39+ } else {
40+ setIsLoggedIn ( false ) ;
41+ setNickname ( '' ) ;
42+ console . log ( '❌ App.js에서 비로그인 상태로 설정됨' ) ;
2943 }
3044 } , [ ] ) ;
3145
46+ // 로그인 상태 변경을 감지하기 위한 이벤트 리스너 (선택사항)
47+ useEffect ( ( ) => {
48+ const handleStorageChange = ( ) => {
49+ const token = localStorage . getItem ( 'token' ) ;
50+ const storedUsername = localStorage . getItem ( 'username' ) ;
51+
52+ if ( token && storedUsername ) {
53+ setIsLoggedIn ( true ) ;
54+ setNickname ( storedUsername ) ;
55+ } else {
56+ setIsLoggedIn ( false ) ;
57+ setNickname ( '' ) ;
58+ }
59+ } ;
60+
61+ // storage 이벤트 리스너 추가
62+ window . addEventListener ( 'storage' , handleStorageChange ) ;
63+
64+ // 클린업
65+ return ( ) => {
66+ window . removeEventListener ( 'storage' , handleStorageChange ) ;
67+ } ;
68+ } , [ ] ) ;
69+
3270 useEffect ( ( ) => {
3371 document . body . classList . toggle ( "dark-mode" , isDark ) ;
34- localStorage . setItem ( "theme" , isDark ? "dark" : "light" ) ;
3572 } , [ isDark ] ) ;
3673
3774 useEffect ( ( ) => {
38- const token = localStorage . getItem ( "token" ) ;
39- const name = localStorage . getItem ( "username" ) ; // ✅ 이름을 불러옴
40-
41- if ( token && name ) {
42- setIsLoggedIn ( true ) ;
43- setNickname ( name ) ; // ✅ 이름을 nickname으로 사용
44- } else {
45- setIsLoggedIn ( false ) ;
46- setNickname ( '' ) ;
75+ const savedTheme = localStorage . getItem ( "theme" ) ;
76+ if ( savedTheme === "dark" ) {
77+ setIsDark ( true ) ;
4778 }
4879 } , [ ] ) ;
4980
81+ useEffect ( ( ) => {
82+ document . body . classList . toggle ( "dark-mode" , isDark ) ;
83+ localStorage . setItem ( "theme" , isDark ? "dark" : "light" ) ;
84+ } , [ isDark ] ) ;
85+
5086 return (
5187 < HashRouter >
52- < Header isDark = { isDark } setIsDark = { setIsDark } isLoggedIn = { isLoggedIn } nickname = { nickname } />
88+ < Header
89+ isDark = { isDark }
90+ setIsDark = { setIsDark }
91+ isLoggedIn = { isLoggedIn }
92+ nickname = { nickname }
93+ />
5394 < ScrollToTop />
5495 < Routes >
5596 < Route path = "/" element = { < Main /> } />
5697 < Route path = "/login" element = { < Login /> } />
5798 < Route path = "/signup" element = { < SignUp /> } />
99+
100+ { /* IDE 라우팅 설정 */ }
58101 < Route path = "/ide" element = { < IDE /> } />
102+ < Route path = "/ide/:param" element = { < IDE /> } />
103+ < Route path = "/ide/:language/:filename" element = { < IDE /> } />
104+
59105 < Route path = "/community" element = { < Community /> } />
60106 < Route path = "/broadcast" element = { < Codecast /> } />
61107 < Route path = "/startbroadcast" element = { < StartCodecast /> } />
62- < Route path = "/mypage" >
63- < Route index element = { < Mypage /> } />
108+
109+ { /* MyPage 라우팅 설정 */ }
110+ < Route path = "/mypage" element = { < MyPageLayout nickname = { nickname } /> } >
111+ < Route index element = { < Mypage nickname = { nickname } /> } />
64112 < Route path = "project" element = { < MyProject /> } />
65113 < Route path = "community" element = { < MyCommunity /> } />
66- < Route path = "setting" element = { < Settings /> } />
114+ < Route path = "setting" element = { < Settings nickname = { nickname } /> } />
67115 < Route path = "shared" element = { < Shared /> } />
68116 </ Route >
69117 </ Routes >
@@ -72,4 +120,4 @@ function App() {
72120 ) ;
73121}
74122
75- export default App ;
123+ export default App ;
0 commit comments