// Main app shell — routes between home / chat / quizzes

// localStorage helpers — keyed per student email
function loadStudentData(email) {
  try {
    return JSON.parse(localStorage.getItem(`glenwood_hub_${email}`)) || {};
  } catch { return {}; }
}
function saveStudentData(email, data) {
  try { localStorage.setItem(`glenwood_hub_${email}`, JSON.stringify(data)); } catch {}
}

function App() {
  const [route, setRoute]             = useState("home");
  const [studentEmail, setStudentEmail] = useState(null);
  const [studentName,  setStudentName]  = useState(null);
  const [quizProgress, setQuizProgress] = useState({});

  // Called by EmailEntryForm on both home and quizzes screens
  function onIdentify({ name, email }) {
    const stored = loadStudentData(email);
    setStudentEmail(email);
    setStudentName(name);
    setQuizProgress(stored.progress || {});
    // Persist name so next visit auto-fills it
    saveStudentData(email, { ...stored, name, progress: stored.progress || {} });
  }

  // Called by QuizRunner when a quiz finishes
  function onQuizComplete(lessonId, result) {
    const stored = loadStudentData(studentEmail);
    const updatedProgress = { ...(stored.progress || {}), [lessonId]: result };
    setQuizProgress(updatedProgress);
    saveStudentData(studentEmail, { ...stored, progress: updatedProgress });
  }

  function onSignOut() {
    setStudentEmail(null);
    setStudentName(null);
    setQuizProgress({});
    setRoute("home");
  }

  let screen;
  if (route === "home") {
    screen = (
      <HomeScreen
        setRoute={setRoute}
        studentEmail={studentEmail}
        studentName={studentName}
        onIdentify={onIdentify}
        quizProgress={quizProgress}
      />
    );
  } else if (route === "chat") {
    screen = <ChatScreen goBack={() => setRoute("home")} studentName={studentName} />;
  } else if (route === "quizzes") {
    screen = (
      <QuizzesIndex
        setRoute={setRoute}
        studentEmail={studentEmail}
        studentName={studentName}
        onIdentify={onIdentify}
        quizProgress={quizProgress}
      />
    );
  } else if (route.startsWith("quiz:")) {
    const id = route.slice(5);
    screen = (
      <QuizRunner
        quizId={id}
        setRoute={setRoute}
        studentEmail={studentEmail}
        studentName={studentName}
        onComplete={onQuizComplete}
      />
    );
  }

  return (
    <div>
      <HubHeader
        route={route.startsWith("quiz:") ? "quizzes" : route}
        setRoute={setRoute}
        studentName={studentName}
        onSignOut={onSignOut}
      />
      {screen}
    </div>
  );
}

ReactDOM.createRoot(document.getElementById("root")).render(<App />);
