app/addons/documents/sidebar/actions.js (146 lines of code) (raw):

// 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 };