UNPKG

@trap_stevo/legendarybuilderproreact-ui

Version:

The legendary UI & utility API that makes your application a legendary application. ~ Created by Steven Compton

97 lines 4.08 kB
import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import React, { createContext, useEffect, useState, useContext } from "react"; var ConnectionContext = /*#__PURE__*/createContext(); export var HUDConnectPulseProvider = function HUDConnectPulseProvider(_ref) { var _ref$initialUrl = _ref.initialUrl, initialUrl = _ref$initialUrl === void 0 ? "https://httpstat.us/200" : _ref$initialUrl, _ref$initialTimeCheck = _ref.initialTimeCheckInterval, initialTimeCheckInterval = _ref$initialTimeCheck === void 0 ? 1000 : _ref$initialTimeCheck, _ref$initialPulseInte = _ref.initialPulseInterval, initialPulseInterval = _ref$initialPulseInte === void 0 ? 1000 : _ref$initialPulseInte, _ref$initialPulseTime = _ref.initialPulseTimeout, initialPulseTimeout = _ref$initialPulseTime === void 0 ? 60000 : _ref$initialPulseTime, _ref$usingElectronSig = _ref.usingElectronSignals, usingElectronSignals = _ref$usingElectronSig === void 0 ? false : _ref$usingElectronSig, _ref$pulseConstructor = _ref.pulseConstructor, pulseConstructor = _ref$pulseConstructor === void 0 ? null : _ref$pulseConstructor, _ref$loadingDelay = _ref.loadingDelay, loadingDelay = _ref$loadingDelay === void 0 ? 0 : _ref$loadingDelay, _ref$onLog = _ref.onLog, onLog = _ref$onLog === void 0 ? null : _ref$onLog, children = _ref.children; var _useState = useState(initialTimeCheckInterval), _useState2 = _slicedToArray(_useState, 2), timeCheckInterval = _useState2[0], setTimeCheckInterval = _useState2[1]; var _useState3 = useState(initialPulseInterval), _useState4 = _slicedToArray(_useState3, 2), pulseInterval = _useState4[0], setPulseInterval = _useState4[1]; var _useState5 = useState(initialPulseTimeout), _useState6 = _slicedToArray(_useState5, 2), pulseTimeout = _useState6[0], setPulseTimeout = _useState6[1]; var _useState7 = useState(0), _useState8 = _slicedToArray(_useState7, 2), timeSinceLastCheck = _useState8[0], setTimeSinceLastCheck = _useState8[1]; var _useState9 = useState(null), _useState10 = _slicedToArray(_useState9, 2), connected = _useState10[0], setConnected = _useState10[1]; var _useState11 = useState(initialUrl), _useState12 = _slicedToArray(_useState11, 2), url = _useState12[0], setUrl = _useState12[1]; useEffect(function () { if (usingElectronSignals || !pulseConstructor) { return; } setTimeout(function () { var connectionChecker = new pulseConstructor({ pulseInterval: pulseInterval, pulseTimeout: pulseTimeout, url: url }); connectionChecker.activateConnectionPulse(function () { setTimeSinceLastCheck(0); setConnected(true); }, function () { setTimeSinceLastCheck(connectionChecker.getTimeSinceLastCheck()); setConnected(false); }); var interval = setInterval(function () { setTimeSinceLastCheck(connectionChecker.getTimeSinceLastCheck()); }, timeCheckInterval); return function () { connectionChecker.stopConnectionPulse(); clearInterval(interval); }; }, loadingDelay); }, [pulseConstructor, url, pulseInterval, pulseTimeout, timeCheckInterval, loadingDelay, usingElectronSignals]); useEffect(function () { if (!onLog) { return; } onLog("Connected to WiFi ~ ".concat(connected)); }, [connected]); return /*#__PURE__*/React.createElement(ConnectionContext.Provider, { value: { setTimeSinceLastCheck: setTimeSinceLastCheck, setTimeCheckInterval: setTimeCheckInterval, setPulseInterval: setPulseInterval, setPulseTimeout: setPulseTimeout, setConnected: setConnected, setUrl: setUrl, timeSinceLastCheck: timeSinceLastCheck, connected: connected } }, children); }; export var useHUDConnectPulse = function useHUDConnectPulse() { var context = useContext(ConnectionContext); if (!context) { throw new Error('Must use within an HUDConnectPulseProvider'); } return context; };