import { useState, useEffect } from 'react'; interface BeforeInstallPromptEvent extends Event { prompt: () => Promise; userChoice: Promise<{ outcome: 'accepted' | 'dismissed' }>; } export function InstallPrompt() { const [deferredPrompt, setDeferredPrompt] = useState(null); const [showInstall, setShowInstall] = useState(false); const [installed, setInstalled] = useState(false); useEffect(() => { const handler = (e: Event) => { e.preventDefault(); setDeferredPrompt(e as BeforeInstallPromptEvent); setShowInstall(true); }; window.addEventListener('beforeinstallprompt', handler); window.addEventListener('appinstalled', () => { setInstalled(true); setShowInstall(false); setDeferredPrompt(null); }); return () => { window.removeEventListener('beforeinstallprompt', handler); }; }, []); const handleInstall = async () => { if (!deferredPrompt) return; deferredPrompt.prompt(); const { outcome } = await deferredPrompt.userChoice; if (outcome === 'accepted') { setInstalled(true); setShowInstall(false); } setDeferredPrompt(null); }; if (!showInstall || installed) return null; return (
INSTALL DUMPSTER

Add to your home screen for the full experience. Push notifications, offline access, and more.

); }