"use client"; import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { Loader2, X } from "lucide-react"; /** * Indeterminate loading overlay shown while a chat session is fetched from * the server (e.g. when opening an entry from chat history). It replaces the * misleading welcome screen during the load and lets the user cancel. * * The indicator is deliberately indeterminate: a session fetch reports no * real progress, so a spinner is honest where a percentage bar would be * fabricated. After a while we surface a reassurance hint. */ interface SessionLoadingViewProps { onCancel?: () => void; } // After this long with no response, reassure the user it is still working. const STILL_LOADING_AFTER_MS = 8000; export default function SessionLoadingView({ onCancel, }: SessionLoadingViewProps) { const { t } = useTranslation(); const [showHint, setShowHint] = useState(false); useEffect(() => { const timer = setTimeout(() => setShowHint(true), STILL_LOADING_AFTER_MS); return () => clearTimeout(timer); }, []); return (
{t("Loading conversation")}
{/* Slow-load hint */} {showHint ? ({t("Still loading…")}
) : null}