Skip to content

Commit dcaa057

Browse files
committed
Merge remote-tracking branch 'origin/dongjun'
2 parents 14f5775 + 7efdb63 commit dcaa057

File tree

3 files changed

+434
-84
lines changed

3 files changed

+434
-84
lines changed

src/App.js

Lines changed: 66 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import Community from "./components/community/Community";
1111
import IDE from "./components/ide/IDE";
1212
import StartCodecast from "./components/codecast/StartCodecast";
1313
import Mypage from "./components/mypage/Mypage";
14+
import MyPageLayout from "./components/mypage/MyPageLayout";
1415
import Settings from "./components/mypage/Settings";
1516
import Shared from "./components/mypage/Shared";
1617
import MyProject from "./components/mypage/MyProject";
@@ -19,51 +20,98 @@ import ScrollToTop from "./components/common/ScrollToTop";
1920

2021
function 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

Comments
 (0)