import { ReactNode } from 'react'; import { NetworkErrorBanner } from '@/components/error/NetworkErrorBanner'; import { SubmissionQueueIndicator } from '@/components/submission/SubmissionQueueIndicator'; import { useNetworkStatus } from '@/hooks/useNetworkStatus'; import { useSubmissionQueue } from '@/hooks/useSubmissionQueue'; interface ResilienceProviderProps { children: ReactNode; } /** * ResilienceProvider wraps the app with network error handling * and submission queue management UI */ export function ResilienceProvider({ children }: ResilienceProviderProps) { const { isOnline } = useNetworkStatus(); const { queuedItems, lastSyncTime, nextRetryTime, retryItem, retryAll, removeItem, clearQueue, } = useSubmissionQueue({ autoRetry: true, retryDelayMs: 5000, maxRetries: 3, }); return ( <> {/* Network Error Banner - Shows at top when offline or errors present */} {/* Main Content */}
{children}
{/* Floating Queue Indicator - Shows in bottom right */} {queuedItems.length > 0 && (
)} ); }