feat: add 'Mark Prayed' button for prayer items with streak tracking

This commit is contained in:
nmemmert committed 2026-01-16 08:47:10 -05:00
1 parent 8105d39554
commit 6c33fc4606
5 files changed
+66 -87

No files matched your search

+20 -7
View File
@@ -39,7 +39,6 @@ export default function Home() {
const [prayFor, setPrayFor] = useState('');
const [answered, setAnswered] = useState(false);
const [answerDetails, setAnswerDetails] = useState('');
const [prayFrequency, setPrayFrequency] = useState(1); // 1-7 times per week
const { user, loading: authLoading } = useAuth();
@@ -109,8 +108,6 @@ export default function Home() {
prayFor: prayFor || undefined,
answered,
answerDetails: answerDetails || undefined,
prayFrequency,
lastPrayedFor: answered ? undefined : new Date().toISOString().split('T')[0],
};
if (editingPrayer) {
@@ -147,7 +144,6 @@ export default function Home() {
setPrayFor(prayer.prayFor || '');
setAnswered(prayer.answered || false);
setAnswerDetails(prayer.answerDetails || '');
setPrayFrequency(prayer.prayFrequency || 1);
setActiveTab('compose');
};
@@ -161,6 +157,25 @@ export default function Home() {
}
};
const handleMarkPrayed = async (prayerId: string) => {
if (!user) return;
try {
const today = new Date().toISOString().split('T')[0];
await updateDoc(doc(db, 'prayers', prayerId), {
lastPrayedFor: today,
});
setPrayers(prev =>
prev.map(p => (p.id === prayerId ? { ...p, lastPrayedFor: today } : p))
);
toast.success('Prayed! 🙏');
} catch (error) {
console.error('Error marking prayed:', error);
toast.error('Failed to update');
}
};
if (authLoading) {
return (
<div className="min-h-screen bg-gradient-to-br from-slate-900 via-black to-slate-800 flex items-center justify-center p-4">
@@ -227,8 +242,6 @@ export default function Home() {
onAnsweredChange={setAnswered}
answerDetails={answerDetails}
onAnswerDetailsChange={setAnswerDetails}
prayFrequency={prayFrequency}
onPrayFrequencyChange={setPrayFrequency}
onSubmit={handleSubmit}
isEditing={!!editingPrayer}
/>
@@ -243,7 +256,7 @@ export default function Home() {
)}
{activeTab === 'praying' && (
<ThingsToPrayFor prayers={prayers.filter(p => !p.answered)} onEdit={handleSelectPrayer} />
<ThingsToPrayFor prayers={prayers.filter(p => !p.answered)} onEdit={handleSelectPrayer} onMarkPrayed={handleMarkPrayed} />
)}
{activeTab === 'reflections' && (