diff --git a/src/api/UserProvider.jsx b/src/api/UserProvider.jsx index af6bb1a020f265d95d01bc97ed5622322c1c5f23..48d27b104b0fc359b75b19eba47b34ae73300fb6 100644 --- a/src/api/UserProvider.jsx +++ b/src/api/UserProvider.jsx @@ -3,8 +3,8 @@ import { userContext } from "@ess-ics/ce-ui-common"; import { useLoginMutation, useLogoutMutation, - useLazyInfoFromUserNameQuery, - useLazyGetUserRolesQuery + useInfoFromUserNameQuery, + useGetUserRolesQuery } from "../store/deployApi"; export function UserProvider({ children }) { @@ -21,12 +21,12 @@ export function UserProvider({ children }) { } ] = useLoginMutation(); const [callLogout, { isLoading: logoutLoading }] = useLogoutMutation(); - const [getUserInfo, { data: userResponse, isLoading: userLoading }] = - useLazyInfoFromUserNameQuery(); - const [ - getUserRoles, - { data: userRolesResponse, isLoading: userRolesLoading } - ] = useLazyGetUserRolesQuery(); + const { data: userResponse, isLoading: userLoading } = + useInfoFromUserNameQuery({ + skip: !loginResponse + }); + const { data: userRolesResponse, isLoading: userRolesLoading } = + useGetUserRolesQuery({ skip: !loginResponse }); const initialized = Boolean( !loginLoading || !logoutLoading || !userLoading || !userRolesLoading @@ -39,13 +39,6 @@ export function UserProvider({ children }) { [callLogin] ); - useEffect(() => { - if (loginResponse) { - getUserInfo({}); - getUserRoles(); - } - }, [loginResponse, getUserInfo, getUserRoles]); - useEffect(() => { setUser(userResponse); //TEST new changes from BE @@ -55,16 +48,17 @@ export function UserProvider({ children }) { const logout = useCallback(() => { callLogout(); setUser(null); - }, [callLogout]); + setUserRoles([]); + }, [callLogout, setUser, setUserRoles]); return ( initialized && ( <userContext.Provider value={{ - user: user, - userRoles: userRoles, + user, + userRoles, login, - loginError: loginError?.response?.body?.description, + loginError: loginError?.data?.description, logout, resetLoginError: resetLogin }} diff --git a/src/components/IOC/CreateIOC/CreateIOC.jsx b/src/components/IOC/CreateIOC/CreateIOC.jsx index a51f5740b8819238092919aeab5d0e26ca222ba4..16514a7032db10fabc9102278367b3fa605616dd 100644 --- a/src/components/IOC/CreateIOC/CreateIOC.jsx +++ b/src/components/IOC/CreateIOC/CreateIOC.jsx @@ -2,7 +2,6 @@ import { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import { RootPaper } from "@ess-ics/ce-ui-common"; import { - Alert, Autocomplete, Button, CircularProgress, @@ -16,13 +15,12 @@ import { WITHOUT_REPO } from "./RepositoryType"; import { RepositoryName } from "./RepositoryName"; import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer"; import { useCustomSnackbar } from "../../common/snackbar"; - -import { getErrorMessage } from "../../common/Helper"; import { useCreateIocMutation, useLazyFetchIocByNameQuery, useLazyListProjectsQuery } from "../../../store/deployApi"; +import { ApiAlertError } from "../../common/Alerts/ApiAlertError"; export function CreateIOC() { const navigate = useNavigate(); @@ -186,9 +184,7 @@ export function CreateIOC() { /> )} - {error ? ( - <Alert severity="error">{getErrorMessage(error)}</Alert> - ) : null} + {error && <ApiAlertError error={error} />} {isLoading ? ( <LinearProgress aria-busy="true" diff --git a/src/components/common/Helper.jsx b/src/components/common/Helper.jsx index 97cbb18763c99d978ea568113f34a63f66751c79..24f0431342975f83f13b299235f2b2e17596863b 100644 --- a/src/components/common/Helper.jsx +++ b/src/components/common/Helper.jsx @@ -84,9 +84,9 @@ export function initRequestParams(lazyParams, filter, columnSort) { if (columnSort) { if (columnSort.sortOrder === 1) { - requestParams.order_asc = true; + requestParams.orderAsc = true; } else { - requestParams.order_asc = false; + requestParams.orderAsc = false; } } diff --git a/src/components/common/User/UserOperationList.jsx b/src/components/common/User/UserOperationList.jsx index d4a82c4d1590444ea9ad5e869babd9c261e8c560..2302c5499991e4b1fa7a3e1c17cbdecd3feb1786 100644 --- a/src/components/common/User/UserOperationList.jsx +++ b/src/components/common/User/UserOperationList.jsx @@ -3,14 +3,15 @@ import { Card, CardHeader } from "@mui/material"; import { usePagination } from "@ess-ics/ce-ui-common"; import { initRequestParams } from "../Helper"; import { JobTable } from "../../Job"; -import { ROWS_PER_PAGE } from "../../../constants"; +import { + DEFAULT_POLLING_INTERVAL_MILLIS, + ROWS_PER_PAGE +} from "../../../constants"; import { useLazyListJobsQuery } from "../../../store/deployApi"; -const POLLING_INTERVAL = 30000; - export function UserOperationList({ userName }) { const [getJobs, { data: jobs, isFetching }] = useLazyListJobsQuery({ - pollingInterval: POLLING_INTERVAL + pollingInterval: DEFAULT_POLLING_INTERVAL_MILLIS }); const { pagination, setPagination } = usePagination({ diff --git a/src/constants/index.ts b/src/constants/index.ts index 8de6913d72fe11b847a3b8302e83aed3017b2a46..ea5769a0febe6d048a73c5930c7c62ec09ebe530 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -1 +1,2 @@ export const ROWS_PER_PAGE = [20, 50]; +export const DEFAULT_POLLING_INTERVAL_MILLIS = 30000; diff --git a/src/views/host/HostListView.jsx b/src/views/host/HostListView.jsx index 238fc8f97bfefee35c458784fa053ddf2d481849..f3a3af7630beb8fa41e93a804b21cf4d5f9b9202 100644 --- a/src/views/host/HostListView.jsx +++ b/src/views/host/HostListView.jsx @@ -19,7 +19,7 @@ export function HostListView() { const { setTitle } = useContext(GlobalAppBarContext); useEffect(() => setTitle(applicationTitle("IOC hosts")), [setTitle]); - const [callListHostsQuery, { data: hosts, isLoading }] = + const [callListHostsQuery, { data: hosts, isFetching }] = useLazyListHostsQuery(); const [searchParams, setSearchParams] = useSearchParams({ query: "" }); @@ -73,11 +73,11 @@ export function HostListView() { <SearchBar search={setSearch} query={searchParams.get("query")} - loading={isLoading} + loading={isFetching} > <HostTable hosts={hosts?.netBoxHosts ?? []} - loading={isLoading || !hosts} + loading={isFetching || !hosts} pagination={pagination} onPage={onPage} /> diff --git a/src/views/host/details/HostDetailsContainer.jsx b/src/views/host/details/HostDetailsContainer.jsx index eeb0430d5db0b54df27a8f64a80a0bff3249c15a..98b45b61c436a5798b014b37cb86eeafdc679865 100644 --- a/src/views/host/details/HostDetailsContainer.jsx +++ b/src/views/host/details/HostDetailsContainer.jsx @@ -18,12 +18,9 @@ export function HostDetailsContainer({ hostId }) { useEffect(() => { if (fetchError || alertError) { - const message = fetchError?.message - ? fetchError.message - : alertError.message; - const status = fetchError?.status - ? fetchError.status - : alertError?.status; + const message = + fetchError?.data?.description || alertError?.data?.description; + const status = fetchError?.status || alertError?.status; onFetchEntityError(message, status, setError); } }, [fetchError, alertError]); diff --git a/src/views/host/details/HostJobsSection.jsx b/src/views/host/details/HostJobsSection.jsx index 17e93a3a23becab69c3ca79e7dc6bf8541550eed..4dd305693ada73830a5d221c4503370c5809e449 100644 --- a/src/views/host/details/HostJobsSection.jsx +++ b/src/views/host/details/HostJobsSection.jsx @@ -1,11 +1,11 @@ import { useEffect, useMemo, useCallback, useState } from "react"; import { string } from "prop-types"; import { SimpleAccordion, usePagination } from "@ess-ics/ce-ui-common"; -import { Alert, Typography } from "@mui/material"; -import { getErrorMessage } from "../../../components/common/Helper"; +import { Typography } from "@mui/material"; import { JobTable } from "../../../components/Job"; import { ROWS_PER_PAGE } from "../../../constants"; import { useLazyListJobsQuery } from "../../../store/deployApi"; +import { ApiAlertError } from "../../../components/common/Alerts/ApiAlertError"; const propTypes = { hostId: string.isRequired @@ -57,7 +57,7 @@ export const HostJobsSection = ({ hostId }) => { } onChange={(_, expanded) => setExpanded(expanded)} > - {error ? <Alert severity="error">{getErrorMessage(error)}</Alert> : null} + {error && <ApiAlertError error={error} />} {hostLog ? ( <JobTable jobs={!error && hostLog ? hostLog?.jobs : null} diff --git a/src/views/jobs/JobDetailsContainer.jsx b/src/views/jobs/JobDetailsContainer.jsx index 0795e6073c9290befcb7419312ff694d1a542f71..6953ade83f21129b79656b7ff5457c13652f3c60 100644 --- a/src/views/jobs/JobDetailsContainer.jsx +++ b/src/views/jobs/JobDetailsContainer.jsx @@ -7,7 +7,7 @@ import { useFetchJobQuery } from "../../store/deployApi"; const POLL_DEPLOYMENT_INTERVAL = 5000; export function JobDetailsContainer({ id }) { - const [notFoundError, setNotFoundError] = useState(); + const [notFoundError, setNotFoundError] = useState(null); const [jobFinished, setJobFinished] = useState(false); const { @@ -29,7 +29,11 @@ export function JobDetailsContainer({ id }) { useEffect(() => { if (jobError) { - onFetchEntityError(jobError?.message, jobError?.status, setNotFoundError); + onFetchEntityError( + jobError?.data?.description, + jobError?.status, + setNotFoundError + ); } }, [jobError]); diff --git a/src/views/records/RecordDetailsView.jsx b/src/views/records/RecordDetailsView.jsx index ed6bf1d1ddd4c477798fe769512f5b1df936f2bb..fd71b905c0da3dcc0c725c49579546698b58afe9 100644 --- a/src/views/records/RecordDetailsView.jsx +++ b/src/views/records/RecordDetailsView.jsx @@ -35,7 +35,11 @@ export function RecordDetailsView() { useEffect(() => { if (fetchError) { - onFetchEntityError(fetchError?.message, fetchError?.status, setError); + onFetchEntityError( + fetchError?.data?.description, + fetchError?.status, + setError + ); } }, [fetchError]); diff --git a/src/views/records/RecordListView.jsx b/src/views/records/RecordListView.jsx index 9c147711c47f162eb752908e0d0d6740e406fa4a..5aafc7bdad5e5c23fff4988ca4fd23c6e4dca1d9 100644 --- a/src/views/records/RecordListView.jsx +++ b/src/views/records/RecordListView.jsx @@ -19,7 +19,7 @@ export function RecordListView() { const { setTitle } = useContext(GlobalAppBarContext); useEffect(() => setTitle(applicationTitle("Records")), [setTitle]); - const [getRecords, { data: records, isLoading }] = + const [getRecords, { data: records, isFetching }] = useLazyFindAllRecordsQuery(); const [searchParams, setSearchParams] = useSearchParams({ query: "" }); @@ -52,7 +52,7 @@ export function RecordListView() { // Request new search results whenever search or pagination changes useEffect(() => { let requestParams = initRequestParams(pagination); - requestParams.pv_status = recordFilter; + requestParams.pvStatus = recordFilter; requestParams.text = searchParams.get("query"); getRecords(requestParams); }, [getRecords, recordFilter, pagination, searchParams]); @@ -74,11 +74,11 @@ export function RecordListView() { <SearchBar search={setSearch} query={searchParams.get("query")} - loading={isLoading || !records} + loading={isFetching || !records} > <RecordTable records={records} - loading={isLoading || !records} + loading={isFetching || !records} pagination={pagination} onPage={onPage} />