Skip to content

(SP: 1) [Frontend] Fix guest result screen lost on language switch #261

Closed

Description

@LesiaUKR

Goal

Allow guests to change language on quiz result screen without losing their result.

Problem

  1. Guest completes quiz → sees result screen
  2. Guest clicks language switch (UA → EN)
  3. Guest sees Rules screen instead of Result ❌
  4. Pending result in localStorage is safe, but UI shows wrong state

Root Cause

Two issues:

Issue A: Session cleared for guests

// QuizContainer.tsx - handleSubmit
clearQuizSession(quizId);  // Ran for ALL users, including guests

Issue B: Only 'in_progress' sessions restored

// quiz-session.ts - loadQuizSession
if (data.status !== 'in_progress') {
  clearQuizSession(quizId);
  return null;
}

Solution

Fix A: Only clear session for authenticated users

// QuizContainer.tsx - handleSubmit
if (!isGuest) {
  clearQuizSession(quizId);
}

Fix B: Allow restoring 'completed' sessions

// quiz-session.ts - loadQuizSession
if (data.status === 'rules') {  // Changed condition
  clearQuizSession(quizId);
  return null;
}
// Now 'completed' sessions are also restored

Files Changed

File Change
components/quiz/QuizContainer.tsx Conditional clear for non-guests
lib/quiz/quiz-session.ts Allow 'completed' status restore

Testing Checklist

  • Guest completes quiz → sees result
  • Guest switches language → still sees result
  • Guest clicks "Login" → redirects to login
  • After login → dashboard shows saved banner
  • Authenticated user → session cleared after submit (unchanged)

User Experience

  • Guest can now change language on result screen
  • Result stays visible, "Login to save" buttons still work
  • No data loss — pending result in localStorage preserved

Metadata

Metadata

Assignees

Labels

UXUser experience improvements, visual polish, interaction feedbackbugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions