Fix ts errors
This commit is contained in:
parent
365f1bde7a
commit
65a9dddf08
@ -9,7 +9,7 @@ export default function InterviewPage() {
|
||||
const params = useParams()
|
||||
const router = useRouter()
|
||||
const resumeId = parseInt(params.id as string)
|
||||
|
||||
|
||||
const { data: validationData, isLoading, error } = useValidateInterview(resumeId)
|
||||
|
||||
const handleInterviewEnd = () => {
|
||||
@ -31,12 +31,15 @@ export default function InterviewPage() {
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
if (error || !validationData?.can_interview) {
|
||||
const errorMessage = error?.response?.status === 404
|
||||
? 'Резюме не найдено'
|
||||
: error?.response?.status === 400
|
||||
? 'Резюме еще не готово к собеседованию'
|
||||
: validationData?.message || 'Собеседование недоступно'
|
||||
let errorMessage = ''
|
||||
if (error instanceof Response) {
|
||||
if (error.status === 404) errorMessage = "Резюме не найдено";
|
||||
else if (error.status === 400) errorMessage = "Резюме еще не готово к собеседованию" ;
|
||||
else errorMessage = validationData?.message || 'Собеседование недоступно' ;
|
||||
}
|
||||
|
||||
|
||||
return (
|
||||
<div className="flex flex-col items-center justify-center min-h-screen bg-gray-50">
|
||||
@ -78,7 +81,7 @@ export default function InterviewPage() {
|
||||
<ArrowLeft className="h-5 w-5 mr-2" />
|
||||
Вернуться назад
|
||||
</button>
|
||||
|
||||
|
||||
<div className="text-center">
|
||||
<h1 className="text-lg font-semibold text-gray-900">
|
||||
HR Собеседование
|
||||
@ -87,16 +90,16 @@ export default function InterviewPage() {
|
||||
Резюме #{resumeId}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div className="w-24"></div> {/* Spacer for centering */}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Interview Session */}
|
||||
<InterviewSession
|
||||
resumeId={resumeId}
|
||||
onEnd={handleInterviewEnd}
|
||||
<InterviewSession
|
||||
resumeId={ resumeId }
|
||||
onEnd={ handleInterviewEnd }
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -5,10 +5,10 @@ import { Room, RoomEvent, Track, RemoteTrack, LocalTrack } from 'livekit-client'
|
||||
import { useTracks, RoomAudioRenderer, LiveKitRoom, useRoomContext } from '@livekit/components-react'
|
||||
import { useInterviewToken } from '@/hooks/useResume'
|
||||
import { useForceEndInterview } from '@/hooks/useSession'
|
||||
import {
|
||||
Mic,
|
||||
MicOff,
|
||||
Phone,
|
||||
import {
|
||||
Mic,
|
||||
MicOff,
|
||||
Phone,
|
||||
PhoneOff,
|
||||
Volume2,
|
||||
VolumeX,
|
||||
@ -19,7 +19,7 @@ import {
|
||||
|
||||
interface InterviewSessionProps {
|
||||
resumeId: number
|
||||
sessionId: number
|
||||
sessionId?: number
|
||||
onEnd?: () => void
|
||||
}
|
||||
|
||||
@ -93,9 +93,9 @@ function InterviewRoom({ resumeId, onEnd, sessionId }: InterviewSessionProps) {
|
||||
const tracks = useTracks([Track.Source.Microphone, Track.Source.ScreenShare], {
|
||||
onlySubscribed: false,
|
||||
})
|
||||
|
||||
|
||||
const forceEndMutation = useForceEndInterview()
|
||||
|
||||
|
||||
const [state, setState] = useState<InterviewState>({
|
||||
isConnected: false,
|
||||
isRecording: false,
|
||||
@ -112,20 +112,20 @@ function InterviewRoom({ resumeId, onEnd, sessionId }: InterviewSessionProps) {
|
||||
if (!room) return
|
||||
|
||||
const handleConnected = () => {
|
||||
setState(prev => ({
|
||||
...prev,
|
||||
isConnected: true,
|
||||
connectionState: 'connected'
|
||||
setState(prev => ({
|
||||
...prev,
|
||||
isConnected: true,
|
||||
connectionState: 'connected'
|
||||
}))
|
||||
// Начинаем собеседование
|
||||
startInterview()
|
||||
}
|
||||
|
||||
const handleDisconnected = () => {
|
||||
setState(prev => ({
|
||||
...prev,
|
||||
isConnected: false,
|
||||
connectionState: 'disconnected'
|
||||
setState(prev => ({
|
||||
...prev,
|
||||
isConnected: false,
|
||||
connectionState: 'disconnected'
|
||||
}))
|
||||
if (onEnd) {
|
||||
onEnd()
|
||||
@ -152,7 +152,7 @@ function InterviewRoom({ resumeId, onEnd, sessionId }: InterviewSessionProps) {
|
||||
|
||||
const startInterview = async () => {
|
||||
if (!room) return
|
||||
|
||||
|
||||
try {
|
||||
// Отправляем сигнал серверу о начале собеседования
|
||||
await room.localParticipant.publishData(
|
||||
@ -269,7 +269,7 @@ function InterviewRoom({ resumeId, onEnd, sessionId }: InterviewSessionProps) {
|
||||
return (
|
||||
<div className="flex flex-col items-center justify-center min-h-screen p-6">
|
||||
<RoomAudioRenderer />
|
||||
|
||||
|
||||
<div className="bg-white rounded-2xl shadow-xl p-8 max-w-2xl w-full">
|
||||
{/* Header */}
|
||||
<div className="text-center mb-8">
|
||||
@ -339,4 +339,4 @@ function InterviewRoom({ resumeId, onEnd, sessionId }: InterviewSessionProps) {
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user