@atlaskit/editor-plugin-card
Version:
Card plugin for @atlaskit/editor-core
96 lines (94 loc) • 4.41 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useFetchDatasourceInfo = 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");
/**
* @jsxRuntime classic
* @jsx jsx
*/
var useFetchDatasourceInfo = exports.useFetchDatasourceInfo = function useFetchDatasourceInfo(_ref) {
var isRegularCardNode = _ref.isRegularCardNode,
url = _ref.url,
cardContext = _ref.cardContext,
nodeParameters = _ref.nodeParameters;
var _useState = (0, _react.useState)(undefined),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
datasourceId = _useState2[0],
setDatasourceId = _useState2[1];
var _useState3 = (0, _react.useState)(nodeParameters),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
parameters = _useState4[0],
setParameters = _useState4[1];
// Since fetchData() is async, using this ready check to see if we have the parameters before passing it to the modal.
// Only non-datasource nodes will be not ready initially since we need to fetch data.
var _useState5 = (0, _react.useState)(!isRegularCardNode),
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
ready = _useState6[0],
setReady = _useState6[1];
var _useState7 = (0, _react.useState)(undefined),
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
extensionKey = _useState8[0],
setExtensionKey = _useState8[1];
(0, _react.useEffect)(function () {
var fetchDatasource = /*#__PURE__*/function () {
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
var _cardContext$connecti, _datasources$, _datasources$2, response, datasources;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.prev = 0;
if (!(!url || !cardContext)) {
_context.next = 4;
break;
}
// Don't block rendering of modal of somehow we don't get these two args --> just open with empty params
setReady(true);
return _context.abrupt("return");
case 4:
_context.next = 6;
return cardContext === null || cardContext === void 0 || (_cardContext$connecti = cardContext.connections) === null || _cardContext$connecti === void 0 || (_cardContext$connecti = _cardContext$connecti.client) === null || _cardContext$connecti === void 0 ? void 0 : _cardContext$connecti.fetchData(url);
case 6:
response = _context.sent;
datasources = response && response.datasources || [];
setExtensionKey(response === null || response === void 0 ? void 0 : response.meta.key);
setDatasourceId((_datasources$ = datasources[0]) === null || _datasources$ === void 0 ? void 0 : _datasources$.id);
setParameters((_datasources$2 = datasources[0]) === null || _datasources$2 === void 0 ? void 0 : _datasources$2.parameters);
setReady(true);
_context.next = 20;
break;
case 14:
_context.prev = 14;
_context.t0 = _context["catch"](0);
setDatasourceId(undefined);
setParameters(undefined);
setExtensionKey(undefined);
// If fetch somehow errors, still set ready as true so we don't block the rendering of the modal.
// It will just open with empty params.
setReady(true);
case 20:
case "end":
return _context.stop();
}
}, _callee, null, [[0, 14]]);
}));
return function fetchDatasource() {
return _ref2.apply(this, arguments);
};
}();
if (isRegularCardNode) {
void fetchDatasource();
}
}, [isRegularCardNode, cardContext, url]);
return {
datasourceId: datasourceId,
parameters: parameters,
ready: ready,
extensionKey: extensionKey
};
};