mirror of
https://github.com/wu736139669/hapi.git
synced 2026-08-08 07:17:39 +00:00
feat: implement progressive web app support with offline capabilities
Add complete PWA implementation including service worker registration, offline support, and installation prompts: - Add vite-plugin-pwa and workbox-window dependencies for PWA tooling - Configure VitePWA plugin with web app manifest and app metadata - Set up Workbox caching strategies for API endpoints and CDN assets - Implement service worker auto-update with user-triggered refresh - Create usePWAInstall hook to handle beforeinstallprompt events - Create useOnlineStatus hook for monitoring network connectivity - Add InstallPrompt component with haptic feedback integration - Add OfflineBanner component to notify users of offline status - Configure PWA icons and assets (64x64, 192x192, 512x512 variants) - Add TypeScript type declarations for virtual PWA register module - Integrate PWA components and service worker into App.tsx and main.tsx - Add PWA meta tags and viewport configuration to index.html
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import { useSyncExternalStore } from 'react'
|
||||
|
||||
function subscribe(callback: () => void): () => void {
|
||||
window.addEventListener('online', callback)
|
||||
window.addEventListener('offline', callback)
|
||||
return () => {
|
||||
window.removeEventListener('online', callback)
|
||||
window.removeEventListener('offline', callback)
|
||||
}
|
||||
}
|
||||
|
||||
function getSnapshot(): boolean {
|
||||
return navigator.onLine
|
||||
}
|
||||
|
||||
function getServerSnapshot(): boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
export function useOnlineStatus(): boolean {
|
||||
return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)
|
||||
}
|
||||
Reference in New Issue
Block a user