diff --git a/components/daily-quiz/daily-quiz-form.tsx b/components/daily-quiz/daily-quiz-form.tsx index b90cdd6..eedb2b2 100644 --- a/components/daily-quiz/daily-quiz-form.tsx +++ b/components/daily-quiz/daily-quiz-form.tsx @@ -25,29 +25,45 @@ import { getTodayDateKey, saveDailyQuizSubmission, } from "@/lib/daily-quiz-storage"; +import { + getJournalEntryForToday, + saveJournalEntry, +} from "@/lib/journal-storage"; export function DailyQuizForm() { const [answers, setAnswers] = useState( defaultDailyQuizAnswers, ); + const [journal, setJournal] = useState(""); const [submission, setSubmission] = useState( null, ); + const [isSubmitting, setIsSubmitting] = useState(false); + const [error, setError] = useState(null); const [isReady, setIsReady] = useState(false); useEffect(() => { - const existingSubmission = getDailyQuizSubmission(); + async function loadDailyCheckIn() { + const existingSubmission = getDailyQuizSubmission(); + const existingJournal = await getJournalEntryForToday(); - if (existingSubmission?.date === getTodayDateKey()) { - setSubmission(existingSubmission); - setAnswers(existingSubmission.answers); + if (existingSubmission?.date === getTodayDateKey()) { + setSubmission(existingSubmission); + setAnswers(existingSubmission.answers); + } + + if (existingJournal) { + setJournal(existingJournal.content); + } + + setIsReady(true); } - setIsReady(true); + void loadDailyCheckIn(); }, []); const isCompleted = submission !== null; - const canSubmit = !isCompleted; + const canSubmit = !isCompleted && !isSubmitting; const updateAnswer = ( key: K, @@ -59,13 +75,27 @@ export function DailyQuizForm() { })); }; - const handleSubmit = () => { + const handleSubmit = async () => { if (!canSubmit) { return; } - const savedSubmission = saveDailyQuizSubmission(answers); - setSubmission(savedSubmission); + setIsSubmitting(true); + setError(null); + + try { + const savedSubmission = saveDailyQuizSubmission(answers); + await saveJournalEntry(journal); + setSubmission(savedSubmission); + } catch (submitError) { + setError( + submitError instanceof Error + ? submitError.message + : "Could not save your daily check-in.", + ); + } finally { + setIsSubmitting(false); + } }; if (!isReady) { @@ -132,7 +162,9 @@ export function DailyQuizForm() { Daily journal - Write about your day. + + Write about your day. Saved separately from your quiz answers. +