diff --git a/src/api/SwaggerApi.js b/src/api/SwaggerApi.js index 70067081e7a312c8747364454040bafc4154f914..f7a60437aaab7cb428356e1d2b84a4de9d0f852f 100644 --- a/src/api/SwaggerApi.js +++ b/src/api/SwaggerApi.js @@ -283,19 +283,6 @@ export function unpackGitProject(project) { return { ...project }; } -export function unpackAllowedGitProjects(projectList) { - return projectList.map((p) => unpackGitProject(p)); -} - -export function useAllowedGitProjects() { - const api = useContext(apiContext); - const method = useCallAndUnpack( - (repoUrl) => api.apis.Git.listProjects(), - unpackAllowedGitProjects - ); - return useAsync({ fcn: method, call: false, init: [] }); -} - export function useUpdateIoc(id, onError) { const api = useContext(apiContext); const method = useCallAndUnpack( diff --git a/src/components/IOC/CreateIOC/CreateIOC.js b/src/components/IOC/CreateIOC/CreateIOC.js index 8ff9e72dac92671558093189d8559d609729e1ed..0263fa30b729e287f19abcee53501e0ce2d25315 100644 --- a/src/components/IOC/CreateIOC/CreateIOC.js +++ b/src/components/IOC/CreateIOC/CreateIOC.js @@ -1,6 +1,5 @@ import React, { useEffect, useState, useContext } from "react"; import { useNavigate } from "react-router-dom"; -import { useAllowedGitProjects } from "../../../api/SwaggerApi"; import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer"; import { RootPaper } from "@ess-ics/ce-ui-common/dist/components/common/container/RootPaper"; import { @@ -33,14 +32,19 @@ export function CreateIOC() { const [name, setName] = useState(); const [gitId, setGitId] = useState(null); const [nameQuery, onNameKeyUp] = useTypingTimer({ interval: 500 }); - const [ - allowedGitProjects, - getAllowedGitProjects, - , - loadingAllowedGitProjects - ] = useAllowedGitProjects([]); const client = useContext(apiContext); + + const { + value: allowedGitProjects, + wrapper: getAllowedGitProjects, + loading: loadingAllowedGitProjects, + dataReady: dataReadyAllowedGitProjects + } = useAPIMethod({ + fcn: client.apis.Git.listProjects, + call: false + }); + const { value: ioc, wrapper: createIoc, @@ -155,8 +159,8 @@ export function CreateIOC() { <Autocomplete autoHighlight id="gitId" - options={allowedGitProjects} - loading={loadingAllowedGitProjects} + options={allowedGitProjects ?? []} + loading={loadingAllowedGitProjects || !dataReadyAllowedGitProjects} clearOnBlur={false} defaultValue={{ id: null, @@ -179,7 +183,8 @@ export function CreateIOC() { ...params.InputProps, endAdornment: ( <React.Fragment> - {loadingAllowedGitProjects ? ( + {loadingAllowedGitProjects || + !dataReadyAllowedGitProjects ? ( <CircularProgress color="inherit" size={20} diff --git a/src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js b/src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js index f8da494b91ef30f39c4a28f590c55ae92c839b37..fd1310fa8af7421363daae9031d29eef82816190 100644 --- a/src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js +++ b/src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js @@ -13,7 +13,7 @@ import { Autocomplete, Alert } from "@mui/material"; -import { useAllowedGitProjects, useUpdateIoc } from "../../../api/SwaggerApi"; +import { useUpdateIoc } from "../../../api/SwaggerApi"; import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer"; import AccessControl from "../../auth/AccessControl"; import { apiContext } from "../../../api/DeployApi"; @@ -25,12 +25,7 @@ export default function IOCDetailAdmin({ buttonDisabled }) { const [gitId, setGitId] = useState(ioc.gitProjectId); - const [ - allowedGitProjects, - getAllowedGitProjects, - , - loadingAllowedGitProjects - ] = useAllowedGitProjects([]); + const [nameQuery, onNameKeyUp] = useTypingTimer({ interval: 500 }); const [name, setName] = useState({ uuid: ioc.namingUuid, @@ -47,6 +42,17 @@ export default function IOCDetailAdmin({ } const client = useContext(apiContext); + + const { + value: allowedGitProjects, + wrapper: getAllowedGitProjects, + loading: loadingAllowedGitProjects, + dataReady: dataReadyAllowedGitProjects + } = useAPIMethod({ + fcn: client.apis.Git.listProjects, + call: false + }); + const { value: names, wrapper: getNames, @@ -163,12 +169,14 @@ export default function IOCDetailAdmin({ function gitRepoAutocomplete(disabled) { const isDisabled = disabled || iocIsDeployed; - const loading = loadingAllowedGitProjects && !isDisabled; + const loading = + (loadingAllowedGitProjects || !dataReadyAllowedGitProjects) && + !isDisabled; return ( <Autocomplete autoHighlight id="gitId" - options={allowedGitProjects} + options={allowedGitProjects ?? []} loading={loading} clearOnBlur={false} defaultValue={{