ai-interview-mentor / frontend /src /store /interviewStore.ts
adeshboudh16
fix: interview turn limits, LLM fallback, and completion UI
b49a2dd
import { create } from 'zustand'
import type { Message } from '../types'
interface InterviewState {
sessionId: string | null
topicId: string | null
messages: Message[]
turnCount: number
maxTurns: number
status: 'idle' | 'loading' | 'waiting' | 'finished'
}
interface InterviewActions {
startSession: (sessionId: string, topicId: string, firstMessage: string) => void
addMessage: (message: Message) => void
setTurnCount: (count: number) => void
setStatus: (status: InterviewState['status']) => void
reset: () => void
}
const initialState: InterviewState = {
sessionId: null,
topicId: null,
messages: [],
turnCount: 0,
maxTurns: 5,
status: 'idle',
}
export const useInterviewStore = create<InterviewState & InterviewActions>((set) => ({
...initialState,
startSession: (sessionId, topicId, firstMessage) =>
set({
sessionId,
topicId,
messages: [{ role: 'ai', content: firstMessage }],
turnCount: 0,
status: 'waiting',
}),
addMessage: (message) =>
set((state) => ({ messages: [...state.messages, message] })),
setTurnCount: (count) => set({ turnCount: count }),
setStatus: (status) => set({ status }),
reset: () => set(initialState),
}))