UNPKG

@reaqtive/q

Version:

A react library to connect React to the QIX engine and to Qlik Capability APIs

91 lines (75 loc) 3.03 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.QAppProvider = exports.QApp = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _qCapabilityApi = require("./q-capability-api"); var _propTypes = _interopRequireDefault(require("prop-types")); var _jsxFileName = "/Users/paolo_d/Projects/React/reaqtive/packages/q/src/lib/contexts/q-app.js"; const QApp = _react.default.createContext(); /** * QApp * This context provides a handler for the application (qApp) object provided by Qlik Capability APIs. * The handler is an object with 3 props: * qLoading: initially true, it is set to false when the promise to get the qApp is resolved * qApp: the app provided by the qlik Capability APIs. It is initially null and it is set when the promis is resolved * qError: initially null it is set to true if the promise to get the qApp returns an error */ // const QAppProvider = (props) => { // return ( // <QCapabilityApiProvider qConfig={props.qConfig}> // <QCapabilityApiConsumer qConfig={props.qConfig}> // {props.children} // </QCapabilityApiConsumer> // </QCapabilityApiProvider> // ) // } exports.QApp = QApp; const QAppProvider = props => { const initialQAppHandler = { qApp: null, qError: null, qLoading: true }; const _useState = (0, _react.useState)(initialQAppHandler), _useState2 = (0, _slicedToArray2.default)(_useState, 2), qAppHandler = _useState2[0], setQAppHandler = _useState2[1]; const qCapabilityApiHandler = (0, _react.useContext)(_qCapabilityApi.QCapabilityApi); (0, _react.useEffect)(() => { if (qCapabilityApiHandler.qError) setQAppHandler({ qApp: null, qError: qCapabilityApiHandler.qError, qLoading: false }); if (qCapabilityApiHandler.qlik) { const qlik = qCapabilityApiHandler.qlik; const qConfig = { host: props.qConfig.host, port: props.qConfig.port, prefix: props.qConfig.prefix !== '' ? "/".concat(props.qConfig.prefix, "/") : '/', //props.qConfig.prefix==='' && props.qConfig.port!=='4848'?'/':props.qConfig.prefix, isSecure: props.qConfig.secure }; const qApp = qlik.openApp(props.qConfig.appId, qConfig); setQAppHandler({ qApp: qApp, qError: false, qLoading: false }); } }, [qCapabilityApiHandler, props.qConfig.host, props.qConfig.port, props.qConfig.prefix, props.qConfig.secure, props.qConfig.appId]); return _react.default.createElement(QApp.Provider, { value: qAppHandler, __source: { fileName: _jsxFileName, lineNumber: 48 }, __self: void 0 }, props.children); }; exports.QAppProvider = QAppProvider;