Skip to content

[FE-45] Notification preferences settings page (/settings/notifications) #1303

Description

@yusuftomilola

Overview

Members currently receive all notification types on all channels with no way to opt out. A notification preferences page lets members control exactly which alerts they receive and via which channels, reducing unsubscribe rates and notification fatigue.

Context

  • frontend/app/settings/page.tsx — existing settings page (add a "Notifications" tab or section here)
  • Depends on BE-58 for GET /notifications/preferences and PATCH /notifications/preferences
  • Push notification status connects with the PWA push opt-in (FE-40)

Tasks

  • Add a "Notifications" tab to the /settings page (or a sub-route /settings/notifications)
  • Notification preferences UI — grouped toggle rows:
    • Booking Updates: Booking confirmed, Booking cancelled, Booking reminder
    • Payments: Payment received, Payment failed, Invoice generated
    • Community: New messages, Announcements
    • Events: Event reminders, RSVP confirmations
    • Waitlist: Spot available alerts
  • Per-group: three channel toggle columns — In-App | Email | SMS
    • SMS column: show "Add phone number to enable" link if no phone on file; otherwise show toggle
    • Push column: show current push permission status; "Enable Push" button if not granted (triggers FE-40 flow)
  • "Save Preferences" button at bottom calls PATCH /notifications/preferences with changed values; show success toast
  • On page load, fetch current preferences and pre-fill all toggles
  • Create useNotificationPreferences and useUpdateNotificationPreferences React Query hooks

Files to Modify / Create

  • frontend/app/settings/page.tsx
  • New: frontend/lib/react-query/hooks/notifications/useNotificationPreferences.ts
  • New: frontend/lib/react-query/hooks/notifications/useUpdateNotificationPreferences.ts

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions