@@ -42,6 +42,7 @@ export default function InterviewWaitingRoomPage({
4242 const [ progressValue , setProgressValue ] = useState ( 0 )
4343 const timerRef = useRef < NodeJS . Timeout | null > ( null )
4444 const router = useRouter ( )
45+ const [ formattedStart , setFormattedStart ] = useState ( '-' )
4546
4647 const { data : interview } = useQuery ( {
4748 queryKey : [ 'interview' , interviewId ] ,
@@ -54,13 +55,6 @@ export default function InterviewWaitingRoomPage({
5455 interview ?. groupInterviewParticipants ?. find ( p => p . host ) ?. memberId ===
5556 memberId
5657
57- // 인터뷰 시간으로 이미 종료된 면접인지, 아닌지 판단하기
58- if ( interview ?. startedAt && new Date ( interview . startedAt ) < new Date ( ) ) {
59- alert ( '이미 시작된 면접이거나, 종료된 면접입니다.' )
60- router . replace ( '/workspace/interviews' )
61- return
62- }
63-
6458 useEffect ( ( ) => {
6559 if ( socketError ) {
6660 alert ( socketError )
@@ -76,7 +70,6 @@ export default function InterviewWaitingRoomPage({
7670 }
7771 } , [ socketError ] )
7872
79- // Calculate countdown to interview start
8073 useEffect ( ( ) => {
8174 if ( ! interview ?. startedAt ) return
8275
@@ -90,17 +83,16 @@ export default function InterviewWaitingRoomPage({
9083 // Time to start the interview
9184 if ( timerRef . current ) {
9285 clearInterval ( timerRef . current )
86+ alert ( '참가 시간이 지났어요.' )
87+ router . replace ( '/workspace/interviews' )
88+ return null
9389 }
94- startInterview ( )
9590 return
9691 }
9792
9893 const minutes = Math . floor ( difference / ( 1000 * 60 ) )
9994 const seconds = Math . floor ( ( difference % ( 1000 * 60 ) ) / 1000 )
10095 setCountdown ( { minutes, seconds } )
101-
102- // Calculate progress for the progress bar (inverse)
103- // Assuming the waiting room opens 10 minutes before the interview
10496 const totalWaitTime = 10 * 60 * 1000 // 10 minutes in milliseconds
10597 const elapsed = totalWaitTime - difference
10698 const progressPercentage = Math . min (
@@ -120,20 +112,27 @@ export default function InterviewWaitingRoomPage({
120112 }
121113 } , [ interview ?. startedAt ] ) // 빈 의존성 배열 사용 (컴포넌트 마운트 시 한 번만 실행)
122114
115+ useEffect ( ( ) => {
116+ if ( interview ?. startedAt ) {
117+ setFormattedStart ( new Date ( interview . startedAt ) . toLocaleString ( 'ko-KR' ) )
118+ }
119+ } , [ interview ?. startedAt ] )
120+
123121 // 면접 시작 함수 수정
124122 const startInterview = useCallback ( ( ) => {
125123 // 참가자가 없으면 시작 불가
126124 if ( participants ?. length === 0 ) {
127- alert ( '참가자가 없어 면접을 시작할 수 없습니다.' )
128- return
125+ alert ( '참가자가 없어요.' )
126+ router . replace ( '/workspace/interviews' )
127+ return null
129128 }
130129
131130 setIsStarting ( true )
132131
133132 // Show transition screen for 3 seconds
134133 setTimeout ( ( ) => {
135134 // Redirect to the interview session
136- window . location . href = '/workspace/interview /group/session'
135+ router . replace ( '/workspace/interviews /group/session' )
137136 } , 3000 )
138137 } , [ participants ?. length ] )
139138
@@ -152,11 +151,6 @@ export default function InterviewWaitingRoomPage({
152151 }
153152 }
154153
155- // Format time for display
156- function formatTime ( minutes : number , seconds : number ) {
157- return `${ minutes . toString ( ) . padStart ( 2 , '0' ) } :${ seconds . toString ( ) . padStart ( 2 , '0' ) } `
158- }
159-
160154 // If the interview is starting, show transition screen
161155 if ( isStarting ) {
162156 return (
@@ -234,10 +228,7 @@ export default function InterviewWaitingRoomPage({
234228 </ div >
235229 < div className = "flex items-center gap-1 text-gray-400 mb-4" >
236230 < Clock className = "h-3 w-3 mr-1" />
237- 시작시간:{ ' ' }
238- { interview ?. startedAt
239- ? new Date ( interview . startedAt ) . toLocaleString ( 'ko-KR' )
240- : '-' }
231+ 시작시간: { formattedStart }
241232 </ div >
242233 < Progress
243234 value = { progressValue }
0 commit comments