checking other branch

This commit is contained in:
masongga
2026-05-23 18:59:27 -06:00
parent 94dbd18946
commit 7deb3e83cb
4 changed files with 193 additions and 16 deletions

View File

@@ -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<DailyQuizAnswers>(
defaultDailyQuizAnswers,
);
const [journal, setJournal] = useState("");
const [submission, setSubmission] = useState<DailyQuizSubmission | null>(
null,
);
const [isSubmitting, setIsSubmitting] = useState(false);
const [error, setError] = useState<string | null>(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 = <K extends keyof DailyQuizAnswers>(
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() {
<Card>
<CardHeader>
<CardTitle className="text-base">Daily journal</CardTitle>
<CardDescription>Write about your day.</CardDescription>
<CardDescription>
Write about your day. Saved separately from your quiz answers.
</CardDescription>
</CardHeader>
<CardContent className="space-y-3">
<Label htmlFor="journal" className="sr-only">
@@ -140,15 +172,17 @@ export function DailyQuizForm() {
</Label>
<textarea
id="journal"
value={answers.journal}
value={journal}
disabled={isCompleted}
onChange={(event) => updateAnswer("journal", event.target.value)}
onChange={(event) => setJournal(event.target.value)}
className="min-h-32 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-60"
placeholder="Write about your day."
/>
</CardContent>
</Card>
{error ? <p className="text-sm text-red-500">{error}</p> : null}
{isCompleted && submission ? (
<Card>
<CardContent className="flex flex-col items-center gap-4 pt-6">
@@ -177,7 +211,7 @@ export function DailyQuizForm() {
</Card>
) : (
<Button className="w-full" disabled={!canSubmit} onClick={handleSubmit}>
Complete daily quiz
{isSubmitting ? "Saving..." : "Complete daily quiz"}
</Button>
)}
</div>