UNPKG

@collectionspace/cspace-public-browser

Version:
63 lines (61 loc) 2.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setMedia = exports.findMedia = void 0; var _get = _interopRequireDefault(require("lodash/get")); var _config = _interopRequireDefault(require("../config")); var _reducers = require("../reducers"); var _actionCodes = require("../constants/actionCodes"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /* global fetch */ const setMedia = (referenceValue, institutionId, mediaCsids, mediaAltTexts, title) => ({ type: _actionCodes.SET_MEDIA, payload: { title, csids: mediaCsids, altTexts: mediaAltTexts }, meta: { institutionId, referenceValue } }); exports.setMedia = setMedia; const findMedia = (referenceValue, institutionId) => (dispatch, getState) => { if ((0, _reducers.getMedia)(getState(), referenceValue, institutionId)) { return Promise.resolve(); } let gatewayUrl; if (institutionId === null) { gatewayUrl = _config.default.get('gatewayUrl'); } else { gatewayUrl = _config.default.get(['institutions', institutionId, 'gatewayUrl']); } const url = `${gatewayUrl}/es/doc/_search`; const referenceField = _config.default.get('referenceField'); const query = { _source: ['collectionspace_denorm:mediaCsid', 'collectionspace_denorm:mediaAltText', 'collectionspace_denorm:title'], query: { term: { [referenceField]: referenceValue } }, size: 1, terminate_after: 1 }; return fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(query) }).then(response => response.json()).then(data => { const source = (0, _get.default)(data, ['hits', 'hits', 0, '_source']); const title = (0, _get.default)(source, 'collectionspace_denorm:title'); const mediaCsids = (0, _get.default)(source, 'collectionspace_denorm:mediaCsid') || []; const mediaAltTexts = (0, _get.default)(source, 'collectionspace_denorm:mediaAltText') || []; return dispatch(setMedia(referenceValue, institutionId, mediaCsids, mediaAltTexts, title)); }); }; exports.findMedia = findMedia;