setting up pwa in laravel in new method
This commit is contained in:
@@ -122,35 +122,35 @@ class AdminPanelProvider extends PanelProvider
|
||||
|
||||
// }
|
||||
|
||||
public function boot(): void
|
||||
{
|
||||
FilamentView::registerRenderHook('panels::head.end', function () {
|
||||
// Only inject on the "home" page (or specific route)
|
||||
if (url()->current() == config('app.url') . '/admin') {
|
||||
return '
|
||||
<link rel="manifest" href="' . asset('manifest.json') . '">
|
||||
<meta name="theme-color" content="#007bff">
|
||||
<script>
|
||||
if ("serviceWorker" in navigator) {
|
||||
navigator.serviceWorker.register("/sw.js")
|
||||
.then(reg => console.log("Service Worker registered:", reg.scope))
|
||||
.catch(err => console.error("Service Worker registration failed:", err));
|
||||
}
|
||||
</script>
|
||||
';
|
||||
}
|
||||
// public function boot(): void
|
||||
// {
|
||||
// FilamentView::registerRenderHook('panels::head.end', function () {
|
||||
// // Only inject on the "home" page (or specific route)
|
||||
// if (url()->current() == config('app.url') . '/admin') {
|
||||
// return '
|
||||
// <link rel="manifest" href="' . asset('manifest.json') . '">
|
||||
// <meta name="theme-color" content="#007bff">
|
||||
// <script>
|
||||
// if ("serviceWorker" in navigator) {
|
||||
// navigator.serviceWorker.register("/sw.js")
|
||||
// .then(reg => console.log("Service Worker registered:", reg.scope))
|
||||
// .catch(err => console.error("Service Worker registration failed:", err));
|
||||
// }
|
||||
// </script>
|
||||
// ';
|
||||
// }
|
||||
|
||||
return ''; // Do not inject on other pages
|
||||
});
|
||||
// return ''; // Do not inject on other pages
|
||||
// });
|
||||
|
||||
// Only include PWA install script if on home page
|
||||
FilamentView::registerRenderHook('panels::body.end', function () {
|
||||
if (url()->current() == config('app.url') . '/admin') {
|
||||
return '<script src="' . asset('js/pwa-install.js') . '"></script>';
|
||||
}
|
||||
return '';
|
||||
});
|
||||
}
|
||||
// // Only include PWA install script if on home page
|
||||
// FilamentView::registerRenderHook('panels::body.end', function () {
|
||||
// if (url()->current() == config('app.url') . '/admin') {
|
||||
// return '<script src="' . asset('js/pwa-install.js') . '"></script>';
|
||||
// }
|
||||
// return '';
|
||||
// });
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
26
public/js/pwa-init.js
Normal file
26
public/js/pwa-init.js
Normal file
@@ -0,0 +1,26 @@
|
||||
(function() {
|
||||
// Function to check if app is installed
|
||||
function isPWAInstalled() {
|
||||
return (window.matchMedia('(display-mode: standalone)').matches)
|
||||
|| (window.navigator.standalone === true);
|
||||
}
|
||||
|
||||
// Only run if PWA not installed and not injected yet
|
||||
if (!isPWAInstalled() && !localStorage.getItem('pwaInjected')) {
|
||||
// Dynamically inject manifest
|
||||
const link = document.createElement('link');
|
||||
link.rel = 'manifest';
|
||||
link.href = '/manifest.json';
|
||||
document.head.appendChild(link);
|
||||
|
||||
// Register Service Worker
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('/sw.js')
|
||||
.then(reg => console.log('Service Worker registered:', reg.scope))
|
||||
.catch(err => console.error('SW registration failed:', err));
|
||||
}
|
||||
|
||||
// Mark as injected to prevent running again
|
||||
localStorage.setItem('pwaInjected', 'true');
|
||||
}
|
||||
})();
|
||||
@@ -111,5 +111,11 @@
|
||||
</body>
|
||||
</html> --}}
|
||||
|
||||
<head>
|
||||
<!-- other head content -->
|
||||
@include('partials.pwa')
|
||||
</head>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
2
resources/views/partials/pwa.blade.php
Normal file
2
resources/views/partials/pwa.blade.php
Normal file
@@ -0,0 +1,2 @@
|
||||
{{-- Only include PWA script once --}}
|
||||
<script src="{{ asset('js/pwa-init.js') }}" defer></script>
|
||||
Reference in New Issue
Block a user