Spaces:
Paused
Paused
| /** | |
| * Navigation helpers for full mock exam flow. | |
| */ | |
| export const FULL_EXAM_STAGES = ['reading', 'listening', 'writing', 'speaking'] | |
| export function fullExamQuery(sessionId) { | |
| return { fullExam: '1', session: sessionId } | |
| } | |
| export function nextStage(current) { | |
| const i = FULL_EXAM_STAGES.indexOf(current) | |
| return i >= 0 && i < FULL_EXAM_STAGES.length - 1 ? FULL_EXAM_STAGES[i + 1] : null | |
| } | |
| /** Route to optional break screen before the next section. */ | |
| export function breakRoute(session, afterStage) { | |
| return { | |
| path: '/full-exam/break', | |
| query: { session: session.sessionId, after: afterStage }, | |
| } | |
| } | |
| export function stageRoute(router, session, stage) { | |
| const set = session.set | |
| const q = fullExamQuery(session.sessionId) | |
| if (stage === 'reading') { | |
| return { path: `/quiz/${set.reading_quiz_id}`, query: { ...q, stage: 'reading' } } | |
| } | |
| if (stage === 'listening') { | |
| return { path: `/quiz/${set.listening_quiz_id}`, query: { ...q, stage: 'listening' } } | |
| } | |
| if (stage === 'writing') { | |
| return { path: `/full-exam/writing`, query: q } | |
| } | |
| if (stage === 'speaking') { | |
| return { path: `/quiz/${set.speaking_quiz_id}`, query: { ...q, stage: 'speaking' } } | |
| } | |
| if (stage === 'done') { | |
| return { path: '/full-exam/result', query: q } | |
| } | |
| return { path: '/full-exam' } | |
| } | |