Skip to content
Snippets Groups Projects
Commit 179ab17e authored by Tom Robinson's avatar Tom Robinson
Browse files

Add 'warnings' support to settings. Implement for email 'corrections'

parent 04138f46
No related branches found
No related tags found
No related merge requests found
......@@ -6,6 +6,7 @@ import people from "metabase/admin/people/people";
import databases from "metabase/admin/databases/database";
import datamodel from "metabase/admin/datamodel/datamodel";
import permissions from "metabase/admin/permissions/permissions";
import settings from "metabase/admin/settings/settings";
import { combineReducers } from "metabase/lib/redux";
......@@ -14,4 +15,5 @@ export default combineReducers({
datamodel,
people,
permissions,
settings
})
......@@ -31,12 +31,19 @@ export default class SettingsEmailForm extends Component {
componentWillMount() {
// this gives us an opportunity to load up our formData with any existing values for elements
this.updateFormData(this.props);
}
componentWillReceiveProps(nextProps) {
this.updateFormData(nextProps);
}
updateFormData(props) {
let formData = {};
this.props.elements.forEach(function(element) {
for (const element of props.elements) {
formData[element.key] = element.value;
});
this.setState({formData});
}
this.setState({ formData });
}
componentDidMount() {
......
......@@ -45,6 +45,9 @@ export default class SettingsSetting extends Component {
{ errorMessage &&
<div className="text-error text-bold pt1">{errorMessage}</div>
}
{ setting.warning &&
<div className="text-gold text-bold pt1">{setting.warning}</div>
}
</li>
);
}
......
......@@ -270,7 +270,15 @@ for (const section of SECTIONS) {
section.slug = slugify(section.name);
}
export const getSettings = state => state.settings.settings;
export const getSettings = createSelector(
state => state.settings.settings,
state => state.admin.settings.warnings,
(settings, warnings) =>
settings.map(setting => warnings[setting.key] ?
{ ...setting, warning: warnings[setting.key] } :
setting
)
)
export const getSettingValues = createSelector(
getSettings,
......
import { createThunkAction } from "metabase/lib/redux";
import { createThunkAction, handleActions, combineReducers } from "metabase/lib/redux";
import { SettingsApi, EmailApi, SlackApi } from "metabase/services";
......@@ -36,8 +36,9 @@ export const UPDATE_EMAIL_SETTINGS = "metabase/admin/settings/UPDATE_EMAIL_SETTI
export const updateEmailSettings = createThunkAction(UPDATE_EMAIL_SETTINGS, function(settings) {
return async function(dispatch, getState) {
try {
await EmailApi.updateSettings(settings);
const result = await EmailApi.updateSettings(settings);
await dispatch(refreshSiteSettings());
return result;
} catch(error) {
console.log("error updating email settings", settings, error);
throw error;
......@@ -76,3 +77,13 @@ export const reloadSettings = createThunkAction(RELOAD_SETTINGS, function() {
await dispatch(refreshSiteSettings());
}
});
// REDUCERS
export const warnings = handleActions({
[UPDATE_EMAIL_SETTINGS]: { next: (state, { payload }) => payload["with-corrections"] }
}, {});
export default combineReducers({
warnings
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment