Przeglądaj źródła

Merge pull request #3960 from weseek/fix/GW-6610-adjustment

Fix/gw 6610 adjustment
Shun Miyazawa 4 lat temu
rodzic
commit
4ee3a629cd

+ 10 - 1
src/client/js/components/Admin/Users/UserInviteModal.jsx

@@ -25,6 +25,7 @@ class UserInviteModal extends React.Component {
       emailInputValue: '',
       sendEmail: false,
       invitedEmailList: null,
+      isCreateUserButtonPushed: false,
     };
 
     this.handleSubmit = this.handleSubmit.bind(this);
@@ -108,6 +109,7 @@ class UserInviteModal extends React.Component {
 
   renderModalFooter() {
     const { t, appContainer } = this.props;
+    const { isCreateUserButtonPushed } = this.state;
     const { isMailerSetup } = appContainer.config;
 
     return (
@@ -144,7 +146,7 @@ class UserInviteModal extends React.Component {
             type="button"
             className="btn btn-primary"
             onClick={this.handleSubmit}
-            disabled={!this.validEmail()}
+            disabled={!this.validEmail() || isCreateUserButtonPushed}
           >
             {t('admin:user_management.invite_modal.issue')}
           </button>
@@ -214,6 +216,10 @@ class UserInviteModal extends React.Component {
 
   async handleSubmit() {
     const { adminUsersContainer } = this.props;
+    // eslint-disable-next-line no-unused-vars
+    const { isCreateUserButtonPushed } = this.state;
+
+    this.setState({ isCreateUserButtonPushed: true });
 
     const array = this.state.emailInputValue.split('\n');
     const emailList = array.filter((element) => { return element.match(/.+@.+\..+/) });
@@ -245,6 +251,9 @@ class UserInviteModal extends React.Component {
     catch (err) {
       toastError(err);
     }
+    finally {
+      this.setState({ isCreateUserButtonPushed: false });
+    }
   }
 
   handleInput(event) {

+ 2 - 2
src/server/routes/apiv3/users.js

@@ -125,8 +125,6 @@ module.exports = (crowi) => {
 
     for (const user of userList) {
       try {
-        // eslint-disable-next-line no-await-in-loop
-        await User.updateIsInvitationEmailSended(user.user.id);
         // eslint-disable-next-line no-await-in-loop
         await mailService.send({
           to: user.email,
@@ -139,6 +137,8 @@ module.exports = (crowi) => {
             appTitle,
           },
         });
+        // eslint-disable-next-line no-await-in-loop
+        await User.updateIsInvitationEmailSended(user.user.id);
       }
       catch (err) {
         logger.error(err);