blob: d8ba4cd571d963c403c6048b6eef67efd7a05707 [file] [log] [blame]
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
import FauxtonAPI from "../../../core/api";
import ActionTypes from "./actiontypes";
const _getDatabaseName = ({sidebar}) => {
if (!sidebar || sidebar.loading) {
return '';
}
return sidebar.database.safeID();
};
const dispatchNewOptions = (options) => {
if (options.database.safeID() !== _getDatabaseName(FauxtonAPI.reduxState())) {
FauxtonAPI.reduxDispatch({
type: ActionTypes.SIDEBAR_FETCHING
});
}
options.designDocs.fetch().then(() => {
FauxtonAPI.reduxDispatch({
type: ActionTypes.SIDEBAR_NEW_OPTIONS,
options: options
});
}, xhr => {
let errorMsg = 'Unable to update the sidebar.';
if (xhr.responseJSON && xhr.responseJSON.error === 'not_found') {
const databaseName = options.designDocs.database.safeID();
errorMsg = `The ${databaseName} database does not exist.`;
FauxtonAPI.navigate('/', {trigger: true});
}
FauxtonAPI.addNotification({
msg: errorMsg,
type: "error",
clear: true
});
});
};
const dispatchUpdateDesignDocs = (designDocs) => {
FauxtonAPI.reduxDispatch({
type: ActionTypes.SIDEBAR_FETCHING
});
designDocs.fetch().then(function () {
FauxtonAPI.reduxDispatch({
type: ActionTypes.SIDEBAR_UPDATED_DESIGN_DOCS,
options: {
designDocs: designDocs
}
});
});
};
const dispatchHideDeleteIndexModal = () => {
FauxtonAPI.reduxDispatch({
type: ActionTypes.SIDEBAR_HIDE_DELETE_INDEX_MODAL
});
};
const dispatchExpandSelectedItem = (selectedNavItem) => {
FauxtonAPI.reduxDispatch({
type: ActionTypes.SIDEBAR_EXPAND_SELECTED_ITEM,
options: {
selectedNavItem: selectedNavItem
}
});
};
const toggleContent = (designDoc, indexGroup) => (dispatch) => {
dispatch({
type: ActionTypes.SIDEBAR_TOGGLE_CONTENT,
designDoc: designDoc,
indexGroup: indexGroup
});
};
const showDeleteIndexModal = (indexName, designDocName, indexLabel, onDelete) => (dispatch) => {
dispatch({
type: ActionTypes.SIDEBAR_SHOW_DELETE_INDEX_MODAL,
options: {
indexName: indexName,
indexLabel: indexLabel,
designDocName: designDocName,
onDelete: onDelete
}
});
};
const hideDeleteIndexModal = () => (dispatch) => {
dispatch({
type: ActionTypes.SIDEBAR_HIDE_DELETE_INDEX_MODAL
});
};
const showCloneIndexModal = (indexName, designDocName, indexLabel, onSubmit) => (dispatch) => {
dispatch({
type: ActionTypes.SIDEBAR_SHOW_CLONE_INDEX_MODAL,
options: {
sourceIndexName: indexName,
sourceDesignDocName: designDocName,
onSubmit: onSubmit,
indexLabel: indexLabel,
cloneIndexModalTitle: 'Clone ' + indexLabel
}
});
};
const hideCloneIndexModal = () => (dispatch) => {
dispatch({
type: ActionTypes.SIDEBAR_HIDE_CLONE_INDEX_MODAL
});
};
const updateNewDesignDocName = (designDocName) => (dispatch) => {
dispatch({
type: ActionTypes.SIDEBAR_CLONE_MODAL_DESIGN_DOC_NEW_NAME_UPDATED,
options: {
value: designDocName
}
});
};
const updateNewDesignDocPartitioned = (isPartitioned) => (dispatch) => {
dispatch({
type: ActionTypes.SIDEBAR_CLONE_MODAL_DESIGN_DOC_NEW_PARTITIONED_UPDATED,
options: {
value: isPartitioned
}
});
};
const selectDesignDoc = (designDoc) => (dispatch) => {
dispatch({
type: ActionTypes.SIDEBAR_CLONE_MODAL_DESIGN_DOC_CHANGE,
options: {
value: designDoc
}
});
};
const setNewCloneIndexName = (indexName) => (dispatch) => {
dispatch({
type: ActionTypes.SIDEBAR_CLONE_MODAL_UPDATE_INDEX_NAME,
options: {
value: indexName
}
});
};
export default {
dispatchNewOptions,
dispatchUpdateDesignDocs,
toggleContent,
showDeleteIndexModal,
hideDeleteIndexModal,
dispatchHideDeleteIndexModal,
showCloneIndexModal,
hideCloneIndexModal,
updateNewDesignDocName,
updateNewDesignDocPartitioned,
selectDesignDoc,
setNewCloneIndexName,
dispatchExpandSelectedItem
};