decap-cms-core
Version:
Decap CMS core application, see decap-cms package for the main distribution.
86 lines (83 loc) • 2.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DEPLOY_PREVIEW_SUCCESS = exports.DEPLOY_PREVIEW_REQUEST = exports.DEPLOY_PREVIEW_FAILURE = void 0;
exports.loadDeployPreview = loadDeployPreview;
var _backend = require("../backend");
var _reducers = require("../reducers");
var _notifications = require("./notifications");
const DEPLOY_PREVIEW_REQUEST = exports.DEPLOY_PREVIEW_REQUEST = 'DEPLOY_PREVIEW_REQUEST';
const DEPLOY_PREVIEW_SUCCESS = exports.DEPLOY_PREVIEW_SUCCESS = 'DEPLOY_PREVIEW_SUCCESS';
const DEPLOY_PREVIEW_FAILURE = exports.DEPLOY_PREVIEW_FAILURE = 'DEPLOY_PREVIEW_FAILURE';
function deployPreviewLoading(collection, slug) {
return {
type: DEPLOY_PREVIEW_REQUEST,
payload: {
collection,
slug
}
};
}
function deployPreviewLoaded(collection, slug, deploy) {
const {
url,
status
} = deploy;
return {
type: DEPLOY_PREVIEW_SUCCESS,
payload: {
collection,
slug,
url,
status
}
};
}
function deployPreviewError(collection, slug) {
return {
type: DEPLOY_PREVIEW_FAILURE,
payload: {
collection,
slug
}
};
}
/**
* Requests a deploy preview object from the registered backend.
*/
function loadDeployPreview(collection, slug, entry, published, opts) {
return async (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
const collectionName = collection.get('name');
// Exit if currently fetching
const deployState = (0, _reducers.selectDeployPreview)(state, collectionName, slug);
if (deployState && deployState.isFetching) {
return;
}
dispatch(deployPreviewLoading(collectionName, slug));
try {
/**
* `getDeploy` is for published entries, while `getDeployPreview` is for
* unpublished entries.
*/
const deploy = published ? backend.getDeploy(collection, slug, entry) : await backend.getDeployPreview(collection, slug, entry, opts);
if (deploy) {
return dispatch(deployPreviewLoaded(collectionName, slug, deploy));
}
return dispatch(deployPreviewError(collectionName, slug));
} catch (error) {
console.error(error);
dispatch((0, _notifications.addNotification)({
message: {
details: error.message,
key: 'ui.toast.onFailToLoadDeployPreview'
},
type: 'error',
dismissAfter: 8000
}));
dispatch(deployPreviewError(collectionName, slug));
}
};
}