Skip to content

Commit a79dec1

Browse files
committed
fix : api가 하드코딩된 시간만 보내고 있던 문제 해결
1 parent d13ebd4 commit a79dec1

File tree

10 files changed

+302
-129
lines changed

10 files changed

+302
-129
lines changed

app/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ export default function LandingPage() {
1010
<div className="container mx-auto px-4 py-4 flex justify-between items-center">
1111
<div className="flex items-center space-x-2">
1212
<div className="w-8 h-8 rounded-full bg-[#8FD694] flex items-center justify-center">
13-
<span className="text-white font-bold">Injob</span>
13+
<span className="text-white font-bold">In</span>
1414
</div>
15-
<span className="font-bold text-xl">Injob</span>
15+
<span className="font-bold text-xl">job</span>
1616
</div>
1717
<div className="flex items-center space-x-4">
1818
<Link

app/workspace/interviews/group/community/page.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { HeaderWithNotifications } from '@/components/header-with-notifications'
1818
import { CommunityLayout } from '@/components/community-layout'
1919
import { getGroupInterviewCards } from '@/apis/interview'
2020
import { useQuery } from '@tanstack/react-query'
21+
import LoadingSpinner from '@/components/loading'
2122

2223
export default function InterviewCommunityPage() {
2324
const { data, isLoading, error } = useQuery({
@@ -175,7 +176,7 @@ export default function InterviewCommunityPage() {
175176
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-4">
176177
{isLoading ? (
177178
<div className="col-span-full py-12 text-center text-gray-500">
178-
로딩 중...
179+
<LoadingSpinner />
179180
</div>
180181
) : error ? (
181182
<div className="col-span-full py-12 text-center text-red-500">

app/workspace/interviews/group/waiting/[id]/page.tsx

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -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}

app/workspace/interviews/individual/waiting/[id]/page.tsx

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,13 @@ export default function IndividualInterviewWaitingRoomPage({
3434
const timerRef = useRef<NodeJS.Timeout | null>(null)
3535
const router = useRouter()
3636

37-
// 임시: getGroupInterviewDetail 재사용 (실제 API 분리 필요)
3837
const { data: interview } = useQuery({
3938
queryKey: ['interview', interviewId],
4039
queryFn: () => getGroupInterviewDetail(Number(interviewId)),
4140
select: data => data.result,
4241
enabled: !!interviewId,
4342
})
4443

45-
// 이미 시작된 면접인지 체크
46-
if (interview?.startedAt && new Date(interview.startedAt) < new Date()) {
47-
alert('이미 시작된 면접이거나, 종료된 면접입니다.')
48-
router.replace('/workspace/interviews')
49-
return
50-
}
51-
52-
// 카운트다운
5344
useEffect(() => {
5445
if (!interview?.startedAt) return
5546
const calculateCountdown = () => {
@@ -81,13 +72,17 @@ export default function IndividualInterviewWaitingRoomPage({
8172
}
8273
}, [interview?.startedAt])
8374

84-
// 면접 시작
85-
// 사용자한테 바로 시작할건지 물어보는 팝업 띄우기
75+
if (interview?.startedAt && new Date(interview.startedAt) < new Date()) {
76+
alert('이미 시작된 면접이거나, 종료된 면접입니다.')
77+
router.replace('/workspace/interviews')
78+
return null
79+
}
80+
8681
const startInterview = () => {
8782
if (confirm('면접을 바로 시작하시겠습니까?')) {
8883
setIsStarting(true)
8984
setTimeout(() => {
90-
window.location.href = `/workspace/interviews/session/${interviewId}`
85+
router.replace(`/workspace/interviews/session/${interviewId}`)
9186
}, 2000)
9287
}
9388
}

0 commit comments

Comments
 (0)