Skip to content

Commit 0a97617

Browse files
authored
Merge pull request #114 from DMU-DebugVisual/inseong2
Inseong2
2 parents a02a6c7 + df78fbc commit 0a97617

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

src/components/codecast/Codecast.jsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,28 @@ import React, { useState } from "react";
33
import { FaPlus, FaArrowRight, FaDesktop } from "react-icons/fa";
44
import "./Codecast.css";
55
import { Link, useNavigate } from "react-router-dom";
6+
import { promptLogin } from "../../utils/auth";
67

78
const Codecast = () => {
89
const navigate = useNavigate();
910
const [inviteCode, setInviteCode] = useState("");
11+
const [errorText, setErrorText] = useState("");
1012

1113
const handleJoin = () => {
14+
setErrorText("");
1215
const code = inviteCode.trim();
13-
if (!code) return alert("방송 코드를 입력하세요.");
16+
if (!code) {
17+
setErrorText("방송 코드를 입력하세요.");
18+
return;
19+
}
20+
21+
const token = localStorage.getItem("token");
22+
const username = localStorage.getItem("username");
23+
if (!token || !username) {
24+
setErrorText("로그인이 필요합니다. 먼저 로그인해주세요.");
25+
promptLogin("방송에 참여하려면 로그인이 필요합니다.", { redirectTo: "/broadcast" });
26+
return;
27+
}
1428
// ✅ rid 쿼리로 전달
1529
navigate(`/broadcast/live?rid=${encodeURIComponent(code)}`);
1630
};
@@ -39,6 +53,7 @@ const Codecast = () => {
3953
참여하기
4054
</button>
4155
</div>
56+
{errorText && <p className="error-text">{errorText}</p>}
4257
</div>
4358

4459
<div className="hr-with-text"><span>또는</span></div>

src/components/codecast/StartCodecast.jsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { FaArrowRight } from "react-icons/fa";
44
import "./Codecast.css";
55
import { useNavigate } from "react-router-dom";
66
import { createRoom } from "./api/collab";
7+
import { promptLogin } from "../../utils/auth";
78

89
const StartCodecast = () => {
910
const navigate = useNavigate();
@@ -18,7 +19,8 @@ const StartCodecast = () => {
1819
const token = localStorage.getItem("token");
1920
const username = localStorage.getItem("username");
2021
if (!token || !username) {
21-
setErrMsg("로그인이 필요합니다. 먼저 로그인해주세요.");
22+
setErrMsg("");
23+
promptLogin("방송을 시작하려면 로그인이 필요합니다.", { redirectTo: "/startbroadcast" });
2224
return;
2325
}
2426
if (!roomName.trim()) {

src/components/codecast/codecastlive/CodecastLive.jsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import useCollabSocket from '../hooks/useCollabSocket';
1212
import { createSession, updateSessionStatus } from '../api/sessions';
1313
import { fetchMyFiles, fetchFileContent, inferLanguageFromFilename, saveFile } from '../api/files';
1414
import config from '../../../config';
15+
import { promptLogin } from '../../../utils/auth';
1516

1617
import {
1718
FaCheck,
@@ -69,6 +70,13 @@ export default function CodecastLive({ isDark }) {
6970
const storedUserId = localStorage.getItem('userId') || '';
7071
const username = localStorage.getItem('username') || storedUserId || 'anonymous';
7172
const token = localStorage.getItem('token') || '';
73+
useEffect(() => {
74+
if (!token) {
75+
promptLogin('방송에 참여하려면 로그인이 필요합니다.', { redirectTo: '/broadcast' });
76+
navigate('/broadcast', { replace: true });
77+
}
78+
}, [token, navigate]);
79+
7280
const userId = storedUserId || username;
7381

7482
// 권한 기본값

0 commit comments

Comments
 (0)