import { useState, useEffect } from "react"; import { Bell, X } from "lucide-react"; import { Button } from "@/components/ui/button"; import { useToast } from "@/hooks/use-toast"; import { isPushSupported, getExistingSubscription, subscribeToPush } from "@/lib/push-utils"; const DISMISS_KEY = "folx-push-prompt-dismissed"; const DISMISS_DAYS = 7; export default function PushPromptBanner() { const [visible, setVisible] = useState(false); const { toast } = useToast(); useEffect(() => { if (!isPushSupported()) return; if (Notification.permission === "denied") return; const dismissedAt = localStorage.getItem(DISMISS_KEY); if (dismissedAt) { const elapsed = Date.now() - parseInt(dismissedAt, 10); if (elapsed < DISMISS_DAYS * 24 * 60 * 60 * 1000) return; } const timer = setTimeout(async () => { const sub = await getExistingSubscription(); if (!sub) setVisible(true); }, 5000); return () => clearTimeout(timer); }, []); const dismiss = () => { setVisible(false); localStorage.setItem(DISMISS_KEY, Date.now().toString()); }; const accept = async () => { dismiss(); try { await subscribeToPush(); toast({ title: "Benachrichtigungen aktiviert", description: "Sie werden über neue Inhalte informiert." }); } catch (err) { if (Notification.permission === "denied") { toast({ title: "Benachrichtigungen blockiert", description: "Bitte erlauben Sie Benachrichtigungen in Ihren Browsereinstellungen.", variant: "destructive" }); } else { console.error("Push subscription error:", err); toast({ title: "Fehler", description: "Benachrichtigungen konnten nicht aktiviert werden. Bitte versuchen Sie es später erneut.", variant: "destructive" }); } } }; if (!visible) return null; return (

Nichts mehr verpassen!

Erhalten Sie Benachrichtigungen über neue Artikel und Videos von FOLX TV.

); }