Fix ts errors

This commit is contained in:
jeez26 2025-09-08 16:28:31 +03:00
parent 365f1bde7a
commit 65a9dddf08
2 changed files with 33 additions and 30 deletions

View File

@ -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>
)
}
}

View File

@ -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>
)
}
}