From 492c77b6a073e45e27f44687a52e8feb26c8ba6a Mon Sep 17 00:00:00 2001
From: Johanna Szepanski <johanna.szepanski@softhouse.se>
Date: Thu, 15 Aug 2024 08:13:40 +0200
Subject: [PATCH] updated host status listview to use separated status
 endpoints

---
 src/components/host/HostStatus/HostStatus.js  | 53 ++++++++++---------
 .../host/HostStatus/HostStatusIcon.js         |  4 +-
 2 files changed, 31 insertions(+), 26 deletions(-)

diff --git a/src/components/host/HostStatus/HostStatus.js b/src/components/host/HostStatus/HostStatus.js
index 7948cadd..f4f88185 100644
--- a/src/components/host/HostStatus/HostStatus.js
+++ b/src/components/host/HostStatus/HostStatus.js
@@ -1,8 +1,8 @@
-import { useContext, useMemo } from "react";
-import { Grid, Skeleton } from "@mui/material";
+import { useContext, useMemo, useEffect } from "react";
 import { apiContext } from "../../../api/DeployApi";
 import { useAPIMethod } from "@ess-ics/ce-ui-common";
-import { HostStatusIcon } from "./HostStatusIcon";
+import { getHostStatus } from "./HostStatusData";
+import { Status } from "../../common/Status";
 
 function createRequest(hostId) {
   return {
@@ -10,36 +10,41 @@ function createRequest(hostId) {
   };
 }
 
-export const HostStatus = ({ hostId }) => {
+export const HostStatus = ({ hostId, hideAlerts }) => {
   const client = useContext(apiContext);
-
   const params = useMemo(() => createRequest(hostId), [hostId]);
 
   const {
-    value: hostStatus,
-    loading,
-    dataReady
+    wrapper: callFetchHostAlerts,
+    value: hostAlert,
+    abort: abortCallFetchHostAlerts
   } = useAPIMethod({
+    fcn: client.apis.Hosts.findHostAlerts,
+    params,
+    call: false
+  });
+
+  const { value: hostStateStatus } = useAPIMethod({
     fcn: client.apis.Hosts.findHostStatus,
     params
   });
 
+  useEffect(() => {
+    if (!hideAlerts) {
+      callFetchHostAlerts();
+    }
+
+    return () => {
+      abortCallFetchHostAlerts();
+    };
+  }, [hostStateStatus, hideAlerts]);
+
   return (
-    <Grid
-      container
-      direction="column"
-      justifyContent="center"
-      alignItems="center"
-    >
-      {loading || !dataReady ? (
-        <Skeleton
-          variant="circular"
-          height={20}
-          width={20}
-        />
-      ) : (
-        <HostStatusIcon hostStatus={hostStatus} />
-      )}
-    </Grid>
+    <Status
+      state={hostStateStatus}
+      alert={hostAlert}
+      hideAlerts={hideAlerts}
+      getStatusFcn={getHostStatus}
+    />
   );
 };
diff --git a/src/components/host/HostStatus/HostStatusIcon.js b/src/components/host/HostStatus/HostStatusIcon.js
index 6cd41fd9..9fdee3d9 100644
--- a/src/components/host/HostStatus/HostStatusIcon.js
+++ b/src/components/host/HostStatus/HostStatusIcon.js
@@ -7,13 +7,13 @@ import {
   StatusPopoverContent,
   statusConfig
 } from "../../common/Status";
-import { getHostStatusInfo } from "./HostStatusData";
+import { getHostStatus } from "./HostStatusData";
 
 export function HostStatusIcon({ hostStatus, hideAlerts = false }) {
   const theme = useTheme();
 
   let { alerts } = hostStatus;
-  let hostStatusStatus = getHostStatusInfo(hostStatus);
+  let hostStatusStatus = getHostStatus(hostStatus);
 
   const displayBadge =
     !hideAlerts &&
-- 
GitLab