@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
JavaScript
"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