UNPKG

@talend/react-containers

Version:

Provide connected components aka containers for @talend/react-cmf based on @talend/react-components.

63 lines (61 loc) 2.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.fetchProducts = fetchProducts; exports.handleOpenProduct = handleOpenProduct; var _reactCmf = _interopRequireDefault(require("@talend/react-cmf")); var _effects = require("redux-saga/effects"); var _HeaderBar = _interopRequireDefault(require("./HeaderBar.connect")); var _HeaderBar2 = _interopRequireDefault(require("./HeaderBar.constant")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /** * This saga takes care of fetching authorized products for the HeaderBar * container according to the provided products URL in the action's payload. * @param {Object} action */ function* fetchProducts(action) { const { url } = action.payload; yield (0, _effects.put)(_HeaderBar.default.setStateAction({ productsFetchState: _HeaderBar2.default.FETCHING_PRODUCTS })); const { response, data } = yield (0, _effects.call)(_reactCmf.default.sagas.http.get, url); if (response.ok) { // Success, update collection yield (0, _effects.put)(_HeaderBar.default.setStateAction({ productsFetchState: _HeaderBar2.default.FETCH_PRODUCTS_SUCCESS })); yield (0, _effects.put)(_reactCmf.default.actions.collections.addOrReplace(_HeaderBar2.default.COLLECTION_ID, data)); } else { // Loading products failed yield (0, _effects.put)(_HeaderBar.default.setStateAction({ productsFetchState: _HeaderBar2.default.FETCH_PRODUCTS_ERROR })); } } /** * Handle the opening of a product from the HeaderBar * Behavior will be extended in the future (interaction with browser extension ...), * for now we only handle link opening * @param {Object} action */ function handleOpenProduct(action) { if ('url' in action.payload && !/^javascript:/.test(action.payload.url.toLowerCase())) { window.location.assign(action.payload.url); } } function* defaultHandler() { yield (0, _effects.takeEvery)(_HeaderBar2.default.HEADER_BAR_FETCH_PRODUCTS, fetchProducts); yield (0, _effects.takeEvery)(_HeaderBar2.default.HEADER_BAR_OPEN_PRODUCT, handleOpenProduct); yield (0, _effects.take)('DO_NOT_QUIT'); } var _default = exports.default = { 'HeaderBar#default': defaultHandler }; //# sourceMappingURL=HeaderBar.sagas.js.map