diff --git a/client/coral-admin/src/routes/Configure/containers/Configure.js b/client/coral-admin/src/routes/Configure/containers/Configure.js
index 5ca75e803..4146c4ffe 100644
--- a/client/coral-admin/src/routes/Configure/containers/Configure.js
+++ b/client/coral-admin/src/routes/Configure/containers/Configure.js
@@ -18,6 +18,12 @@ import Configure from '../components/Configure';
class ConfigureContainer extends Component {
+ // Merge current settings with pending settings.
+ getMergedSettings = (props = this.props) => merge({}, props.root.settings, props.pending);
+
+ // Cached merged settings.
+ mergedSettings = this.getMergedSettings();
+
savePending = async () => {
try {
await this.props.updateSettings(this.props.pending);
@@ -28,19 +34,25 @@ class ConfigureContainer extends Component {
}
};
+ componentWillReceiveProps(nextProps) {
+
+ // Recalculate merged settings when necessary.
+ if (this.props.root.settings !== nextProps.root.settings || this.props.pending !== nextProps.pending) {
+ this.mergedSettings = this.getMergedSettings(nextProps);
+ }
+ }
+
render () {
if(this.props.data.loading) {
return ;
}
- const merged = merge({}, this.props.root.settings, this.props.pending);
-
return