UNPKG

cozy-intent

Version:

Event-based library allowing interactions between React-Native and React applications

92 lines (70 loc) 2.77 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useIsAvailable = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _useWebviewIntent = require("./useWebviewIntent"); var _utils = require("../../utils"); var useIsAvailable = function useIsAvailable(methodName) { var webviewIntent = (0, _useWebviewIntent.useWebviewIntent)(); var _useState = (0, _react.useState)(null), _useState2 = (0, _slicedToArray2.default)(_useState, 2), isAvailable = _useState2[0], setIsAvailable = _useState2[1]; var _useState3 = (0, _react.useState)(undefined), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), error = _useState4[0], setError = _useState4[1]; (0, _react.useEffect)(function () { if (!webviewIntent) return; var checkIsAvailable = /*#__PURE__*/function () { var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { var result; return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.prev = 0; _context.next = 3; return webviewIntent.call('isAvailable', methodName); case 3: result = _context.sent; if (!(typeof result !== 'boolean')) { _context.next = 6; break; } throw new Error("Invalid result from isAvailable method: ".concat(result)); case 6: setError(undefined); setIsAvailable(result); _context.next = 14; break; case 10: _context.prev = 10; _context.t0 = _context["catch"](0); setError((0, _utils.getErrorMessage)(_context.t0)); setIsAvailable(false); case 14: case "end": return _context.stop(); } } }, _callee, null, [[0, 10]]); })); return function checkIsAvailable() { return _ref.apply(this, arguments); }; }(); void checkIsAvailable(); }, [webviewIntent, methodName]); return { isAvailable: isAvailable, error: error }; }; exports.useIsAvailable = useIsAvailable;