diff --git a/migrations/0002_add_reminder_frequency.sql b/migrations/0002_add_reminder_frequency.sql new file mode 100644 index 0000000..0c607c2 --- /dev/null +++ b/migrations/0002_add_reminder_frequency.sql @@ -0,0 +1 @@ +ALTER TABLE ReminderSettings ADD COLUMN frequency TEXT DEFAULT 'daily'; diff --git a/src/app/api/reminders/route.ts b/src/app/api/reminders/route.ts index 6ed4292..e1bd4eb 100644 --- a/src/app/api/reminders/route.ts +++ b/src/app/api/reminders/route.ts @@ -15,12 +15,14 @@ export async function GET() { return NextResponse.json({ enabled: false, reminderTime: '09:00', + frequency: 'daily', }); } return NextResponse.json({ enabled: !!settings.enabled, reminderTime: settings.reminderTime, + frequency: settings.frequency || 'daily', }); } catch (error) { console.error('Error fetching reminder settings:', error); @@ -35,13 +37,14 @@ export async function POST(request: NextRequest) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } - const body = await request.json() as { enabled?: boolean; reminderTime?: string }; - const { enabled, reminderTime } = body; + const body = await request.json() as { enabled?: boolean; reminderTime?: string; frequency?: string }; + const { enabled, reminderTime, frequency } = body; const settings = await upsertReminderSettingsD1( session.user.id, enabled ?? false, - reminderTime ?? '09:00' + reminderTime ?? '09:00', + frequency ?? 'daily' ); if (!settings) { @@ -51,6 +54,7 @@ export async function POST(request: NextRequest) { return NextResponse.json({ enabled: !!settings.enabled, reminderTime: settings.reminderTime, + frequency: settings.frequency || 'daily', }); } catch (error) { console.error('Error saving reminder settings:', error); diff --git a/src/components/UserHeader.tsx b/src/components/UserHeader.tsx index ccd7a69..36c2292 100644 --- a/src/components/UserHeader.tsx +++ b/src/components/UserHeader.tsx @@ -33,9 +33,10 @@ interface UserHeaderProps { export function UserHeader({ user, preferences }: UserHeaderProps) { const [userName, setUserName] = useState(null); - const [reminderSettings, setReminderSettings] = useState({ enabled: false, reminderTime: '09:00' }); + const [reminderSettings, setReminderSettings] = useState({ enabled: false, reminderTime: '09:00', frequency: 'daily' }); const [showReminderDialog, setShowReminderDialog] = useState(false); const [localTime, setLocalTime] = useState('09:00'); + const [localFrequency, setLocalFrequency] = useState<'daily' | 'hourly'>('daily'); const router = useRouter(); const { theme, toggleTheme } = useTheme(); const { isSupported, permission, requestPermission } = useNotifications(reminderSettings); @@ -55,6 +56,7 @@ export function UserHeader({ user, preferences }: UserHeaderProps) { setReminderSettings(reminders); setLocalTime(reminders.reminderTime); + setLocalFrequency(reminders.frequency || 'daily'); }; loadData(); }, [preferences]); @@ -76,6 +78,13 @@ export function UserHeader({ user, preferences }: UserHeaderProps) { await saveReminderSettings(newSettings); }; + const handleFrequencyChange = async (newFrequency: 'daily' | 'hourly') => { + setLocalFrequency(newFrequency); + const newSettings = { ...reminderSettings, frequency: newFrequency }; + setReminderSettings(newSettings); + await saveReminderSettings(newSettings); + }; + const initials = [user.firstName?.[0], user.lastName?.[0]] .filter(Boolean) .join('') @@ -91,12 +100,21 @@ export function UserHeader({ user, preferences }: UserHeaderProps) { return ( <> -
+ {/* Cloudy/Foggy effect overlay */} +
+
+
+
+ {/* Subtle moving fog layer */} +
+
+ {/* Edge blur overlay - fades content into header */}
-
+

{reminderSettings.enabled ? ( @@ -215,7 +233,7 @@ export function UserHeader({ user, preferences }: UserHeaderProps) {

{userName && ( -
+

Welcome {userName}, you got this!

@@ -228,7 +246,7 @@ export function UserHeader({ user, preferences }: UserHeaderProps) { - Daily Reminders + Notification Settings @@ -243,9 +261,14 @@ export function UserHeader({ user, preferences }: UserHeaderProps) { ) : ( )} - - {reminderSettings.enabled ? 'Reminders On' : 'Reminders Off'} - +
+ + {reminderSettings.enabled ? 'Notifications On' : 'Notifications Off'} + + + {reminderSettings.enabled ? 'You will be notified to log usage' : 'Turn on to get reminders'} + +
- {/* Time Picker */} + {/* Frequency Selection */} {reminderSettings.enabled && ( +
+ +
+ + +
+
+ )} + + {/* Time Picker (Only for Daily) */} + {reminderSettings.enabled && localFrequency === 'daily' && (
)} + {/* Hourly Info */} + {reminderSettings.enabled && localFrequency === 'hourly' && ( +
+

+ + You'll receive reminders every hour during active hours (9 AM - 9 PM). +

+
+ )} + {/* Request Permission Button */} {isSupported && permission === 'default' && (