From 8a1f54add9cacb4bed103926f7ec3c966897de9f Mon Sep 17 00:00:00 2001
From: Alexander Madsen <alexander.madsen@ess.eu>
Date: Wed, 13 Sep 2023 08:09:35 +0000
Subject: [PATCH] CE-2093: Convert IOCStatus hook to common

---
 src/api/SwaggerApi.js                    | 14 ------------
 src/components/IOC/IOCTable/IOCStatus.js | 29 ++++++++++++++++++++----
 2 files changed, 24 insertions(+), 19 deletions(-)

diff --git a/src/api/SwaggerApi.js b/src/api/SwaggerApi.js
index 756c084f..abf6e1fc 100644
--- a/src/api/SwaggerApi.js
+++ b/src/api/SwaggerApi.js
@@ -689,20 +689,6 @@ export function useLokiProcServLog(onError) {
   return useAsync({ fcn: method, call: false, onError: onError });
 }
 
-export function unpackIocStatus(status) {
-  return { ...status };
-}
-
-export function useIocStatus(id) {
-  const api = useContext(apiContext);
-  const method = useCallAndUnpack(
-    api.apis.Monitoring.fetchIocStatus,
-    unpackIocStatus
-  );
-  const boundMethod = useCallback(method.bind(null, { ioc_id: id }), [id]);
-  return useAsync({ fcn: boundMethod });
-}
-
 export function unpackNaming(naming) {
   return { ...naming };
 }
diff --git a/src/components/IOC/IOCTable/IOCStatus.js b/src/components/IOC/IOCTable/IOCStatus.js
index 4d0a9bfa..d67a352b 100644
--- a/src/components/IOC/IOCTable/IOCStatus.js
+++ b/src/components/IOC/IOCTable/IOCStatus.js
@@ -1,10 +1,29 @@
-import React from "react";
-import { useIocStatus } from "../../../api/SwaggerApi";
+import React, { useContext, useMemo } from "react";
 import { Grid, Skeleton } from "@mui/material";
 import { IOCStatusIcon } from "../IOCIcons";
+import { apiContext } from "../../../api/DeployApi";
+import { useAPIMethod } from "@ess-ics/ce-ui-common";
+
+function createRequest(id) {
+  return {
+    ioc_id: id
+  };
+}
 
 export const IOCStatus = ({ id, activeDeployment }) => {
-  const [status, , , loading] = useIocStatus(id);
+  const client = useContext(apiContext);
+
+  const params = useMemo(() => createRequest(id), [id]);
+
+  const {
+    value: ioc,
+    loading,
+    dataReady
+  } = useAPIMethod({
+    fcn: client.apis.Monitoring.fetchIocStatus,
+    params,
+    call: true
+  });
 
   return (
     <Grid
@@ -13,14 +32,14 @@ export const IOCStatus = ({ id, activeDeployment }) => {
       justifyContent="center"
       alignItems="center"
     >
-      {loading ? (
+      {loading || !dataReady ? (
         <Skeleton
           variant="circular"
           height={20}
           width={20}
         />
       ) : (
-        <IOCStatusIcon ioc={{ id, activeDeployment, ...status }} />
+        <IOCStatusIcon ioc={{ id, activeDeployment, ...ioc }} />
       )}
     </Grid>
   );
-- 
GitLab