Просмотр исходного кода

overwrite values of inputs with refs

yusuketk 5 лет назад
Родитель
Сommit
f0b515f4d5

+ 18 - 2
src/client/js/components/Admin/App/MailSetting.jsx

@@ -21,6 +21,12 @@ class MailSetting extends React.Component {
       isInitializeValueModalOpen: false,
       isInitializeValueModalOpen: false,
     };
     };
 
 
+    this.emailInput = React.createRef();
+    this.hostInput = React.createRef();
+    this.portInput = React.createRef();
+    this.userInput = React.createRef();
+    this.passwordInput = React.createRef();
+
     this.openInitializeValueModal = this.openInitializeValueModal.bind(this);
     this.openInitializeValueModal = this.openInitializeValueModal.bind(this);
     this.closeInitializeValueModal = this.closeInitializeValueModal.bind(this);
     this.closeInitializeValueModal = this.closeInitializeValueModal.bind(this);
     this.submitHandler = this.submitHandler.bind(this);
     this.submitHandler = this.submitHandler.bind(this);
@@ -52,9 +58,14 @@ class MailSetting extends React.Component {
     const { t, adminAppContainer } = this.props;
     const { t, adminAppContainer } = this.props;
 
 
     try {
     try {
-      await adminAppContainer.initializeMailSettingHandler();
+      const mailSettingParams = await adminAppContainer.initializeMailSettingHandler();
       toastSuccess(t('toaster.initialize_successed', { target: t('admin:app_setting.mail_settings') }));
       toastSuccess(t('toaster.initialize_successed', { target: t('admin:app_setting.mail_settings') }));
-      window.location.reload();
+      this.emailInput.current.value = mailSettingParams.fromAddress;
+      this.hostInput.current.value = mailSettingParams.smtpHost;
+      this.portInput.current.value = mailSettingParams.smtpPort;
+      this.userInput.current.value = mailSettingParams.smtpUser;
+      this.passwordInput.current.value = mailSettingParams.smtpPassword;
+      this.closeInitializeValueModal();
     }
     }
     catch (err) {
     catch (err) {
       toastError(err);
       toastError(err);
@@ -74,6 +85,7 @@ class MailSetting extends React.Component {
             <input
             <input
               className="form-control"
               className="form-control"
               type="text"
               type="text"
+              ref={this.emailInput}
               placeholder={`${t('eg')} mail@growi.org`}
               placeholder={`${t('eg')} mail@growi.org`}
               defaultValue={adminAppContainer.state.fromAddress || ''}
               defaultValue={adminAppContainer.state.fromAddress || ''}
               onChange={(e) => { adminAppContainer.changeFromAddress(e.target.value) }}
               onChange={(e) => { adminAppContainer.changeFromAddress(e.target.value) }}
@@ -88,6 +100,7 @@ class MailSetting extends React.Component {
             <input
             <input
               className="form-control"
               className="form-control"
               type="text"
               type="text"
+              ref={this.hostInput}
               defaultValue={adminAppContainer.state.smtpHost || ''}
               defaultValue={adminAppContainer.state.smtpHost || ''}
               onChange={(e) => { adminAppContainer.changeSmtpHost(e.target.value) }}
               onChange={(e) => { adminAppContainer.changeSmtpHost(e.target.value) }}
             />
             />
@@ -96,6 +109,7 @@ class MailSetting extends React.Component {
             <label>{t('admin:app_setting.port')}</label>
             <label>{t('admin:app_setting.port')}</label>
             <input
             <input
               className="form-control"
               className="form-control"
+              ref={this.portInput}
               defaultValue={adminAppContainer.state.smtpPort || ''}
               defaultValue={adminAppContainer.state.smtpPort || ''}
               onChange={(e) => { adminAppContainer.changeSmtpPort(e.target.value) }}
               onChange={(e) => { adminAppContainer.changeSmtpPort(e.target.value) }}
             />
             />
@@ -108,6 +122,7 @@ class MailSetting extends React.Component {
             <input
             <input
               className="form-control"
               className="form-control"
               type="text"
               type="text"
+              ref={this.userInput}
               defaultValue={adminAppContainer.state.smtpUser || ''}
               defaultValue={adminAppContainer.state.smtpUser || ''}
               onChange={(e) => { adminAppContainer.changeSmtpUser(e.target.value) }}
               onChange={(e) => { adminAppContainer.changeSmtpUser(e.target.value) }}
             />
             />
@@ -117,6 +132,7 @@ class MailSetting extends React.Component {
             <input
             <input
               className="form-control"
               className="form-control"
               type="password"
               type="password"
+              ref={this.passwordInput}
               defaultValue={adminAppContainer.state.smtpPassword || ''}
               defaultValue={adminAppContainer.state.smtpPassword || ''}
               onChange={(e) => { adminAppContainer.changeSmtpPassword(e.target.value) }}
               onChange={(e) => { adminAppContainer.changeSmtpPassword(e.target.value) }}
             />
             />

+ 9 - 4
src/client/js/services/AdminAppContainer.js

@@ -273,10 +273,15 @@ export default class AdminAppContainer extends Container {
    * @return {Array} Appearance
    * @return {Array} Appearance
    */
    */
   async initializeMailSettingHandler() {
   async initializeMailSettingHandler() {
-    const response = await this.appContainer.apiv3.delete('/app-settings/mail-setting', {});
-    const {
-      mailSettingParams,
-    } = response.data;
+    const { data } = await this.appContainer.apiv3.delete('/app-settings/mail-setting', {});
+    // convert values to '' if value is null for overwriting values of inputs with refs
+    const mailSettingParams = {
+      fromAddress: data.mailSettingParams.fromAddress || '',
+      smtpHost: data.mailSettingParams.smtpHost || '',
+      smtpPort: data.mailSettingParams.smtpPort || '',
+      smtpUser: data.mailSettingParams.smtpUser || '',
+      smtpPassword: data.mailSettingParams.smtpPassword || '',
+    };
     this.setState(mailSettingParams);
     this.setState(mailSettingParams);
     return mailSettingParams;
     return mailSettingParams;
   }
   }