'use client'; import React, { useState, useEffect } from 'react'; import { BellRing, X } from 'lucide-react'; import { useAuth } from '@/context/AuthContext'; import { db } from '@/lib/firebase'; import { doc, getDoc, setDoc } from 'firebase/firestore'; interface ReminderBannerProps { userEmail?: string; } export default function ReminderBanner({ userEmail }: ReminderBannerProps) { const [showBanner, setShowBanner] = useState(false); const [reminderTime, setReminderTime] = useState('09:00'); const [isTime, setIsTime] = useState(false); const { user } = useAuth(); useEffect(() => { if (!user) return; // Load settings from Firebase const loadSettingsAndCheck = async () => { try { const settingsRef = doc(db, 'users', user.uid, 'settings', 'notifications'); const settingsSnap = await getDoc(settingsRef); if (!settingsSnap.exists()) return; const settings = settingsSnap.data(); const remindersEnabled = settings.enabled || false; const savedTime = settings.time || '09:00'; const lastReminderDate = settings.lastReminderDate; setReminderTime(savedTime); if (!remindersEnabled) return; // Check if we should show the banner const checkIfTimeToRemind = () => { const now = new Date(); const [hours, minutes] = savedTime.split(':').map(Number); const reminderTodayTime = new Date(); reminderTodayTime.setHours(hours, minutes, 0, 0); // Check if current time is within 5 minutes of reminder time const timeDiff = Math.abs(now.getTime() - reminderTodayTime.getTime()); const withinWindow = timeDiff < 5 * 60 * 1000; // 5 minute window if (withinWindow) { // Check if we already showed reminder today const today = new Date().toISOString().split('T')[0]; const lastDate = lastReminderDate?.split('T')[0]; if (lastDate !== today) { setIsTime(true); setShowBanner(true); // Update last reminder date in Firebase setDoc(settingsRef, { lastReminderDate: new Date().toISOString() }, { merge: true }); } } }; checkIfTimeToRemind(); // Check every minute const interval = setInterval(checkIfTimeToRemind, 60000); return () => clearInterval(interval); } catch (error: any) { if (error?.code !== 'unavailable') { console.error('Error loading reminder settings:', error); } } }; loadSettingsAndCheck(); }, [user]); if (!showBanner) return null; return (

Time to Pray

Take a moment to connect with God and pray.

); }