내 지난 예측을 투표 후에만 표시

develop
jwkim 2026-06-18 15:57:40 +09:00
parent b4fc96f299
commit 39c2003080
1 changed files with 1 additions and 26 deletions

View File

@ -75,25 +75,6 @@ export default function Arena({
); );
}, [scoreA, scoreB]); }, [scoreA, scoreB]);
// 재방문 시: 가장 최근 사용 이메일로 내 지난 예측 자동 로드 (로그인 대체).
// 이메일 칸은 비워둠 — develop UX(포커스 시 datalist 자동완성)를 유지.
useEffect(() => {
const last = getRecentEmails()[0];
if (last) fetchMyPredictions(last).then(setMyPreds).catch(() => {});
}, []);
// 이 경기에 대한 내 기존 픽 (있으면 스코어 프리필 + 목록에서 강조)
const myThisMatch = useMemo(
() => myPreds.find((p) => p.matchId === match.matchId),
[myPreds, match.matchId],
);
useEffect(() => {
if (myThisMatch) {
setScoreA(myThisMatch.scoreA);
setScoreB(myThisMatch.scoreB);
}
}, [myThisMatch]);
// 투표 가능 여부는 백엔드 계산(votingOpen, demo 반영) + phase 라벨. // 투표 가능 여부는 백엔드 계산(votingOpen, demo 반영) + phase 라벨.
const finished = !!match.result; const finished = !!match.result;
const disabled = finished || !match.votingOpen; const disabled = finished || !match.votingOpen;
@ -341,13 +322,7 @@ export default function Arena({
list="tp-email-suggestions" list="tp-email-suggestions"
autoComplete="email" autoComplete="email"
value={email} value={email}
onChange={(e) => { onChange={(e) => setEmail(e.target.value)}
const v = e.target.value;
setEmail(v);
// 유효 이메일이면 그 즉시 내 지난 예측 조회(다른 기기/세션 흔적까지 표시)
if (EMAIL_RE.test(v.trim()))
fetchMyPredictions(v.trim()).then(setMyPreds).catch(() => {});
}}
placeholder={t.emailPh} placeholder={t.emailPh}
className="w-full rounded-2xl border border-[var(--share)] bg-[#0f1217] px-4 py-3 text-[16px] text-white shadow-[0_0_0_2px_rgba(166,94,255,0.12)] outline-none focus:shadow-[0_0_0_2px_rgba(166,94,255,0.3)]" className="w-full rounded-2xl border border-[var(--share)] bg-[#0f1217] px-4 py-3 text-[16px] text-white shadow-[0_0_0_2px_rgba(166,94,255,0.12)] outline-none focus:shadow-[0_0_0_2px_rgba(166,94,255,0.3)]"
/> />