From 8d5ffc6fed1dab677365ab02738b7439d6f35be2 Mon Sep 17 00:00:00 2001 From: masongga Date: Sat, 23 May 2026 19:53:18 -0600 Subject: [PATCH] daily quiz entries store in db correctly --- components/avatar/avatar-status-card.tsx | 12 +- components/daily-quiz/daily-quiz-form.tsx | 54 ++++--- .../daily-quiz/daily-quiz-link-button.tsx | 8 +- components/habits/habit-tracker.tsx | 2 +- lib/avatar-state.ts | 39 ++++- lib/daily-quiz-storage.ts | 151 +++++++++++++----- lib/daily-tasks.ts | 15 +- lib/habit-catalog.ts | 2 +- lib/journal-storage.ts | 110 ------------- .../20260523120000_journal_entries.sql | 35 ---- 10 files changed, 197 insertions(+), 231 deletions(-) delete mode 100644 lib/journal-storage.ts delete mode 100644 supabase/migrations/20260523120000_journal_entries.sql diff --git a/components/avatar/avatar-status-card.tsx b/components/avatar/avatar-status-card.tsx index fe6e3a5..17de203 100644 --- a/components/avatar/avatar-status-card.tsx +++ b/components/avatar/avatar-status-card.tsx @@ -29,10 +29,14 @@ export function AvatarStatusCard() { const [isReady, setIsReady] = useState(false); useEffect(() => { - const checkedIn = hasCompletedDailyQuizToday(); - setHasCheckedInToday(checkedIn); - setCondition(getAvatarConditionForToday() ?? defaultAvatarCondition); - setIsReady(true); + async function loadStatus() { + const checkedIn = await hasCompletedDailyQuizToday(); + setHasCheckedInToday(checkedIn); + setCondition((await getAvatarConditionForToday()) ?? defaultAvatarCondition); + setIsReady(true); + } + + void loadStatus(); }, []); if (!isReady) { diff --git a/components/daily-quiz/daily-quiz-form.tsx b/components/daily-quiz/daily-quiz-form.tsx index eedb2b2..00fee4b 100644 --- a/components/daily-quiz/daily-quiz-form.tsx +++ b/components/daily-quiz/daily-quiz-form.tsx @@ -16,19 +16,18 @@ import { import { Label } from "@/components/ui/label"; import { defaultDailyQuizAnswers, + formatSleepHours, + SLEEP_HOURS_MAX, + SLEEP_HOURS_MIN, + SLEEP_HOURS_STEP, WELLNESS_SCALE_MAX, type DailyQuizAnswers, type DailyQuizSubmission, } from "@/lib/avatar-state"; import { - getDailyQuizSubmission, - getTodayDateKey, - saveDailyQuizSubmission, + getDailyEntryForToday, + saveDailyEntry, } from "@/lib/daily-quiz-storage"; -import { - getJournalEntryForToday, - saveJournalEntry, -} from "@/lib/journal-storage"; export function DailyQuizForm() { const [answers, setAnswers] = useState( @@ -44,19 +43,23 @@ export function DailyQuizForm() { useEffect(() => { async function loadDailyCheckIn() { - const existingSubmission = getDailyQuizSubmission(); - const existingJournal = await getJournalEntryForToday(); + try { + const existingEntry = await getDailyEntryForToday(); - if (existingSubmission?.date === getTodayDateKey()) { - setSubmission(existingSubmission); - setAnswers(existingSubmission.answers); + if (existingEntry) { + setSubmission(existingEntry); + setAnswers(existingEntry.answers); + setJournal(existingEntry.journal); + } + } catch (loadError) { + setError( + loadError instanceof Error + ? loadError.message + : "Could not load today's check-in.", + ); + } finally { + setIsReady(true); } - - if (existingJournal) { - setJournal(existingJournal.content); - } - - setIsReady(true); } void loadDailyCheckIn(); @@ -84,9 +87,8 @@ export function DailyQuizForm() { setError(null); try { - const savedSubmission = saveDailyQuizSubmission(answers); - await saveJournalEntry(journal); - setSubmission(savedSubmission); + const savedEntry = await saveDailyEntry(answers, journal); + setSubmission(savedEntry); } catch (submitError) { setError( submitError instanceof Error @@ -117,7 +119,7 @@ export function DailyQuizForm() { Wellness - Sliders from 1 to 5 for how you're doing today. + Rate your wellness from 1 to 5. Sleep length uses hours. @@ -146,6 +148,10 @@ export function DailyQuizForm() { id="sleep-length" label="How long did you sleep?" value={answers.sleepLength} + min={SLEEP_HOURS_MIN} + max={SLEEP_HOURS_MAX} + step={SLEEP_HOURS_STEP} + formatValue={formatSleepHours} disabled={isCompleted} onChange={(value) => updateAnswer("sleepLength", value)} /> @@ -162,9 +168,7 @@ export function DailyQuizForm() { Daily journal - - Write about your day. Saved separately from your quiz answers. - + Write about your day.