@@ -22,7 +22,15 @@ import { Users, User, Brain } from 'lucide-react'
2222import { formatCountdownString } from '@/utils/date/convertAllDate'
2323import { Avatar , AvatarFallback } from '@/components/ui/avatar'
2424import { CheckCircle } from 'lucide-react'
25- import LoadingSpinner from '@/components/loading'
25+ import LoadingSpinner from '@/components/loading-full-screen'
26+ import { toast } from 'sonner'
27+ import {
28+ Dialog ,
29+ DialogContent ,
30+ DialogHeader ,
31+ DialogTitle ,
32+ DialogFooter ,
33+ } from '@/components/ui/dialog'
2634
2735export default function InterviewWaitingRoomPage ( {
2836 params,
@@ -44,6 +52,7 @@ export default function InterviewWaitingRoomPage({
4452 const timerRef = useRef < NodeJS . Timeout | null > ( null )
4553 const router = useRouter ( )
4654 const [ formattedStart , setFormattedStart ] = useState ( '-' )
55+ const [ startDialogOpen , setStartDialogOpen ] = useState ( false )
4756
4857 const {
4958 data : interview ,
@@ -123,7 +132,7 @@ export default function InterviewWaitingRoomPage({
123132
124133 const startInterview = useCallback ( ( ) => {
125134 if ( participants ?. length === 0 ) {
126- alert ( '참가자가 없어요.' )
135+ toast . error ( '참가자가 없어요.' )
127136 router . replace ( '/workspace/interviews' )
128137 return null
129138 }
@@ -137,17 +146,10 @@ export default function InterviewWaitingRoomPage({
137146
138147 const handleEarlyStart = ( ) => {
139148 if ( ! isHost ) {
140- alert ( '면접 호스트만 면접을 시작할 수 있습니다.' )
149+ toast . error ( '면접 호스트만 면접을 시작할 수 있습니다.' )
141150 return
142151 }
143-
144- if (
145- confirm (
146- '면접을 지금 시작하시겠습니까? 모든 참가자에게 알림이 전송됩니다.'
147- )
148- ) {
149- startInterview ( )
150- }
152+ setStartDialogOpen ( true )
151153 }
152154
153155 if ( isLoading ) {
@@ -159,7 +161,7 @@ export default function InterviewWaitingRoomPage({
159161 }
160162
161163 if ( isError ) {
162- alert ( '면접 정보를 불러오는 중 오류가 발생했어요.' )
164+ toast . error ( '면접 정보를 불러오는 중 오류가 발생했어요.' )
163165 router . replace ( '/workspace/interviews' )
164166 return null
165167 }
@@ -343,6 +345,31 @@ export default function InterviewWaitingRoomPage({
343345 </ CardContent >
344346 </ Card >
345347 </ div >
348+ < Dialog open = { startDialogOpen } onOpenChange = { setStartDialogOpen } >
349+ < DialogContent >
350+ < DialogHeader >
351+ < DialogTitle > 면접 시작</ DialogTitle >
352+ </ DialogHeader >
353+ < div >
354+ 면접을 지금 시작하시겠습니까? < br />
355+ 모든 참가자에게 알림이 전송됩니다.
356+ </ div >
357+ < DialogFooter >
358+ < Button variant = "outline" onClick = { ( ) => setStartDialogOpen ( false ) } >
359+ 취소
360+ </ Button >
361+ < Button
362+ className = "bg-[#8FD694] hover:bg-[#7ac47f] text-white"
363+ onClick = { ( ) => {
364+ setStartDialogOpen ( false )
365+ startInterview ( )
366+ } }
367+ >
368+ 확인
369+ </ Button >
370+ </ DialogFooter >
371+ </ DialogContent >
372+ </ Dialog >
346373 </ div >
347374 )
348375}
0 commit comments