@collectionspace/cspace-public-browser
Version:
CollectionSpace public browser
63 lines (61 loc) • 2.17 kB
JavaScript
;
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;