]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-21068 Improve loading for Permission Template
authorKevin Silva <kevin.silva@sonarsource.com>
Mon, 4 Dec 2023 19:09:08 +0000 (20:09 +0100)
committersonartech <sonartech@sonarsource.com>
Tue, 5 Dec 2023 20:02:45 +0000 (20:02 +0000)
server/sonar-web/src/main/js/apps/permission-templates/components/Template.tsx

index 51a49681e57d86f1be47d4993732a55eee9aa1eb..58f4fde62069cfd257a8e2c2f16a2519a0ca1ebd 100644 (file)
@@ -163,6 +163,7 @@ export default class Template extends React.PureComponent<Props, State> {
 
     this.setState(({ users }) => ({
       users: this.addPermissionToEntity(users, login, permission),
+      loading: true,
     }));
 
     const request = isProjectCreator
@@ -173,11 +174,15 @@ export default class Template extends React.PureComponent<Props, State> {
           permission,
         });
 
-    return request.then(this.props.refresh).catch(() => {
-      this.setState(({ users }) => ({
-        users: this.removePermissionFromEntity(users, login, permission),
-      }));
-    });
+    return request
+      .then(this.props.refresh)
+      .then(() => this.setState({ loading: false }))
+      .catch(() => {
+        this.setState(({ users }) => ({
+          users: this.removePermissionFromEntity(users, login, permission),
+          loading: false,
+        }));
+      });
   };
 
   revokePermissionFromUser = (login: string, permission: string) => {
@@ -186,6 +191,7 @@ export default class Template extends React.PureComponent<Props, State> {
 
     this.setState(({ users }) => ({
       users: this.removePermissionFromEntity(users, login, permission),
+      loading: true,
     }));
 
     const request = isProjectCreator
@@ -196,11 +202,15 @@ export default class Template extends React.PureComponent<Props, State> {
           permission,
         });
 
-    return request.then(this.props.refresh).catch(() => {
-      this.setState(({ users }) => ({
-        users: this.addPermissionToEntity(users, login, permission),
-      }));
-    });
+    return request
+      .then(this.props.refresh)
+      .then(() => this.setState({ loading: false }))
+      .catch(() => {
+        this.setState(({ users }) => ({
+          users: this.addPermissionToEntity(users, login, permission),
+          loading: false,
+        }));
+      });
   };
 
   grantPermissionToGroup = (groupName: string, permission: string) => {
@@ -208,6 +218,7 @@ export default class Template extends React.PureComponent<Props, State> {
 
     this.setState(({ groups }) => ({
       groups: this.addPermissionToEntity(groups, groupName, permission),
+      loading: true,
     }));
 
     return api
@@ -217,9 +228,11 @@ export default class Template extends React.PureComponent<Props, State> {
         permission,
       })
       .then(this.props.refresh)
+      .then(() => this.setState({ loading: false }))
       .catch(() => {
         this.setState(({ groups }) => ({
           groups: this.removePermissionFromEntity(groups, groupName, permission),
+          loading: false,
         }));
       });
   };
@@ -229,6 +242,7 @@ export default class Template extends React.PureComponent<Props, State> {
 
     this.setState(({ groups }) => ({
       groups: this.removePermissionFromEntity(groups, groupName, permission),
+      loading: true,
     }));
 
     return api
@@ -238,9 +252,11 @@ export default class Template extends React.PureComponent<Props, State> {
         permission,
       })
       .then(this.props.refresh)
+      .then(() => this.setState({ loading: false }))
       .catch(() => {
         this.setState(({ groups }) => ({
           groups: this.addPermissionToEntity(groups, groupName, permission),
+          loading: false,
         }));
       });
   };