import React, { useEffect, useState } from 'react'; import { Download, X } from 'lucide-react'; import { usePWA } from '../context/PWAContext'; const PWAInstallPrompt: React.FC = () => { const { deferredPrompt, isInstallable, isIOS, isStandalone, installApp } = usePWA(); const [showInstallPrompt, setShowInstallPrompt] = useState(false); useEffect(() => { // Show install prompt if installable and not already installed if (isInstallable && !isStandalone) { setShowInstallPrompt(true); } // For iOS, show prompt if not installed if (isIOS && !isStandalone) { setShowInstallPrompt(true); } }, [isInstallable, isStandalone, isIOS]); const handleInstallClick = async () => { if (isIOS) { // iOS doesn't support programmatic install, show instructions return; } await installApp(); setShowInstallPrompt(false); }; const handleDismiss = () => { setShowInstallPrompt(false); // Remember dismissal for 7 days localStorage.setItem('pwa-install-dismissed', Date.now().toString()); }; // Don't show if already installed if (isStandalone) { return null; } // Check if dismissed recently (within 7 days) const dismissedTime = localStorage.getItem('pwa-install-dismissed'); if (dismissedTime) { const daysSinceDismissed = (Date.now() - parseInt(dismissedTime)) / (1000 * 60 * 60 * 24); if (daysSinceDismissed < 7) { return null; } } if (!showInstallPrompt) { return null; } return (

Install App

{isIOS ? (

Install this app on your iPhone:

  1. Tap the Share button
  2. Scroll and tap "Add to Home Screen"
  3. Tap "Add" in the top right
) : ( <>

Install our app for a better experience and offline access!

)}
); }; export default PWAInstallPrompt;