Skip to content
Snippets Groups Projects
Commit 7890057a authored by Johanna Szepanski's avatar Johanna Szepanski
Browse files

remove not neccessary props between parent and admin tab

parent e4329d6d
No related branches found
No related tags found
2 merge requests!612Release 5.0.0,!577CE-3395: Fix infinite loop
import { useState, useEffect, useCallback, useContext, useMemo } from "react"; import { useState, useEffect, useCallback } from "react";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import { import {
Box, Box,
...@@ -8,56 +8,47 @@ import { ...@@ -8,56 +8,47 @@ import {
Tooltip, Tooltip,
LinearProgress LinearProgress
} from "@mui/material"; } from "@mui/material";
import { ConfirmationDialog, useAPIMethod } from "@ess-ics/ce-ui-common"; import { ConfirmationDialog } from "@ess-ics/ce-ui-common";
import Alert from "@mui/material/Alert";
import { AccessControl } from "../../auth/AccessControl"; import { AccessControl } from "../../auth/AccessControl";
import { apiContext } from "../../../api/DeployApi"; import { useUnDeployInDbMutation } from "../../../store/enhancedApi";
import { ApiAlertError } from "../../common/Alerts/ApiAlertError";
export const AdministerUndeployment = ({ ioc, buttonDisabled }) => { export const AdministerUndeployment = ({
ioc,
buttonDisabled,
setButtonDisabled
}) => {
const navigate = useNavigate(); const navigate = useNavigate();
// for the dialog
const [error, setError] = useState(); const [error, setError] = useState();
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
const client = useContext(apiContext); const [
undeployInDB,
const params = useMemo( { value: undeployResponse, error: undeployInDBError, isLoading }
() => ({ ] = useUnDeployInDbMutation();
ioc_id: ioc?.id
}),
[ioc]
);
const {
value: response,
wrapper: undeployIOC,
loading,
error: errorResponse
} = useAPIMethod({
fcn: client.apis.IOCs.unDeployInDb,
call: false,
params
});
useEffect(() => { useEffect(() => {
setError(errorResponse?.message); setError(undeployInDBError);
}, [errorResponse]); }, [undeployInDBError]);
const onClose = useCallback(() => { const onClose = useCallback(() => {
setOpen(false); setOpen(false);
}, []); }, []);
const onConfirm = useCallback(() => { const onConfirm = useCallback(() => {
undeployIOC(); setButtonDisabled(true);
}, [undeployIOC]); undeployInDB({
iocId: ioc?.id
});
setButtonDisabled(false);
}, [undeployInDB, ioc, setButtonDisabled]);
useEffect(() => { useEffect(() => {
if (response) { if (undeployResponse) {
setOpen(false); setOpen(false);
navigate(-1); navigate(-1);
} }
}, [response, navigate]); }, [undeployResponse, navigate]);
let disabledButtonTitle = ""; let disabledButtonTitle = "";
if (buttonDisabled || ioc.operationInProgress) { if (buttonDisabled || ioc.operationInProgress) {
...@@ -97,7 +88,7 @@ export const AdministerUndeployment = ({ ioc, buttonDisabled }) => { ...@@ -97,7 +88,7 @@ export const AdministerUndeployment = ({ ioc, buttonDisabled }) => {
</Typography>{" "} </Typography>{" "}
? ?
</Typography> </Typography>
{loading ? <LinearProgress /> : null} {isLoading && <LinearProgress />}
</> </>
} }
confirmText="Undeploy IOC" confirmText="Undeploy IOC"
...@@ -124,7 +115,7 @@ export const AdministerUndeployment = ({ ioc, buttonDisabled }) => { ...@@ -124,7 +115,7 @@ export const AdministerUndeployment = ({ ioc, buttonDisabled }) => {
item item
xs={12} xs={12}
> >
<Alert severity="error">{error}</Alert> <ApiAlertError error={error} />
</Grid> </Grid>
) : ( ) : (
<></> <></>
...@@ -137,12 +128,7 @@ export const AdministerUndeployment = ({ ioc, buttonDisabled }) => { ...@@ -137,12 +128,7 @@ export const AdministerUndeployment = ({ ioc, buttonDisabled }) => {
<span> <span>
<Button <Button
onClick={() => setOpen(true)} onClick={() => setOpen(true)}
disabled={ disabled={buttonDisabled || !ioc.activeDeployment}
buttonDisabled ||
ioc.operationInProgress ||
!ioc.activeDeployment ||
loading
}
color="error" color="error"
variant="contained" variant="contained"
> >
......
import { useState, useEffect, useCallback, useContext, useMemo } from "react"; import { useState, useEffect, useCallback, useMemo } from "react";
import { ConfirmationDialog, useAPIMethod } from "@ess-ics/ce-ui-common"; import { ConfirmationDialog } from "@ess-ics/ce-ui-common";
import { import {
Box, Box,
Button, Button,
...@@ -8,20 +8,15 @@ import { ...@@ -8,20 +8,15 @@ import {
Tooltip, Tooltip,
TextField, TextField,
CircularProgress, CircularProgress,
Alert,
Autocomplete Autocomplete
} from "@mui/material"; } from "@mui/material";
import { AccessControl } from "../../auth/AccessControl"; import { AccessControl } from "../../auth/AccessControl";
import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer"; import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer";
import { apiContext } from "../../../api/DeployApi"; import { useLazyListHostsQuery } from "../../../store/deployApi";
import { useUpdateActiveDeploymentHostMutation } from "../../../store/enhancedApi";
import { ApiAlertError } from "../../common/Alerts/ApiAlertError";
export const ChangeHostAdmin = ({ export const ChangeHostAdmin = ({ ioc, buttonDisabled, setButtonDisabled }) => {
ioc,
getIOC,
resetTab,
buttonDisabled,
setButtonDisabled
}) => {
const initHost = useMemo( const initHost = useMemo(
() => ({ () => ({
fqdn: ioc.activeDeployment.host.fqdn, fqdn: ioc.activeDeployment.host.fqdn,
...@@ -30,79 +25,57 @@ export const ChangeHostAdmin = ({ ...@@ -30,79 +25,57 @@ export const ChangeHostAdmin = ({
[ioc.activeDeployment.host] [ioc.activeDeployment.host]
); );
const [host, setHost] = useState(initHost); const [host, setHost] = useState(initHost);
const client = useContext(apiContext); const [error, setError] = useState();
const [open, setOpen] = useState(false);
const [query, onHostKeyUp] = useTypingTimer({ interval: 500 });
const { const [getHosts, { data: hosts, isLoading: loadingHosts }] =
value: hosts, useLazyListHostsQuery();
wrapper: getHosts,
loading: loadingHosts
} = useAPIMethod({
fcn: client.apis.Hosts.listHosts,
call: false
});
const [query, onHostKeyUp] = useTypingTimer({ interval: 500 }); const [updateHost, { data: updatedIoc, error: updateHostError }] =
useUpdateActiveDeploymentHostMutation();
const noModification = useCallback( const noModification = useCallback(
() => !host || host?.hostId === ioc.activeDeployment.host.hostId, () => !host || host?.hostId === ioc.activeDeployment.host.hostId,
[host, ioc] [host, ioc]
); );
// for the dialog const onClose = useCallback(() => {
const [error, setError] = useState(); setOpen(false);
const [open, setOpen] = useState(false); setHost(initHost);
}, [setOpen, initHost]);
const { const onConfirm = useCallback(() => {
value: updatedIoc, setButtonDisabled(true);
wrapper: updateHost, updateHost({
error: updateHostError iocId: ioc.id,
} = useAPIMethod({ updateHostRequest: {
fcn: client.apis.IOCs.updateActiveDeploymentHost, hostId: host?.hostId
call: false }
}); });
}, [updateHost, ioc, host?.hostId, setButtonDisabled]);
useEffect(() => { useEffect(() => {
if (updateHostError) { if (updateHostError) {
setButtonDisabled(false); setButtonDisabled(false);
setError(updateHostError?.message); setError(updateHostError);
} }
}, [updateHostError, setError, setButtonDisabled]); }, [updateHostError, setError, setButtonDisabled]);
useEffect(() => { useEffect(() => {
if (updatedIoc) { if (updatedIoc) {
getIOC();
setHost({ setHost({
fqdn: updatedIoc.activeDeployment.host.fqdn, fqdn: updatedIoc.activeDeployment.host.fqdn,
hostId: updatedIoc.activeDeployment.host.hostId hostId: updatedIoc.activeDeployment.host.hostId
}); });
resetTab();
setButtonDisabled(false); setButtonDisabled(false);
} }
}, [updatedIoc, getIOC, resetTab, setButtonDisabled]); }, [updatedIoc, setButtonDisabled]);
useEffect(() => { useEffect(() => {
getHosts({ text: `${query}` }); getHosts({ text: `${query}` });
}, [query, getHosts]); }, [query, getHosts]);
const onClose = useCallback(() => {
setOpen(false);
setHost(initHost);
}, [setOpen, initHost]);
const onConfirm = useCallback(() => {
setButtonDisabled(true);
updateHost(
{
ioc_id: ioc.id
},
{
requestBody: {
hostId: host?.hostId
}
}
);
}, [updateHost, ioc, host?.hostId, setButtonDisabled]);
let disabledButtonTitle = ""; let disabledButtonTitle = "";
if (buttonDisabled || ioc.operationInProgress) { if (buttonDisabled || ioc.operationInProgress) {
disabledButtonTitle = disabledButtonTitle =
...@@ -161,16 +134,6 @@ export const ChangeHostAdmin = ({ ...@@ -161,16 +134,6 @@ export const ChangeHostAdmin = ({
container container
spacing={1} spacing={1}
> >
{error ? (
<Grid
item
xs={12}
>
<Alert severity="error">{error}</Alert>
</Grid>
) : (
<></>
)}
<Grid <Grid
item item
xs={12} xs={12}
...@@ -223,6 +186,11 @@ export const ChangeHostAdmin = ({ ...@@ -223,6 +186,11 @@ export const ChangeHostAdmin = ({
item item
xs={12} xs={12}
> >
{error && (
<Box sx={{ marginBottom: 1 }}>
<ApiAlertError error={error} />
</Box>
)}
<Tooltip title={disabledButtonTitle}> <Tooltip title={disabledButtonTitle}>
<span> <span>
<Button <Button
......
import { useState, useEffect } from "react"; import { useState, useEffect } from "react";
import { Navigate } from "react-router-dom"; import { Navigate } from "react-router-dom";
import { IOCDeployDialog } from "../IOCDeployDialog"; import { IOCDeployDialog } from "../IOCDeployDialog";
import { useStartJobMutation } from "../../../store/deployApi"; import { useStartJobMutation } from "../../../store/enhancedApi";
export function DeployIOC({ export function DeployIOC({
open, open,
......
import { useState, useEffect, useCallback, useContext, useMemo } from "react"; import { useState, useEffect, useCallback } from "react";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import { Box, Button, Grid, Tooltip, Typography } from "@mui/material"; import { Box, Button, Grid, Tooltip, Typography } from "@mui/material";
import { ConfirmDangerActionDialog, useAPIMethod } from "@ess-ics/ce-ui-common"; import { ConfirmDangerActionDialog } from "@ess-ics/ce-ui-common";
import Alert from "@mui/material/Alert";
import { useCustomSnackbar } from "../../common/snackbar"; import { useCustomSnackbar } from "../../common/snackbar";
import { AccessControl } from "../../auth/AccessControl"; import { AccessControl } from "../../auth/AccessControl";
import { apiContext } from "../../../api/DeployApi"; import { useDeleteIocMutation } from "../../../store/enhancedApi";
import { ApiAlertError } from "../../common/Alerts/ApiAlertError";
export const IOCDelete = ({ ioc, buttonDisabled, setButtonDisabled }) => { export const IOCDelete = ({ ioc, buttonDisabled, setButtonDisabled }) => {
const navigate = useNavigate(); const navigate = useNavigate();
const showSnackBar = useCustomSnackbar(); const showSnackBar = useCustomSnackbar();
// for the dialog
const [error, setError] = useState(); const [error, setError] = useState();
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
const [deleteIOC, { data: deleteIOCResponse, error: deleteIOCError }] =
const client = useContext(apiContext); useDeleteIocMutation();
const params = useMemo(
() => ({
ioc_id: ioc?.id
}),
[ioc]
);
const {
wrapper: deleteIOC,
dataReady: dataready,
error: errorResponse
} = useAPIMethod({
fcn: client.apis.IOCs.deleteIoc,
call: false,
params
});
useEffect(() => { useEffect(() => {
if (errorResponse) { if (deleteIOCError) {
setButtonDisabled(false); setButtonDisabled(false);
setError(errorResponse?.message); setError(deleteIOCError);
} }
}, [errorResponse, setError, setButtonDisabled]); }, [deleteIOCError, setError, setButtonDisabled]);
useEffect(() => { useEffect(() => {
if (dataready && !error) { if (deleteIOCResponse) {
setButtonDisabled(false); setButtonDisabled(false);
showSnackBar(`IOC ${ioc.namingName} deleted`, "success"); showSnackBar(`IOC ${ioc.namingName} deleted`, "success");
navigate("/iocs"); navigate("/iocs");
} }
}, [ }, [
dataready, deleteIOCResponse,
navigate, navigate,
error, error,
setButtonDisabled, setButtonDisabled,
...@@ -68,8 +50,10 @@ export const IOCDelete = ({ ioc, buttonDisabled, setButtonDisabled }) => { ...@@ -68,8 +50,10 @@ export const IOCDelete = ({ ioc, buttonDisabled, setButtonDisabled }) => {
const onConfirm = useCallback(() => { const onConfirm = useCallback(() => {
setButtonDisabled(true); setButtonDisabled(true);
deleteIOC(); deleteIOC({
}, [deleteIOC, setButtonDisabled]); iocId: ioc?.id
});
}, [ioc, deleteIOC, setButtonDisabled]);
return ( return (
<> <>
...@@ -100,7 +84,7 @@ export const IOCDelete = ({ ioc, buttonDisabled, setButtonDisabled }) => { ...@@ -100,7 +84,7 @@ export const IOCDelete = ({ ioc, buttonDisabled, setButtonDisabled }) => {
item item
xs={12} xs={12}
> >
<Alert severity="error">{error}</Alert> <ApiAlertError error={error} />
</Grid> </Grid>
) : ( ) : (
<></> <></>
......
import { useState, useMemo, useEffect, useCallback, useContext } from "react"; import { useState, useEffect, useCallback } from "react";
import { ConfirmationDialog, useAPIMethod } from "@ess-ics/ce-ui-common"; import { ConfirmationDialog } from "@ess-ics/ce-ui-common";
import { import {
Box, Box,
Button, Button,
...@@ -7,26 +7,21 @@ import { ...@@ -7,26 +7,21 @@ import {
TextField, TextField,
Tooltip, Tooltip,
Typography, Typography,
Autocomplete, Autocomplete
Alert
} from "@mui/material"; } from "@mui/material";
import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer"; import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer";
import { AccessControl } from "../../auth/AccessControl"; import { AccessControl } from "../../auth/AccessControl";
import { apiContext } from "../../../api/DeployApi"; import {
useLazyListProjectsQuery,
const createRequestParams = (query) => { useLazyFetchIocByNameQuery
return { } from "../../../store/deployApi";
query: query import { useUpdateIocMutation } from "../../../store/enhancedApi";
}; import { ApiAlertError } from "../../common/Alerts/ApiAlertError";
};
export const IOCDetailAdmin = ({ export const IOCDetailAdmin = ({ ioc, buttonDisabled, setButtonDisabled }) => {
ioc, const iocIsDeployed = Boolean(ioc.activeDeployment);
getIOC, const [open, setOpen] = useState(false);
resetTab, const [error, setError] = useState(null);
buttonDisabled,
setButtonDisabled
}) => {
const [gitId, setGitId] = useState(ioc.gitProjectId); const [gitId, setGitId] = useState(ioc.gitProjectId);
const [nameQuery, onNameKeyUp] = useTypingTimer({ interval: 500 }); const [nameQuery, onNameKeyUp] = useTypingTimer({ interval: 500 });
const [repoQuery, onRepoKeyUp] = useTypingTimer({ interval: 500 }); const [repoQuery, onRepoKeyUp] = useTypingTimer({ interval: 500 });
...@@ -36,48 +31,21 @@ export const IOCDetailAdmin = ({ ...@@ -36,48 +31,21 @@ export const IOCDetailAdmin = ({
name: ioc.namingName name: ioc.namingName
}); });
// for the dialog const [
const [open, setOpen] = useState(false); getAllowedGitProjects,
const [error, setError] = useState(); { data: allowedGitProjects, isLoading: loadingAllowedGitProjects }
const client = useContext(apiContext); ] = useLazyListProjectsQuery();
const requestParams = useMemo(
() => createRequestParams(repoQuery),
[repoQuery]
);
const {
value: allowedGitProjects,
wrapper: getAllowedGitProjects,
loading: loadingAllowedGitProjects
} = useAPIMethod({
fcn: client.apis.Git.listProjects,
params: requestParams,
call: false
});
const { const [getNames, { data: names, isLoading: loadingNames }] =
value: names, useLazyFetchIocByNameQuery();
wrapper: getNames,
loading: loadingNames
} = useAPIMethod({
fcn: client.apis.Names.fetchIOCByName,
call: false
});
const { const [updateIOC, { data: updatedIOC, error: updateError }] =
value: uioc, useUpdateIocMutation();
wrapper: actionUpdateIoc,
error: updateError
} = useAPIMethod({
fcn: client.apis.IOCs.updateIoc,
call: false
});
useEffect(() => { useEffect(() => {
if (updateError) { if (updateError) {
setButtonDisabled(false); setButtonDisabled(false);
setError(updateError?.message); setError(updateError);
} }
}, [updateError, setError, setButtonDisabled]); }, [updateError, setError, setButtonDisabled]);
...@@ -98,46 +66,36 @@ export const IOCDetailAdmin = ({ ...@@ -98,46 +66,36 @@ export const IOCDetailAdmin = ({
setOpen(true); setOpen(true);
}; };
const onClose = useCallback(() => {
setOpen(false);
}, [setOpen]);
const onConfirm = useCallback(() => { const onConfirm = useCallback(() => {
setButtonDisabled(true); setButtonDisabled(true);
actionUpdateIoc( updateIOC({
{ ioc_id: ioc?.id }, iocId: ioc?.id,
{ iocUpdateRequest: {
requestBody: { gitProjectId: gitId,
gitProjectId: gitId, namingUuid: name ? name.uuid : null
namingUuid: name ? name.uuid : null
}
} }
); });
}, [actionUpdateIoc, ioc, name, gitId, setButtonDisabled]); }, [updateIOC, ioc, name, gitId, setButtonDisabled]);
useEffect(() => { useEffect(() => {
if (uioc) { if (updatedIOC) {
getIOC();
resetTab();
setButtonDisabled(false); setButtonDisabled(false);
} }
}, [uioc, getIOC, resetTab, setButtonDisabled]); }, [updatedIOC, setButtonDisabled]);
useEffect(() => { useEffect(() => {
// fetch git repos only if user has entered a text and it wasn't previously fetched // fetch git repos only if user has entered a text and it wasn't previously fetched
if (repoQuery && repoQuery.length > 2) { if (repoQuery && repoQuery.length > 2) {
getAllowedGitProjects(); getAllowedGitProjects({ query: repoQuery });
} }
}, [repoQuery, getAllowedGitProjects]); }, [repoQuery, getAllowedGitProjects]);
useEffect(() => { useEffect(() => {
if (nameQuery) { if (nameQuery) {
getNames(nameQuery); getNames({ query: nameQuery });
} }
}, [nameQuery, getNames]); }, [nameQuery, getNames]);
const iocIsDeployed = Boolean(ioc.activeDeployment);
let nameDisabledTitle = ""; let nameDisabledTitle = "";
if (iocIsDeployed) { if (iocIsDeployed) {
nameDisabledTitle = nameDisabledTitle =
...@@ -286,7 +244,7 @@ export const IOCDetailAdmin = ({ ...@@ -286,7 +244,7 @@ export const IOCDetailAdmin = ({
confirmText="Modify IOC" confirmText="Modify IOC"
cancelText="Cancel" cancelText="Cancel"
open={open} open={open}
onClose={onClose} onClose={() => setOpen(false)}
onConfirm={onConfirm} onConfirm={onConfirm}
/> />
<Box sx={{ pt: 2 }}> <Box sx={{ pt: 2 }}>
...@@ -323,7 +281,7 @@ export const IOCDetailAdmin = ({ ...@@ -323,7 +281,7 @@ export const IOCDetailAdmin = ({
{gitRepoAutocomplete(false)} {gitRepoAutocomplete(false)}
</AccessControl> </AccessControl>
{error ? <Alert severity="error">{error}</Alert> : <></>} {error && <ApiAlertError error={error} />}
<Tooltip title={disabledButtonTitle}> <Tooltip title={disabledButtonTitle}>
<span> <span>
......
...@@ -9,7 +9,7 @@ import { useState, useEffect, useCallback } from "react"; ...@@ -9,7 +9,7 @@ import { useState, useEffect, useCallback } from "react";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import { ConfirmationDialog } from "@ess-ics/ce-ui-common"; import { ConfirmationDialog } from "@ess-ics/ce-ui-common";
import { AccessControl } from "../../auth/AccessControl"; import { AccessControl } from "../../auth/AccessControl";
import { useStartJobMutation } from "../../../store/deployApi"; import { useStartJobMutation } from "../../../store/enhancedApi";
import { ApiAlertError } from "../../common/Alerts/ApiAlertError"; import { ApiAlertError } from "../../common/Alerts/ApiAlertError";
export function IOCService({ ioc, currentCommand }) { export function IOCService({ ioc, currentCommand }) {
......
...@@ -15,11 +15,9 @@ export const JobSection = () => { ...@@ -15,11 +15,9 @@ export const JobSection = () => {
const { data: jobs, isLoading } = useListJobsQuery( const { data: jobs, isLoading } = useListJobsQuery(
initRequestParams(pagination), initRequestParams(pagination),
{ pollingInterval: 30000 } { pollingInterval: 5000 }
); );
console.log(jobs); //eslint-disable-line
useEffect(() => { useEffect(() => {
setPagination({ totalCount: jobs?.totalCount ?? 0 }); setPagination({ totalCount: jobs?.totalCount ?? 0 });
}, [setPagination, jobs?.totalCount]); }, [setPagination, jobs?.totalCount]);
......
import { useState, useEffect } from "react"; import { useState, useEffect } from "react";
import { Navigate } from "react-router-dom"; import { Navigate } from "react-router-dom";
import { IOCUndeployDialog } from "../IOCUndeployDialog"; import { IOCUndeployDialog } from "../IOCUndeployDialog";
import { useStartJobMutation } from "../../../store/deployApi"; import { useStartJobMutation } from "../../../store/enhancedApi";
export const UndeployIOC = ({ open, setOpen, submitCallback, ioc }) => { export const UndeployIOC = ({ open, setOpen, submitCallback, ioc }) => {
const [error, setError] = useState(); const [error, setError] = useState();
......
import { deployApi } from "./deployApi"; import { deployApi } from "./deployApi";
const enhancedApiWithTags = deployApi.enhanceEndpoints({ const enhancedApiWithTags = deployApi.enhanceEndpoints({
addTagTypes: ["StartJob"], addTagTypes: [
"StartJob",
"UpdateIOC",
"UpdateActiveDeploymentHost",
"UndeployInDB",
"DeleteIOC"
],
endpoints: { endpoints: {
getIoc: { providesTags: ["StartJob"] }, getIoc: {
providesTags: [
"StartJob",
"UpdateIOC",
"UpdateActiveDeploymentHost",
"UndeployInDB",
"DeleteIOC"
]
},
listJobs: { providesTags: ["StartJob"] }, listJobs: { providesTags: ["StartJob"] },
startJob: { invalidatesTags: ["StartJob"] } startJob: { invalidatesTags: ["StartJob"] },
updateIoc: { invalidatesTags: ["UpdateIOC"] },
updateActiveDeploymentHost: {
invalidatesTags: ["UpdateActiveDeploymentHost"]
},
unDeployInDb: { invalidatesTags: ["UndeployInDB"] },
deleteIoc: { invalidatesTags: ["DeleteIOC"] }
} }
}); });
export const { useGetIocQuery, useListJobsQuery, useStartJobMutation } = export const {
enhancedApiWithTags; useGetIocQuery,
useListJobsQuery,
useStartJobMutation,
useUpdateIocMutation,
useUpdateActiveDeploymentHostMutation,
useUnDeployInDbMutation,
useDeleteIocMutation
} = enhancedApiWithTags;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment