"use client"; import { useEffect, useState, useRef } from "react"; import { requestNotificationPermission, onForegroundMessage } from "../utils/firebase"; import AuthService from "../services/AuthService"; export default function NotificationHandler() { const [notification, setNotification] = useState(null); const [showPrompt, setShowPrompt] = useState(false); const initialized = useRef(false); useEffect(() => { const timer = setTimeout(() => { if (initialized.current) return; initialized.current = true; const token = AuthService.getToken(); if (!token) return; // Check current permission status if ("Notification" in window) { if (Notification.permission === "default") { // Not yet asked — show prompt button setShowPrompt(true); } else if (Notification.permission === "granted") { // Already allowed — get token silently initFCM(); } // "denied" — do nothing, user must change in browser settings } }, 1000); return () => clearTimeout(timer); }, []); async function initFCM() { const fcmToken = await requestNotificationPermission(); if (fcmToken) { console.log("[Notifications] FCM token obtained:", fcmToken.substring(0, 20) + "..."); } onForegroundMessage((payload) => { const title = payload.notification?.title || payload.data?.title || "Sweet Home"; const body = payload.notification?.body || payload.data?.body || ""; setNotification({ title, body }); setTimeout(() => setNotification(null), 5000); }); } async function handleEnableNotifications() { setShowPrompt(false); await initFCM(); } return ( <> {/* Permission prompt banner */} {showPrompt && (
تفعيل الإشعارات
اسمح بالإشعارات للبقاء على اطلاع بحجوزاتك وعروضنا.
{notification.title}
{notification.body}