UNPKG

@atlaskit/editor-plugin-card

Version:

Card plugin for @atlaskit/editor-core

96 lines (94 loc) 4.41 kB
"use strict"; 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 }; };