@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
JavaScript
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;
};