PULSE-31: PWA support and offline banner #4
@@ -45,7 +45,7 @@ export default function LayoutContent({ children }: { children: React.ReactNode
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{auth.user && <OfflineBanner />}
|
{auth.user && <OfflineBanner isOnline={isOnline} />}
|
||||||
<Header
|
<Header
|
||||||
auth={auth}
|
auth={auth}
|
||||||
LinkComponent={Link}
|
LinkComponent={Link}
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { useOnlineStatus } from '@/lib/hooks/useOnlineStatus';
|
|
||||||
import { FiWifiOff } from 'react-icons/fi';
|
import { FiWifiOff } from 'react-icons/fi';
|
||||||
|
|
||||||
export function OfflineBanner() {
|
export function OfflineBanner({ isOnline }: { isOnline: boolean }) {
|
||||||
const isOnline = useOnlineStatus();
|
|
||||||
|
|
||||||
if (isOnline) return null;
|
if (isOnline) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -4,10 +4,9 @@ export function useOnlineStatus() {
|
|||||||
const [isOnline, setIsOnline] = useState(true);
|
const [isOnline, setIsOnline] = useState(true);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// Check initial status
|
if (typeof window === 'undefined') return;
|
||||||
if (typeof window !== 'undefined') {
|
|
||||||
setIsOnline(navigator.onLine);
|
setIsOnline(navigator.onLine);
|
||||||
}
|
|
||||||
|
|
||||||
const handleOnline = () => setIsOnline(true);
|
const handleOnline = () => setIsOnline(true);
|
||||||
const handleOffline = () => setIsOnline(false);
|
const handleOffline = () => setIsOnline(false);
|
||||||
|
|||||||
BIN
public/icon-192x192.png
Normal file
BIN
public/icon-192x192.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.8 KiB |
BIN
public/icon-512x512.png
Normal file
BIN
public/icon-512x512.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
@@ -5,15 +5,15 @@
|
|||||||
"start_url": "/",
|
"start_url": "/",
|
||||||
"display": "standalone",
|
"display": "standalone",
|
||||||
"background_color": "#ffffff",
|
"background_color": "#ffffff",
|
||||||
"theme_color": "#000000",
|
"theme_color": "#FD5E0F",
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "/Icon%20Padding%20left%20%26%20right%20192x192.png",
|
"src": "/icon-192x192.png",
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "/Icon%20Padding%20left%20%26%20right%20512x512.png",
|
"src": "/icon-512x512.png",
|
||||||
"sizes": "512x512",
|
"sizes": "512x512",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user