diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 6d1c40e..acf9705 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -97,89 +97,89 @@ class AdminPanelProvider extends PanelProvider ->plugin(FilamentSpatieRolesPermissionsPlugin::make()); } - public function boot(): void - { + // public function boot(): void + // { - FilamentView::registerRenderHook( - 'panels::head.end', - fn() => ' - - - - ' - ); + // FilamentView::registerRenderHook( + // 'panels::head.end', + // fn() => ' + // + // + // + // ' + // ); - /** - * ✅ 2. Add install popup for mobile/desktop - */ - FilamentView::registerRenderHook( - 'panels::body.end', - fn() => ' - - ' - ); - } + // window.addEventListener("appinstalled", () => { + // console.log("🎉 PWA installed successfully!"); + // const banner = document.getElementById("install-banner"); + // if (banner) banner.remove(); + // }); + // + // ' + // ); + // } } diff --git a/app/Providers/PWAServiceProvider.php b/app/Providers/PWAServiceProvider.php new file mode 100644 index 0000000..477d1d3 --- /dev/null +++ b/app/Providers/PWAServiceProvider.php @@ -0,0 +1,43 @@ + ' + + + + ' + ); + + FilamentView::registerRenderHook('panels::body.end', function () { + return ''; + }); + + } +} diff --git a/public/js/pwa-install.js b/public/js/pwa-install.js new file mode 100644 index 0000000..80fb37a --- /dev/null +++ b/public/js/pwa-install.js @@ -0,0 +1,55 @@ +let deferredPrompt; + +window.addEventListener("beforeinstallprompt", (e) => { + e.preventDefault(); + deferredPrompt = e; + + // Prevent duplicate banner + if (document.getElementById("install-banner")) return; + + const banner = document.createElement("div"); + banner.id = "install-banner"; + banner.innerHTML = ` +
+ 📱 Install Quality App App?
+ +
+ `; + document.body.appendChild(banner); + + document.getElementById("installBtn").addEventListener("click", async () => { + banner.remove(); + deferredPrompt.prompt(); + const { outcome } = await deferredPrompt.userChoice; + console.log("User install choice:", outcome); + deferredPrompt = null; + }); +}); + +window.addEventListener("appinstalled", () => { + console.log("🎉 PDS installed successfully!"); + const banner = document.getElementById("install-banner"); + if (banner) banner.remove(); +});