diff --git a/apps/web/src/app/tournament/[id]/create/_components/TournamentCreateClient.tsx b/apps/web/src/app/tournament/[id]/create/_components/TournamentCreateClient.tsx index b1254a8a..3d7a4918 100644 --- a/apps/web/src/app/tournament/[id]/create/_components/TournamentCreateClient.tsx +++ b/apps/web/src/app/tournament/[id]/create/_components/TournamentCreateClient.tsx @@ -187,6 +187,7 @@ function TournamentCreateClient({ tournamentId }: TournamentCreateClientProps) { participants={participants} inviteCode={pending?.inviteCode ?? ''} inviteExpiresAt={pending?.inviteExpiresAt ?? ''} + ownerStarted={ownerStarted} {...(isCollaborative && !ownerStarted && !isDepositClosed && { depositDeadline })} /> diff --git a/apps/web/src/app/tournament/[id]/create/_components/participant-panel/ParticipantPanel.tsx b/apps/web/src/app/tournament/[id]/create/_components/participant-panel/ParticipantPanel.tsx index 472aba71..cada3d2d 100644 --- a/apps/web/src/app/tournament/[id]/create/_components/participant-panel/ParticipantPanel.tsx +++ b/apps/web/src/app/tournament/[id]/create/_components/participant-panel/ParticipantPanel.tsx @@ -34,6 +34,8 @@ type ParticipantPanelProps = { inviteExpiresAt?: string; /** 담기 마감 시각 — 있을 때만 타이머 노출 */ depositDeadline?: string; + /** 주최자가 토너먼트를 시작했는지 — 시작 후에는 새 참여자를 받을 수 없다 */ + ownerStarted?: boolean; }; const PLACEHOLDER_AVATAR_COUNT = 2; @@ -43,6 +45,7 @@ function ParticipantPanel({ inviteCode, inviteExpiresAt, depositDeadline, + ownerStarted = false, }: ParticipantPanelProps) { const { id: tournamentId } = useParams<{ id: string }>(); const { refetchTournament } = useGetTournament(Number(tournamentId)); @@ -104,14 +107,17 @@ function ParticipantPanel({ {participants.map(({ user, itemCount }) => ( ))} - + {/* 시작 후에는 새 참여자를 받을 수 없어 초대 진입점을 숨긴다 */} + {!ownerStarted && ( + + )} )} @@ -144,8 +150,9 @@ function ParticipantPanel({ )} + {/* 시트를 열어둔 사이 주최자가 시작하면 초대가 무의미해지므로 함께 닫는다 */}