'use client'; import { useState, useEffect } from 'react'; import { Note } from '@/lib/types'; import { useToast } from '@/components/ui/toast'; export function useReminderCheck(notes: Note[]) { const [notifiedReminders, setNotifiedReminders] = useState>(new Set()); const { addToast } = useToast(); useEffect(() => { const checkReminders = () => { const now = new Date(); notes.forEach(note => { if (!note.reminder) return; const reminderDate = new Date(note.reminder); // Check if reminder is due (within last minute or future) // We only notify if it's due now or just passed, not old overdue ones (unless we want to catch up) // Let's say: notify if reminder time is passed AND we haven't notified yet. if (reminderDate <= now && !notifiedReminders.has(note.id)) { // Play sound (optional) // const audio = new Audio('/notification.mp3'); // audio.play().catch(e => console.log('Audio play failed', e)); addToast("🔔 Reminder: " + (note.title || "Untitled Note"), "info"); // Mark as notified in local state setNotifiedReminders(prev => new Set(prev).add(note.id)); } }); }; // Check immediately checkReminders(); // Then check every 30 seconds const interval = setInterval(checkReminders, 30000); return () => clearInterval(interval); }, [notes, notifiedReminders, addToast]); }