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

retrieve personal data from appContainer

itizawa 6 лет назад
Родитель
Сommit
f4b09d1367

+ 25 - 9
src/client/js/components/Me/BasicInfoSettings.jsx

@@ -18,9 +18,24 @@ class BasicInfoSettings extends React.Component {
   constructor(appContainer) {
   constructor(appContainer) {
     super();
     super();
 
 
+    this.state = {
+      retrieveError: null,
+    };
+
     this.onClickSubmit = this.onClickSubmit.bind(this);
     this.onClickSubmit = this.onClickSubmit.bind(this);
   }
   }
 
 
+  componentDidMount() {
+    try {
+      this.props.personalContainer.retrievePersonalData();
+    }
+    catch (err) {
+      logger.error(err);
+      toastError(new Error('Failed to fetch data'));
+      this.setState({ retrieveError: err.message });
+    }
+  }
+
   async onClickSubmit() {
   async onClickSubmit() {
     const { t, personalContainer } = this.props;
     const { t, personalContainer } = this.props;
 
 
@@ -36,6 +51,7 @@ class BasicInfoSettings extends React.Component {
 
 
   render() {
   render() {
     const { t, personalContainer } = this.props;
     const { t, personalContainer } = this.props;
+    const { registrationWhiteList } = personalContainer.state;
 
 
     return (
     return (
       <Fragment>
       <Fragment>
@@ -64,14 +80,14 @@ class BasicInfoSettings extends React.Component {
               onChange={(e) => { personalContainer.changeEmail(e.target.value) }}
               onChange={(e) => { personalContainer.changeEmail(e.target.value) }}
             />
             />
           </div>
           </div>
-          {personalContainer.state.registrationWhiteList.length !== 0 && (
+          {registrationWhiteList.length !== 0 && (
             <div className="col-sm-offset-2 col-sm-10">
             <div className="col-sm-offset-2 col-sm-10">
-              <p className="help-block">
+              <div className="help-block">
                 {t('page_register.form_help.email')}
                 {t('page_register.form_help.email')}
                 <ul>
                 <ul>
-                  <li><code></code></li>
+                  {registrationWhiteList.map(data => <li key={data}><code>{data}</code></li>)}
                 </ul>
                 </ul>
-              </p>
+              </div>
             </div>
             </div>
           )}
           )}
         </div>
         </div>
@@ -110,8 +126,8 @@ class BasicInfoSettings extends React.Component {
                 type="radio"
                 type="radio"
                 id="radioLangEn"
                 id="radioLangEn"
                 name="userForm[lang]"
                 name="userForm[lang]"
-                checked={personalContainer.state.lang === 'English'}
-                onChange={() => { personalContainer.changeLang('English') }}
+                checked={personalContainer.state.lang === 'en-US'}
+                onChange={() => { personalContainer.changeLang('en-US') }}
               />
               />
               <label htmlFor="radioLangEn">{t('English')}</label>
               <label htmlFor="radioLangEn">{t('English')}</label>
             </div>
             </div>
@@ -120,8 +136,8 @@ class BasicInfoSettings extends React.Component {
                 type="radio"
                 type="radio"
                 id="radioLangJa"
                 id="radioLangJa"
                 name="userForm[lang]"
                 name="userForm[lang]"
-                checked={personalContainer.state.lang === 'Japanese'}
-                onChange={() => { personalContainer.changeLang('Japanese') }}
+                checked={personalContainer.state.lang === 'ja'}
+                onChange={() => { personalContainer.changeLang('ja') }}
               />
               />
               <label htmlFor="radioLangJa">{t('Japanese')}</label>
               <label htmlFor="radioLangJa">{t('Japanese')}</label>
             </div>
             </div>
@@ -130,7 +146,7 @@ class BasicInfoSettings extends React.Component {
 
 
         <div className="row my-3">
         <div className="row my-3">
           <div className="col-xs-offset-4 col-xs-5">
           <div className="col-xs-offset-4 col-xs-5">
-            <button type="button" className="btn btn-primary" onClick={this.onClickSubmit}>{t('Update')}</button>
+            <button type="button" className="btn btn-primary" onClick={this.onClickSubmit} disabled={this.state.retrieveError != null}>{t('Update')}</button>
           </div>
           </div>
         </div>
         </div>
 
 

+ 9 - 11
src/client/js/services/PersonalContainer.js

@@ -2,8 +2,6 @@ import { Container } from 'unstated';
 
 
 import loggerFactory from '@alias/logger';
 import loggerFactory from '@alias/logger';
 
 
-import { toastError } from '../util/apiNotification';
-
 // eslint-disable-next-line no-unused-vars
 // eslint-disable-next-line no-unused-vars
 const logger = loggerFactory('growi:services:PersonalContainer');
 const logger = loggerFactory('growi:services:PersonalContainer');
 
 
@@ -21,9 +19,9 @@ export default class PersonalContainer extends Container {
     this.state = {
     this.state = {
       name: '',
       name: '',
       email: '',
       email: '',
-      registrationWhiteList: [],
+      registrationWhiteList: appContainer.getConfig().registrationWhiteList,
       isEmailPublished: false,
       isEmailPublished: false,
-      lang: 'English',
+      lang: 'en-US',
     };
     };
 
 
   }
   }
@@ -39,13 +37,13 @@ export default class PersonalContainer extends Container {
    * retrieve personal data
    * retrieve personal data
    */
    */
   async retrievePersonalData() {
   async retrievePersonalData() {
-    try {
-      // TODO GW-1036 retrieve data
-    }
-    catch (err) {
-      logger.error(err);
-      toastError(new Error('Failed to fetch data'));
-    }
+    const currentUser = this.appContainer.getCurrentUser();
+    const {
+      name, email, isEmailPublished, lang,
+    } = currentUser;
+    this.setState({
+      name, email, isEmailPublished, lang,
+    });
   }
   }
 
 
   /**
   /**

+ 1 - 0
src/server/models/config.js

@@ -179,6 +179,7 @@ module.exports = function(crowi) {
         image: crowi.fileUploadService.getIsUploadable(),
         image: crowi.fileUploadService.getIsUploadable(),
         file: crowi.fileUploadService.getFileUploadEnabled(),
         file: crowi.fileUploadService.getFileUploadEnabled(),
       },
       },
+      registrationWhiteList: crowi.configManager.getConfig('crowi', 'security:registrationWhiteList'),
       behaviorType: crowi.configManager.getConfig('crowi', 'customize:behavior'),
       behaviorType: crowi.configManager.getConfig('crowi', 'customize:behavior'),
       layoutType: crowi.configManager.getConfig('crowi', 'customize:layout'),
       layoutType: crowi.configManager.getConfig('crowi', 'customize:layout'),
       themeType: crowi.configManager.getConfig('crowi', 'customize:theme'),
       themeType: crowi.configManager.getConfig('crowi', 'customize:theme'),