diff --git a/src/APP/user-pages/DailyChallenge/DailyChallenge.dailychallenge.main.jsx b/src/APP/user-pages/DailyChallenge/DailyChallenge.dailychallenge.main.jsx index d32c463..518e67b 100644 --- a/src/APP/user-pages/DailyChallenge/DailyChallenge.dailychallenge.main.jsx +++ b/src/APP/user-pages/DailyChallenge/DailyChallenge.dailychallenge.main.jsx @@ -7,7 +7,6 @@ import request from '../../Api/request'; import axios from 'axios'; export default function DailyChallenge() { - const location = useLocation(); const navigate = useNavigate(); const accessToken = localStorage.getItem("accessToken"); @@ -19,9 +18,7 @@ export default function DailyChallenge() { const [showLevel, setShowLevel] = useState(false); const [tierSrc, setTierSrc] = useState('https://static.solved.ac/tier_small/0.svg'); const [challengeData, setChallengeData] = useState(null); - const [hasLoadedChallengeData, setHasLoadedChallengeData] = useState(false); const [participantsCount, setParticipantsCount] = useState(0); - const [hasJoinedToday, setHasJoinedToday] = useState(false); const [challengeHistory, setChallengeHistory] = useState([]); const msToHHMMSS = (ms) => { @@ -62,24 +59,6 @@ export default function DailyChallenge() { const isOneHourLeft = timeLeftMs <= 3600 * 1000; - /* - // 금일 챌린지 참여 여부 확인 - const checkTodayJoinStatus = async () => { - if (!accessToken) return; - - try { - const response = await request.get('/challenge/check-join'); - if (response.isSuccess && response.result) { - setHasJoinedToday(true); - // 참여했다면 챌린지 이력도 조회 - await loadChallengeHistory(); - } - } catch (error) { - console.error('챌린지 참여 여부 확인 실패:', error); - } - }; - */ - // 챌린지 이력 조회 const loadChallengeHistory = async () => { try { @@ -99,17 +78,9 @@ export default function DailyChallenge() { console.log("챌린지 이력 조회 성공:", result); - // 참여 인원 수 세팅 setParticipantsCount(totalCount); - - // totalCount가 0보다 크면 참여 이력 있다고 판단 - if (totalCount > 0 && joinLogList.length > 0) { - setHasJoinedToday(true); - setChallengeHistory(joinLogList); - } else { - setHasJoinedToday(false); - setChallengeHistory([]); - } + setChallengeHistory(joinLogList); + } catch (error) { console.error("챌린지 이력 조회 실패:", error); } @@ -128,7 +99,6 @@ export default function DailyChallenge() { useEffect(() => { const msToMidnight = getMsToMidnight(); - // 자정에 새로고침 const midnightTimer = setTimeout(() => { window.location.reload(); }, msToMidnight); @@ -140,6 +110,7 @@ export default function DailyChallenge() { // 컴포넌트 마운트 시 참여 여부 확인 useEffect(() => { + loadChallengeData(); loadChallengeHistory(); }, []); @@ -160,12 +131,8 @@ export default function DailyChallenge() { // 챌린지 데이터 로드 (한 번만 호출) const loadChallengeData = async () => { - - // 비로그인이라면 로드하지 않음 if (!accessToken) return null; - - // 이미 로드되어 있다면 캐시 반환 - if (hasLoadedChallengeData && challengeData) { + if (challengeData) { return challengeData; } @@ -179,14 +146,9 @@ export default function DailyChallenge() { levelImageUrl: response.result.levelImageUrl, algorithmList: response.result.algorithmList || [], } - // 챌린지 데이터 저장 setChallengeData(data); - setHasLoadedChallengeData(true); - return data; } - - } catch (error) { console.error('금일 챌린지 문제 조회 실패:', error); } finally { @@ -196,7 +158,6 @@ export default function DailyChallenge() { // 문제풀기 버튼 클릭 const handleProblemSolve = async () => { - // 로그인 상태 확인 if (!accessToken) { navigate('/login'); return; @@ -204,7 +165,6 @@ export default function DailyChallenge() { const data = await loadChallengeData(); - // 데이터가 있으면 백준 링크 열기 if (data) { const bojLink = `https://www.acmicpc.net/problem/${data.problemNumber}`; window.open(bojLink, '_blank'); @@ -212,7 +172,6 @@ export default function DailyChallenge() { }; const handleTagToggle = async () => { - // 로그인 상태 확인 if (!accessToken) { navigate('/login'); return; @@ -221,11 +180,10 @@ export default function DailyChallenge() { await loadChallengeData(); setShowTags((v) => !v); - setShowLevel(false); // 다른 펼쳐진 요소 접기 + setShowLevel(false); }; const handleTierToggle = async () => { - // 로그인 상태 확인 if (!accessToken) { navigate('/login'); return; @@ -234,7 +192,7 @@ export default function DailyChallenge() { await loadChallengeData(); setShowLevel((v) => !v); - setShowTags(false); // 다른 펼쳐진 요소 접기 + setShowTags(false); }; @@ -293,7 +251,6 @@ export default function DailyChallenge() { diff --git a/src/APP/user-pages/DailyChallenge/DailyChallenge.dailychallenge.table.jsx b/src/APP/user-pages/DailyChallenge/DailyChallenge.dailychallenge.table.jsx index 8b54f4b..cddb6c3 100644 --- a/src/APP/user-pages/DailyChallenge/DailyChallenge.dailychallenge.table.jsx +++ b/src/APP/user-pages/DailyChallenge/DailyChallenge.dailychallenge.table.jsx @@ -3,14 +3,17 @@ import RankingTuple from './DailyChallenge.dailychallenge.tuple'; import rankingData from "./dummyRanking.js"; const DEFAULT_ROWS = [ - { rank: "1", name: "홍길동", speed: "0ms", memory: "0KB", codeLength: "1000B" }, - { rank: "2", name: "홍길동", speed: "0ms", memory: "0KB", codeLength: "2000B" }, - { rank: "3", name: "홍길동", speed: "0ms", memory: "0KB", codeLength: "3000B" }, + { rank: "1", name: "이유경", speed: "0ms", memory: "0KB", codeLength: "1000B" }, + { rank: "2", name: "이육영", speed: "0ms", memory: "0KB", codeLength: "2000B" }, + { rank: "3", name: "이규영", speed: "0ms", memory: "0KB", codeLength: "3000B" }, ]; -export default function RankingTable({ disable, language, date, challengeHistory = [] }) { +export default function RankingTable({ language, date, challengeHistory = [] }) { + + const hasRecordForDate = challengeHistory.some(item => item.date === date); + const isDisabled = !hasRecordForDate; - if (disable) { + if (isDisabled) { return ( @@ -92,7 +95,7 @@ export default function RankingTable({ disable, language, date, challengeHistory key={`${item.name}-${item.rank}-${index}`} item={item} language={language} - disable={disable} + disable={false} /> ))}