Răsfoiți Sursa

use separate effects for both websockets

Anukul Sangwan 4 ani în urmă
părinte
comite
b6910d2d7d
1 a modificat fișierele cu 24 adăugiri și 13 ștergeri
  1. 24 13
      dashboard/src/main/home/cluster-dashboard/chart/ChartList.tsx

+ 24 - 13
dashboard/src/main/home/cluster-dashboard/chart/ChartList.tsx

@@ -74,7 +74,10 @@ const ChartList: React.FunctionComponent<Props> = ({
     }
     }
   };
   };
 
 
-  const setupHelmReleasesWebsocket = (namespace: string) => {
+  const setupHelmReleasesWebsocket = (
+    websocketID: string,
+    namespace: string
+  ) => {
     let apiPath = `/api/projects/${context.currentProject.id}/k8s/helm_releases?cluster_id=${context.currentCluster.id}`;
     let apiPath = `/api/projects/${context.currentProject.id}/k8s/helm_releases?cluster_id=${context.currentCluster.id}`;
     if (namespace) {
     if (namespace) {
       apiPath += `&namespace=${namespace}`;
       apiPath += `&namespace=${namespace}`;
@@ -122,11 +125,11 @@ const ChartList: React.FunctionComponent<Props> = ({
       },
       },
     };
     };
 
 
-    newWebsocket("helm_releases", apiPath, wsConfig);
-    openWebsocket("helm_releases");
+    newWebsocket(websocketID, apiPath, wsConfig);
+    openWebsocket(websocketID);
   };
   };
 
 
-  const setupWebsocket = (kind: string) => {
+  const setupControllerWebsocket = (kind: string) => {
     let { currentCluster, currentProject } = context;
     let { currentCluster, currentProject } = context;
     const apiPath = `/api/projects/${currentProject.id}/k8s/${kind}/status?cluster_id=${currentCluster.id}`;
     const apiPath = `/api/projects/${currentProject.id}/k8s/${kind}/status?cluster_id=${currentCluster.id}`;
 
 
@@ -158,24 +161,32 @@ const ChartList: React.FunctionComponent<Props> = ({
     openWebsocket(kind);
     openWebsocket(kind);
   };
   };
 
 
-  const setControllerWebsockets = (controllers: any[]) => {
-    controllers.map((kind: string) => {
-      return setupWebsocket(kind);
-    });
+  const setupControllerWebsockets = (controllers: string[]) => {
+    controllers.map((kind) => setupControllerWebsocket(kind));
   };
   };
 
 
-  // Setup basic websockets on start
   useEffect(() => {
   useEffect(() => {
-    setControllerWebsockets([
+    const controllers = [
       "deployment",
       "deployment",
       "statefulset",
       "statefulset",
       "daemonset",
       "daemonset",
       "replicaset",
       "replicaset",
-    ]);
-    setupHelmReleasesWebsocket(namespace);
+    ];
+
+    setupControllerWebsockets(controllers);
+
+    return () => {
+      controllers.map((controller) => closeWebsocket(controller));
+    };
+  }, []);
+
+  useEffect(() => {
+    const websocketID = "helm_releases";
+
+    setupHelmReleasesWebsocket(websocketID, namespace);
 
 
     return () => {
     return () => {
-      closeAllWebsockets();
+      closeWebsocket(websocketID);
     };
     };
   }, [namespace]);
   }, [namespace]);