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

Moved logic to async await method

jnfrati 4 лет назад
Родитель
Сommit
dbff53e675

+ 41 - 38
dashboard/src/main/home/cluster-dashboard/dashboard/preview-environments/EnvironmentList.tsx

@@ -79,6 +79,46 @@ const EnvironmentList = () => {
     );
   };
 
+  const checkGitRepoPermissions = async () => {
+    // Get all the connected repos ids
+    let gitRepos: number[] = null;
+    try {
+      gitRepos = await api
+        .getGitRepos("<token>", {}, { project_id: currentProject.id })
+        .then((res) => res.data);
+    } catch (error) {
+      console.error(error);
+    }
+
+    if (!gitRepos) {
+      return;
+    }
+
+    // Check if all repo has enough permissions
+    try {
+      const repoPermissionsRequests = gitRepos.map((id) =>
+        api
+          .getGitRepoPermission(
+            "<token>",
+            {},
+            { project_id: currentProject.id, git_repo_id: id }
+          )
+          .then((res) => res.data)
+      );
+
+      const permissions = await Promise.all(repoPermissionsRequests);
+      let hasPermission =
+        permissions.filter((val) => {
+          return val.preview_environments;
+        }).length >= 1;
+
+      setHasPermissions(hasPermission);
+      setHasPermissionsLoaded(true);
+    } catch (error) {
+      console.error(error);
+    }
+  };
+
   useEffect(() => {
     let isSubscribed = true;
     api
@@ -114,44 +154,7 @@ const EnvironmentList = () => {
 
   useEffect(() => {
     setHasPermissionsLoaded(false);
-
-    api
-      .getGitRepos("<token>", {}, { project_id: currentProject.id })
-      .then(({ data }) => {
-        Promise.all(
-          data.map((id: number) => {
-            return new Promise((resolve, reject) => {
-              api
-                .getGitRepoPermission(
-                  "<token>",
-                  {},
-                  { project_id: currentProject.id, git_repo_id: id }
-                )
-                .then((res) => {
-                  resolve(res.data);
-                })
-                .catch((err) => {
-                  reject(err);
-                });
-            });
-          })
-        )
-          .then((permissions: any[]) => {
-            let hasPermission =
-              permissions.filter((val) => {
-                return val.preview_environments;
-              }).length >= 1;
-
-            setHasPermissions(hasPermission);
-            setHasPermissionsLoaded(true);
-          })
-          .catch((err) => {
-            console.log(err);
-          });
-      })
-      .catch((err) => {
-        console.log(err);
-      });
+    checkGitRepoPermissions();
   }, [currentProject, currentCluster]);
 
   useEffect(() => {