@reaqtive/q
Version:
A react library to connect React to the QIX engine and to Qlik Capability APIs
88 lines (72 loc) • 2.8 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.QDocProvider = exports.QDoc = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _qGlobal = require("./q-global");
var _jsxFileName = "/Users/paolo_d/Projects/React/reaqtive/packages/q/src/lib/contexts/q-doc.js";
const QDoc = _react.default.createContext();
/**
* QDoc
* This context provides a handler for the qDoc provided by Qlik engine Api.
* The handler is an object with 3 props:
* qDoc: the actual qDoc provided by the qEngine. It is initially null and it is set when the promis is resolved
* qError: initially null it is set to true if the promise for the qDoc returns an error
* qLoading: initially true, it is set to false when the promise to get the qDoc is resolved
* https://help.qlik.com/en-US/sense-developer/February2019/APIs/EngineAPI/index.html
*/
// const QDocProvider = (props) => {
// return (
// <QGlobalProvider qConfig={props.qConfig}>
// <QGlobalConsumer qConfig={props.qConfig}>
// {props.children}
// </QGlobalConsumer>
// </QGlobalProvider>
// )
// }
exports.QDoc = QDoc;
const QDocProvider = props => {
const initialQDocHandler = {
qDoc: null,
qError: null,
qLoading: true
};
const _useState = (0, _react.useState)(initialQDocHandler),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
qDocHandler = _useState2[0],
setQDocHandler = _useState2[1];
const qGlobalHandler = (0, _react.useContext)(_qGlobal.QGlobal);
(0, _react.useEffect)(() => {
if (qGlobalHandler.qError) setQDocHandler({
qDoc: null,
qError: qGlobalHandler.qError,
qLoading: false
});
if (qGlobalHandler.qGlobal) qGlobalHandler.qGlobal.openDoc(props.qConfig.appId).then(qDoc => setQDocHandler({
qDoc: qDoc,
qError: false,
qLoading: false
})).catch(qError => setQDocHandler({
qDoc: null,
qError: (0, _objectSpread2.default)({}, qError, {
rqtvMessage: 'error loading qDoc'
}),
qLoading: false
}));
}, [qGlobalHandler, props.qConfig.appId]);
return _react.default.createElement(QDoc.Provider, {
value: qDocHandler,
__source: {
fileName: _jsxFileName,
lineNumber: 40
},
__self: void 0
}, props.children);
};
exports.QDocProvider = QDocProvider;