import { usePage } from '@inertiajs/react'; import { useEffect, useRef } from 'react'; import { usePushNotification } from '@/hooks/use-push-notification'; export function NotificationPermissionPrompt() { const { vapidPublicKey } = usePage().props as { vapidPublicKey?: string }; const hasRequested = useRef(false); const { isSupported, requestPermission, subscribe } = usePushNotification(); useEffect(() => { if (!isSupported || hasRequested.current || !vapidPublicKey) { return; } hasRequested.current = true; if (Notification.permission === 'default') { void requestPermission().then(async (result) => { if (result === 'granted') { await subscribe(vapidPublicKey); } }); } else if (Notification.permission === 'granted') { void subscribe(vapidPublicKey); } }, [isSupported, requestPermission, subscribe, vapidPublicKey]); return null; }