blob: ae4a97db48a5d1b382ea0205f5ca4ff0fe775f37 [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 ActionTypes from './actiontypes';
import FauxtonAPI from '../../core/api';
import * as ConfigAPI from './api';
export const fetchAndEditConfig = (node) => (dispatch) => {
dispatch({ type: ActionTypes.LOADING_CONFIG });
ConfigAPI.fetchConfig(node).then(res => {
dispatch({
type: ActionTypes.EDIT_CONFIG,
options: {
sections: res.sections,
node
}
});
}).catch(err => {
FauxtonAPI.addNotification({
msg: 'Failed to load the configuration. ' + err.message,
type: 'error',
clear: true
});
dispatch({
type: ActionTypes.EDIT_CONFIG,
options: {
sections: [],
node
}
});
});
};
export const editOption = (options) => (dispatch) => {
dispatch({ type: ActionTypes.EDIT_OPTION, options });
};
export const cancelEdit = (options) => (dispatch) => {
dispatch({ type: ActionTypes.CANCEL_EDIT, options });
};
export const saveOption = (node, options) => (dispatch) => {
dispatch({ type: ActionTypes.SAVING_OPTION, options });
const { sectionName, optionName, value } = options;
return ConfigAPI.saveConfigOption(node, sectionName, optionName, value).then(
() => optionSaveSuccess(options, dispatch)
).catch(
(err) => optionSaveFailure(options, err.message, dispatch)
);
};
const optionSaveSuccess = (options, dispatch) => {
dispatch({ type: ActionTypes.OPTION_SAVE_SUCCESS, options });
FauxtonAPI.addNotification({
msg: `Option ${options.optionName} saved`,
type: 'success'
});
};
const optionSaveFailure = (options, error, dispatch) => {
dispatch({ type: ActionTypes.OPTION_SAVE_FAILURE, options });
FauxtonAPI.addNotification({
msg: `Option save failed: ${error}`,
type: 'error'
});
};
export const addOption = (node, options) => (dispatch) => {
dispatch({ type: ActionTypes.ADDING_OPTION });
const { sectionName, optionName, value } = options;
return ConfigAPI.saveConfigOption(node, sectionName, optionName, value).then(
() => optionAddSuccess(options, dispatch)
).catch(
(err) => optionAddFailure(options, err.message, dispatch)
);
};
const optionAddSuccess = (options, dispatch) => {
dispatch({ type: ActionTypes.OPTION_ADD_SUCCESS, options });
FauxtonAPI.addNotification({
msg: `Option ${options.optionName} added`,
type: 'success'
});
};
const optionAddFailure = (options, error, dispatch) => {
dispatch({ type: ActionTypes.OPTION_ADD_FAILURE, options });
FauxtonAPI.addNotification({
msg: `Option add failed: ${error}`,
type: 'error'
});
};
export const deleteOption = (node, options) => (dispatch) => {
dispatch({ type: ActionTypes.DELETING_OPTION, options });
const { sectionName, optionName } = options;
return ConfigAPI.deleteConfigOption(node, sectionName, optionName).then(
() => optionDeleteSuccess(options, dispatch)
).catch(
(err) => optionDeleteFailure(options, err.message, dispatch)
);
};
const optionDeleteSuccess = (options, dispatch) => {
dispatch({ type: ActionTypes.OPTION_DELETE_SUCCESS, options });
FauxtonAPI.addNotification({
msg: `Option ${options.optionName} deleted`,
type: 'success'
});
};
const optionDeleteFailure = (options, error, dispatch) => {
dispatch({ type: ActionTypes.OPTION_DELETE_FAILURE, options });
FauxtonAPI.addNotification({
msg: `Option delete failed: ${error}`,
type: 'error'
});
};