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
|
// public function boot(): void
|
||||||
{
|
// {
|
||||||
FilamentView::registerRenderHook('panels::head.end', function () {
|
// FilamentView::registerRenderHook('panels::head.end', function () {
|
||||||
// Only inject on the "home" page (or specific route)
|
// // Only inject on the "home" page (or specific route)
|
||||||
if (url()->current() == config('app.url') . '/admin') {
|
// if (url()->current() == config('app.url') . '/admin') {
|
||||||
return '
|
// return '
|
||||||
<link rel="manifest" href="' . asset('manifest.json') . '">
|
// <link rel="manifest" href="' . asset('manifest.json') . '">
|
||||||
<meta name="theme-color" content="#007bff">
|
// <meta name="theme-color" content="#007bff">
|
||||||
<script>
|
// <script>
|
||||||
if ("serviceWorker" in navigator) {
|
// if ("serviceWorker" in navigator) {
|
||||||
navigator.serviceWorker.register("/sw.js")
|
// navigator.serviceWorker.register("/sw.js")
|
||||||
.then(reg => console.log("Service Worker registered:", reg.scope))
|
// .then(reg => console.log("Service Worker registered:", reg.scope))
|
||||||
.catch(err => console.error("Service Worker registration failed:", err));
|
// .catch(err => console.error("Service Worker registration failed:", err));
|
||||||
}
|
// }
|
||||||
</script>
|
// </script>
|
||||||
';
|
// ';
|
||||||
}
|
// }
|
||||||
|
|
||||||
return ''; // Do not inject on other pages
|
// return ''; // Do not inject on other pages
|
||||||
});
|
// });
|
||||||
|
|
||||||
// Only include PWA install script if on home page
|
// // Only include PWA install script if on home page
|
||||||
FilamentView::registerRenderHook('panels::body.end', function () {
|
// FilamentView::registerRenderHook('panels::body.end', function () {
|
||||||
if (url()->current() == config('app.url') . '/admin') {
|
// if (url()->current() == config('app.url') . '/admin') {
|
||||||
return '<script src="' . asset('js/pwa-install.js') . '"></script>';
|
// return '<script src="' . asset('js/pwa-install.js') . '"></script>';
|
||||||
}
|
// }
|
||||||
return '';
|
// 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>
|
</body>
|
||||||
</html> --}}
|
</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