Saltar al contenido principal

@rogeriodocarmo/offline-detector-react

La capa React sobre el motor core: un provider, hooks, estado de descarte, textos incluidos y los tipos compartidos en los que se apoyan los paquetes web y nativo. No tiene DOM ni importaciones de React Native; así, una sola copia sirve para ambos. Un adapter de plataforma, de los paquetes web o nativo, aporta las señales de la plataforma. Requiere React 18 o superior.

OfflineDetectorProvider​

import {
OfflineDetectorProvider,
useNetworkStatus,
} from '@rogeriodocarmo/offline-detector-react';
import {
createWebAdapter,
createWebProbeFetch,
} from '@rogeriodocarmo/offline-detector-web';

const adapter = createWebAdapter();
const fetch = createWebProbeFetch();

export function App() {
return (
<OfflineDetectorProvider adapter={adapter} fetch={fetch}>
<Screen />
</OfflineDetectorProvider>
);
}

El provider crea un detector por montaje, lo inicia en un efecto y lo detiene al desmontarse. El montaje extra del StrictMode de React no inicia una segunda comprobación ni filtra temporizadores u oyentes. Nada se ejecuta durante el renderizado; por eso renderizar en el servidor e hidratar es seguro.

PropNotas
adapterObligatorio. Un PlatformAdapter. Se lee una vez por montaje.
probeProbeOptions del core (urls, timeoutMs, intervalMs, method, mode). Se lee una vez.
fetchEl transporte de la sonda. Se lee una vez. En web, usa createWebProbeFetch().
onOffline(state) => void. Se dispara cuando el estado pasa a offline, incluido un primer resultado sin conexión.
onOnline(state) => void. Se dispara cuando el estado pasa de offline de nuevo a online.
onChange(state, previous) => void. Se dispara en cada cambio de estado, incluido el primer resultado.
onError(error) => void. Recibe excepciones lanzadas por callbacks y por onResult.
initialStatus'online' u 'offline'. Pista para SSR: lo que supone el primer renderizado.
detectorPunto de prueba: usa este detector en lugar de crear uno. Los callbacks no se conectan a él.

Los callbacks se disparan solo en transiciones de estado reales, se leen mediante una ref (pasar una función nueva en cada renderizado nunca reinicia el detector) y onOnline no se dispara cuando el primer resultado es en línea.

Hooks​

HookDevuelve
useNetworkStatus()OfflineState más isOnline: boolean y checkNow()
useOfflineDetector()El OfflineDetectorInstance del core, para uso avanzado
useRecheckOnReturn(opts)boolean, el último estado en línea conocido
useCheckingFeedback()'brief' o 'none', para paquetes de interfaz
useDismissals(options){ isDismissed(piece), dismiss(piece) }

Todo hook lanza un error claro cuando se usa fuera de <OfflineDetectorProvider> (o del <OfflineDetector> de los paquetes web y nativo, que lo proporciona). Los paquetes web y nativo reexportan useNetworkStatus, useRecheckOnReturn, useOfflineDetector y useCheckingFeedback, así que una app que usa uno de ellos no necesita una dependencia directa de este paquete.

type UseNetworkStatusResult = OfflineState & {
isOnline: boolean; // true mientras el estado es 'unknown'
checkNow(): Promise<OfflineState>; // las llamadas simultáneas comparten una sonda
};

useRecheckOnReturn recibe { checkingFeedback?: 'brief' | 'none'; onResult?: (isOnline) => void }. Consulta Comprobar al volver.

Utilidades de descarte​

interface DismissOptions {
dismissible?: boolean; // global, por defecto true
snackbar?: { dismissible?: boolean };
banner?: { dismissible?: boolean };
indicator?: { dismissible?: boolean };
onDismiss?(piece: 'snackbar' | 'banner' | 'indicator'): void;
}

resolveDismissible(piece, options) es pura: un valor por pieza prevalece sobre el global y el valor por defecto es true. useDismissals(options) mantiene los descartes en memoria hasta la siguiente transición de estado. Consulta Descartar.

Textos e idiomas​

FunciónQué hace
STRINGSLas tablas incluidas de en, pt-BR y es.
resolveLocale(input?)'en', 'pt-BR' o 'es'. Nunca lanza un error.
resolveStrings(locale?, overrides?)La tabla del idioma con un Partial<OfflineStrings> combinado encima.
offlineMessage(state, strings, distinguishReason?)El texto de desconexión; consciente del motivo cuando el tercer argumento es true.
indicatorName(strings, label)El nombre accesible del indicador, con {status} rellenado.

Consulta Idiomas y textos.

Tipos​

OfflineUiOptions (descarte, idioma, textos, indicador, banner, snackbar, movimiento, esquema de color), PieceRenderProps<Theme = unknown> (el contrato de render props, consulta Slots), OfflineStrings, Locale, PieceName, DismissiblePiece, IndicatorPosition, DismissOptions, RecheckOnReturnOptions, UseNetworkStatusResult y OfflineDetectorProviderProps se exportan solo como tipos.

Índice de exportaciones​

Todo lo que exporta el paquete, valores y tipos.

  • DismissiblePiece (tipo)
  • DismissOptions (tipo)
  • indicatorName (función)
  • IndicatorPosition (tipo)
  • Locale (tipo)
  • OfflineDetectorProvider (componente)
  • OfflineDetectorProviderProps (tipo)
  • offlineMessage (función)
  • OfflineStrings (tipo)
  • OfflineUiOptions (tipo)
  • packageName (constante)
  • PieceName (tipo)
  • PieceRenderProps (tipo)
  • RecheckOnReturnOptions (tipo)
  • resolveDismissible (función)
  • resolveLocale (función)
  • resolveStrings (función)
  • STRINGS (constante)
  • useCheckingFeedback (hook)
  • useDismissals (hook)
  • useNetworkStatus (hook)
  • UseNetworkStatusResult (tipo)
  • useOfflineDetector (hook)
  • useRecheckOnReturn (hook)