1- import { HashRouter , Route , Routes } from "react-router-dom" ;
2- import { useState , useEffect } from "react" ;
1+ import { HashRouter , Routes , Route , useLocation } from "react-router-dom" ;
2+ import { useEffect , useState } from "react" ;
33
44import Header from "./components/header/Header" ;
55import Footer from "./components/footer/Footer" ;
@@ -17,65 +17,32 @@ import Shared from "./components/mypage/Shared";
1717import MyProject from "./components/mypage/MyProject" ;
1818import MyCommunity from "./components/mypage/MyCommunity" ;
1919import ScrollToTop from "./components/common/ScrollToTop" ;
20+ import CommunityWrite from "./components/community/CommunityWrite" ;
2021
21- function App ( ) {
22+ function AppContent ( ) {
23+ const location = useLocation ( ) ;
2224 const [ isDark , setIsDark ] = useState ( false ) ;
23-
24- // 로그인 상태 관리 추가
2525 const [ isLoggedIn , setIsLoggedIn ] = useState ( false ) ;
2626 const [ nickname , setNickname ] = useState ( '' ) ;
27+ const [ isLoginModalOpen , setIsLoginModalOpen ] = useState ( false ) ;
28+
29+ const isSignupPage = location . pathname === "/signup" ;
2730
28- // 로그인 상태 확인
2931 useEffect ( ( ) => {
3032 const token = localStorage . getItem ( 'token' ) ;
3133 const storedUsername = localStorage . getItem ( 'username' ) ;
32-
33- console . log ( '🔍 App.js 로그인 상태 확인:' , { token : ! ! token , username : storedUsername } ) ;
34-
3534 if ( token && storedUsername ) {
3635 setIsLoggedIn ( true ) ;
3736 setNickname ( storedUsername ) ;
38- console . log ( '✅ App.js에서 로그인 상태로 설정됨' ) ;
3937 } else {
4038 setIsLoggedIn ( false ) ;
4139 setNickname ( '' ) ;
42- console . log ( '❌ App.js에서 비로그인 상태로 설정됨' ) ;
4340 }
4441 } , [ ] ) ;
4542
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-
70- useEffect ( ( ) => {
71- document . body . classList . toggle ( "dark-mode" , isDark ) ;
72- } , [ isDark ] ) ;
73-
7443 useEffect ( ( ) => {
7544 const savedTheme = localStorage . getItem ( "theme" ) ;
76- if ( savedTheme === "dark" ) {
77- setIsDark ( true ) ;
78- }
45+ if ( savedTheme === "dark" ) setIsDark ( true ) ;
7946 } , [ ] ) ;
8047
8148 useEffect ( ( ) => {
@@ -84,29 +51,29 @@ function App() {
8451 } , [ isDark ] ) ;
8552
8653 return (
87- < HashRouter >
88- < Header
89- isDark = { isDark }
90- setIsDark = { setIsDark }
91- isLoggedIn = { isLoggedIn }
92- nickname = { nickname }
93- />
54+ < >
55+ { ! isSignupPage && (
56+ < Header
57+ isDark = { isDark }
58+ setIsDark = { setIsDark }
59+ isLoggedIn = { isLoggedIn }
60+ nickname = { nickname }
61+ onLoginModalOpen = { ( ) => setIsLoginModalOpen ( true ) }
62+ />
63+ ) }
64+
9465 < ScrollToTop />
66+
9567 < Routes >
9668 < Route path = "/" element = { < Main /> } />
97- < Route path = "/login" element = { < Login /> } />
9869 < Route path = "/signup" element = { < SignUp /> } />
99-
100- { /* IDE 라우팅 설정 */ }
10170 < Route path = "/ide" element = { < IDE /> } />
10271 < Route path = "/ide/:param" element = { < IDE /> } />
10372 < Route path = "/ide/:language/:filename" element = { < IDE /> } />
104-
10573 < Route path = "/community" element = { < Community /> } />
74+ < Route path = "/community/write" element = { < CommunityWrite /> } />
10675 < Route path = "/broadcast" element = { < Codecast /> } />
10776 < Route path = "/startbroadcast" element = { < StartCodecast /> } />
108-
109- { /* MyPage 라우팅 설정 */ }
11077 < Route path = "/mypage" element = { < MyPageLayout nickname = { nickname } /> } >
11178 < Route index element = { < Mypage nickname = { nickname } /> } />
11279 < Route path = "project" element = { < MyProject /> } />
@@ -115,9 +82,26 @@ function App() {
11582 < Route path = "shared" element = { < Shared /> } />
11683 </ Route >
11784 </ Routes >
118- < Footer />
119- </ HashRouter >
85+
86+ { ! isSignupPage && < Footer /> }
87+
88+ { isLoginModalOpen && (
89+ < Login
90+ onClose = { ( ) => setIsLoginModalOpen ( false ) }
91+ onLoginSuccess = { ( ) => {
92+ setIsLoggedIn ( true ) ;
93+ setNickname ( localStorage . getItem ( 'username' ) || '' ) ;
94+ } }
95+ />
96+ ) }
97+ </ >
12098 ) ;
12199}
122100
123- export default App ;
101+ export default function App ( ) {
102+ return (
103+ < HashRouter >
104+ < AppContent />
105+ </ HashRouter >
106+ ) ;
107+ }
0 commit comments