UNPKG

naruto-run

Version:

A simple React component for running Vonage's Network Precall Test.

110 lines (89 loc) 5.49 kB
"use strict"; require("core-js/modules/web.dom-collections.iterator.js"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("core-js/modules/es.object.assign.js"); require("core-js/modules/es.number.to-fixed.js"); require("core-js/modules/es.parse-float.js"); var _react = _interopRequireWildcard(require("react")); var _opentokNetworkTestJs = _interopRequireDefault(require("opentok-network-test-js")); var _client = _interopRequireDefault(require("@opentok/client")); var _opentok = _interopRequireDefault(require("opentok")); var _propTypes = _interopRequireDefault(require("prop-types")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const OpenTokNetworkTest = props => { (0, _react.useEffect)(() => { if (props.apiKey !== "" && props.apiSecret !== "") generateToken();else props === null || props === void 0 ? void 0 : props.onFailure({ message: "Please add missing API key/secret", error: { message: "No API Key or API Secret" } }); }, []); const generateToken = () => { const opentok = new _opentok.default(props === null || props === void 0 ? void 0 : props.apiKey, props === null || props === void 0 ? void 0 : props.apiSecret); opentok.createSession({ mediaMode: "routed" }, function (error, session) { if (error) props === null || props === void 0 ? void 0 : props.onFailure({ message: "Error creating session", error });else { const sessionid = session.sessionId; const token = opentok.generateToken(sessionid); openTokNetworkTest(sessionid, token); } }); }; const getQuality = function getQuality() { let mos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; if (mos >= 3.8) return "Excellent";else if (mos >= 3.1 && mos <= 3.79) return "Good";else if (mos >= 2.4 && mos <= 3.09) return "Fair";else if (mos >= 1.7 && mos <= 2.39) return "Poor";else return "Bad"; }; const openTokNetworkTest = (sessionId, token) => { const otNetworkTest = new _opentokNetworkTestJs.default(_client.default, { apiKey: props === null || props === void 0 ? void 0 : props.apiKey, sessionId, token }); otNetworkTest.testConnectivity().then(_ => { props === null || props === void 0 ? void 0 : props.onStart(); otNetworkTest.testQuality(function updateCallback(_) {}).then(results => { var _networkTestResults$a, _networkTestResults$v; const networkTestResults = results; Object.assign(networkTestResults === null || networkTestResults === void 0 ? void 0 : networkTestResults.audio, { quality: getQuality(parseFloat(networkTestResults === null || networkTestResults === void 0 ? void 0 : (_networkTestResults$a = networkTestResults.audio) === null || _networkTestResults$a === void 0 ? void 0 : _networkTestResults$a.mos).toFixed(2)) }); Object.assign(networkTestResults === null || networkTestResults === void 0 ? void 0 : networkTestResults.video, { quality: getQuality(parseFloat(networkTestResults === null || networkTestResults === void 0 ? void 0 : (_networkTestResults$v = networkTestResults.video) === null || _networkTestResults$v === void 0 ? void 0 : _networkTestResults$v.mos).toFixed(2)) }); props === null || props === void 0 ? void 0 : props.onSuccess(networkTestResults); }).catch(error => props === null || props === void 0 ? void 0 : props.onFailure({ message: "OpenTok quality test error", error })); }).catch(error => props === null || props === void 0 ? void 0 : props.onFailure({ message: "OpenTok connectivity test error", error })); }; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {}); }; OpenTokNetworkTest.propTypes = { apiKey: _propTypes.default.string.isRequired, apiSecret: _propTypes.default.string.isRequired, onSuccess: _propTypes.default.func, onFailure: _propTypes.default.func, onStart: _propTypes.default.func }; OpenTokNetworkTest.defaultProps = { onSuccess: res => {}, onFailure: err => console.error(err), onStart: () => {} }; var _default = OpenTokNetworkTest; exports.default = _default;