refactor: enhance OfflineBanner to accept online status as a prop and update layout-content to pass isOnline state

This commit is contained in:
Usman Baig
2026-02-04 12:34:24 +01:00
parent 44b3cf3fb5
commit 4d477110c8
6 changed files with 8 additions and 12 deletions

View File

@@ -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}

View File

@@ -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 (

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

BIN
public/icon-512x512.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -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"
} }