UNPKG

@helenejs/react

Version:

Real-time Web Apps for Node.js

39 lines 1.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useConnectionState = useConnectionState; const utils_1 = require("@helenejs/utils"); const react_1 = require("react"); const use_client_1 = require("./use-client"); const use_throttled_events_1 = require("./use-throttled-events"); function useConnectionState() { const client = (0, use_client_1.useClient)(); const intervalRef = (0, react_1.useRef)(null); const [isOffline, setOffline] = (0, react_1.useState)(true); const [isOnline, setOnline] = (0, react_1.useState)(false); const [isConnecting, setConnecting] = (0, react_1.useState)(false); const updateConnectionState = (0, react_1.useCallback)(() => { setOffline(client.isOffline); setOnline(client.isOnline); setConnecting(client.isConnecting); }, [client]); (0, use_throttled_events_1.useThrottledEvents)(client, [ utils_1.ClientEvents.INITIALIZED, utils_1.ClientEvents.WEBSOCKET_CLOSED, utils_1.ClientEvents.CONNECTING, ], updateConnectionState, [updateConnectionState], 16); (0, react_1.useEffect)(() => { if (!client) return; updateConnectionState(); intervalRef.current = setInterval(updateConnectionState, 1000); return () => { clearInterval(intervalRef.current); }; }, [client]); return { isOffline, isOnline, isConnecting, }; } //# sourceMappingURL=use-connection-state.js.map