diff --git a/monkey/monkey_island/cc/ui/src/components/pages/ConfigurePage.js b/monkey/monkey_island/cc/ui/src/components/pages/ConfigurePage.js index ed827401b..19dae5fbc 100644 --- a/monkey/monkey_island/cc/ui/src/components/pages/ConfigurePage.js +++ b/monkey/monkey_island/cc/ui/src/components/pages/ConfigurePage.js @@ -27,7 +27,6 @@ class ConfigurePageComponent extends AuthComponent { constructor(props) { super(props); this.currentSection = 'attack'; - this.currentFormData = {}; this.initialConfig = {}; this.initialAttackConfig = {}; this.sectionsOrder = ['attack', 'basic', 'basic_network', 'ransomware', 'monkey', 'internal']; @@ -35,6 +34,7 @@ class ConfigurePageComponent extends AuthComponent { this.state = { attackConfig: {}, configuration: {}, + currentFormData: {}, importCandidateConfig: null, lastAction: 'none', schema: {}, @@ -213,14 +213,15 @@ class ConfigurePageComponent extends AuthComponent { }; onChange = ({formData}) => { - this.currentFormData = formData; + let configuration = this.state.configuration; + configuration[this.state.selectedSection] = formData; + this.setState({currentFormData: formData, configuration: configuration}); }; updateConfigSection = () => { let newConfig = this.state.configuration; - if (Object.keys(this.currentFormData).length > 0) { - newConfig[this.currentSection] = this.currentFormData; - this.currentFormData = {}; + if (Object.keys(this.state.currentFormData).length > 0) { + newConfig[this.currentSection] = this.state.currentFormData; } this.setState({configuration: newConfig, lastAction: 'none'}); }; @@ -295,8 +296,8 @@ class ConfigurePageComponent extends AuthComponent { userChangedConfig() { if (JSON.stringify(this.state.configuration) === JSON.stringify(this.initialConfig)) { - if (Object.keys(this.currentFormData).length === 0 || - JSON.stringify(this.initialConfig[this.currentSection]) === JSON.stringify(this.currentFormData)) { + if (Object.keys(this.state.currentFormData).length === 0 || + JSON.stringify(this.initialConfig[this.currentSection]) === JSON.stringify(this.state.currentFormData)) { return false; } } @@ -316,7 +317,8 @@ class ConfigurePageComponent extends AuthComponent { this.updateConfigSection(); this.currentSection = key; this.setState({ - selectedSection: key + selectedSection: key, + currentFormData: this.state.configuration[key] }); }; @@ -332,7 +334,8 @@ class ConfigurePageComponent extends AuthComponent { this.setState({ lastAction: 'reset', schema: res.schema, - configuration: res.configuration + configuration: res.configuration, + currentFormData: res.configuration[this.state.selectedSection] }); this.setInitialConfig(res.configuration); this.props.onStatusChange(); @@ -407,7 +410,7 @@ class ConfigurePageComponent extends AuthComponent { setPbaFilenameLinux: this.setPbaFilenameLinux, selectedSection: this.state.selectedSection }) - formProperties['formData'] = this.state.configuration[this.state.selectedSection]; + formProperties['formData'] = this.state.currentFormData; formProperties['onChange'] = this.onChange; formProperties['customFormats'] = formValidationFormats; formProperties['transformErrors'] = transformErrors;