From 5e8dbad60627efc2b47086909f26a55c8c208e21 Mon Sep 17 00:00:00 2001 From: skybrewer <sky.brewer@ess.eu> Date: Wed, 3 Jul 2024 14:08:31 +0200 Subject: [PATCH] Add an env wrapper --- src/App.js | 3 ++- src/api/DeployApi.js | 6 +++--- src/components/IOC/IOCManage/IOCManage.js | 3 ++- src/components/auth/AccessDenied/AccessDenied.js | 3 ++- src/components/auth/TokenRenew/TokenRenew.js | 8 ++------ src/components/common/Helper.js | 3 ++- .../navigation/NotFoundView/NotFoundView.tsx | 3 ++- src/config/env.js | 13 +++++++++++++ src/views/help/HelpView.js | 7 ++++--- src/views/host/details/HostDetailsView.js | 9 +++++---- 10 files changed, 37 insertions(+), 21 deletions(-) create mode 100644 src/config/env.js diff --git a/src/App.js b/src/App.js index e1206759..4047a6e2 100644 --- a/src/App.js +++ b/src/App.js @@ -27,6 +27,7 @@ import { applicationTitle } from "./components/common/Helper"; import { CreateIOCAccessControl } from "./views/IOC/CreateIOCAccessControl"; import { UserDetailsAccessControl } from "./views/UserPage/UserDetailsAccessControl"; import { DeployAPIProvider } from "./api/DeployApi"; +import env from "./config/env"; // setting up the application (TAB)title function App() { @@ -34,7 +35,7 @@ function App() { useEffect(() => setTitle(applicationTitle()), [setTitle]); return ( - <AppErrorBoundary supportHref={window.SUPPORT_URL}> + <AppErrorBoundary supportHref={env.SUPPORT_URL}> <BrowserRouter> <SnackbarProvider preventDuplicate diff --git a/src/api/DeployApi.js b/src/api/DeployApi.js index ac9d3b23..502f4583 100644 --- a/src/api/DeployApi.js +++ b/src/api/DeployApi.js @@ -6,7 +6,7 @@ import React from "react"; import { createContext } from "react"; import { APIProvider } from "@ess-ics/ce-ui-common"; import { node, arrayOf, oneOfType } from "prop-types"; - +import env from "../config/env"; const propTypes = { /** Elements used as children */ children: oneOfType([ @@ -20,8 +20,8 @@ const propTypes = { export const apiContext = createContext(null); const apiOptions = { - url: `${window.API_BASE_ENDPOINT}`, - server: `${window.SERVER_ADDRESS}`, + url: `${env.API_BASE_ENDPOINT}`, + server: `${env.SERVER_ADDRESS}`, // Workaround for https://github.com/swagger-api/swagger-js/issues/1022 // Empty body POST requests are sent with Content-Type text/plaintext // instead of no content type, or application/json diff --git a/src/components/IOC/IOCManage/IOCManage.js b/src/components/IOC/IOCManage/IOCManage.js index 4aaefabc..568cffff 100644 --- a/src/components/IOC/IOCManage/IOCManage.js +++ b/src/components/IOC/IOCManage/IOCManage.js @@ -21,6 +21,7 @@ import { DeploymentStatus } from "../../../api/DataTypes"; import { IOCService } from "../IOCService"; import { JobTable } from "../../Job"; import { apiContext } from "../../../api/DeployApi"; +import env from "../../../config/env"; export function IOCManage({ ioc, @@ -81,7 +82,7 @@ export function IOCManage({ let subset = { "Naming service record": ( <ExternalLink - href={`${window.NAMING_ADDRESS}/devices.xhtml?i=2&deviceName=${ioc.namingName}`} + href={`${env.NAMING_ADDRESS}/devices.xhtml?i=2&deviceName=${ioc.namingName}`} label="Naming Service Record" > {ioc.namingName} diff --git a/src/components/auth/AccessDenied/AccessDenied.js b/src/components/auth/AccessDenied/AccessDenied.js index d043e517..bbd98029 100644 --- a/src/components/auth/AccessDenied/AccessDenied.js +++ b/src/components/auth/AccessDenied/AccessDenied.js @@ -1,12 +1,13 @@ import React from "react"; import { ServerErrorPage } from "@ess-ics/ce-ui-common"; +import env from "../../../config/env"; export default function AccessDenied() { return ( <ServerErrorPage message="You do not have permission to access this page. Please contact an administrator to request access" status={401} - supportHref={window.SUPPORT_URL} + supportHref={env.SUPPORT_URL} /> ); } diff --git a/src/components/auth/TokenRenew/TokenRenew.js b/src/components/auth/TokenRenew/TokenRenew.js index bedc7575..7524be8f 100644 --- a/src/components/auth/TokenRenew/TokenRenew.js +++ b/src/components/auth/TokenRenew/TokenRenew.js @@ -1,6 +1,7 @@ import { useContext, useCallback } from "react"; import { apiContext } from "../../../api/DeployApi"; import { userContext, useAPIMethod, usePolling } from "@ess-ics/ce-ui-common"; +import env from "../../../config/env"; export default function TokenRenew() { const { user } = useContext(userContext); @@ -25,12 +26,7 @@ export default function TokenRenew() { } }, [user, renewToken, abort]); - usePolling( - renewTokenWhenLoggedIn, - loading, - window.TOKEN_RENEW_INTERVAL, - abort - ); + usePolling(renewTokenWhenLoggedIn, loading, env.TOKEN_RENEW_INTERVAL, abort); return null; } diff --git a/src/components/common/Helper.js b/src/components/common/Helper.js index e075163b..ee73d642 100644 --- a/src/components/common/Helper.js +++ b/src/components/common/Helper.js @@ -2,6 +2,7 @@ import React, { useState, useEffect } from "react"; import { alpha } from "@mui/material/styles"; import TimeAgo from "javascript-time-ago"; import en from "javascript-time-ago/locale/en"; +import env from "../../config/env"; export function formatToList(items) { if (!items) { @@ -66,7 +67,7 @@ export function circularPalette(palette, index, opacity = 1.0) { } function applicationSubTitle() { - const title = `${window.ENVIRONMENT_TITLE}`; + const title = `${env.ENVIRONMENT_TITLE}`; if (title && title !== "undefined") { return " - " + title; diff --git a/src/components/navigation/NotFoundView/NotFoundView.tsx b/src/components/navigation/NotFoundView/NotFoundView.tsx index 2f25211e..26ac675b 100644 --- a/src/components/navigation/NotFoundView/NotFoundView.tsx +++ b/src/components/navigation/NotFoundView/NotFoundView.tsx @@ -4,6 +4,7 @@ */ import React from "react"; import { ServerErrorPage, RootPaper } from "@ess-ics/ce-ui-common"; +import env from "../../../config/env"; interface NotFoundProps { /** String containing message of page not found. Otherwise defaults to a generic "Page Not Found" message */ @@ -17,7 +18,7 @@ export default function NotFoundView({ message, status }: NotFoundProps) { <ServerErrorPage status={status} message={message} - supportHref={window.SUPPORT_URL} + supportHref={env.SUPPORT_URL} /> </RootPaper> ); diff --git a/src/config/env.js b/src/config/env.js new file mode 100644 index 00000000..3699da4a --- /dev/null +++ b/src/config/env.js @@ -0,0 +1,13 @@ +const env = { + SERVER_ADDRESS: window.SERVER_ADDRESS, + ENVIRONMENT_TITLE: window.ENVIRONMENT_TITLE, + API_BASE_ENDPOINT: window.API_BASE_ENDPOINT, + TOKEN_RENEW_INTERVAL: window.TOKEN_RENEW_INTERVAL, + FRONTEND_VERSION: window.FRONTEND_VERSION, + FRONTEND_REPOSITORY_TAGS: window.FRONTEND_REPOSITORY_TAGS, + SUPPORT_URL: window.SUPPORT_URL, + NETBOX_ADDRESS: window.NETBOX_ADDRESS, + NAMING_ADDRESS: window.NETBOX_ADDRESS +}; + +export default env; diff --git a/src/views/help/HelpView.js b/src/views/help/HelpView.js index 25fa86d7..7e4d1c25 100644 --- a/src/views/help/HelpView.js +++ b/src/views/help/HelpView.js @@ -3,6 +3,7 @@ import { RootPaper, Help } from "@ess-ics/ce-ui-common"; import { Stack, Typography } from "@mui/material"; import { GlobalAppBarContext } from "@ess-ics/ce-ui-common"; import { applicationTitle } from "../../components/common/Helper"; +import env from "../../config/env"; export function HelpView() { const { setTitle } = useContext(GlobalAppBarContext); @@ -39,9 +40,9 @@ export function HelpView() { </Stack> } docsHref="https://confluence.esss.lu.se/x/CVGQFg" - supportHref={window.SUPPORT_URL} - version={window.FRONTEND_VERSION} - versionHref={`${window.FRONTEND_REPOSITORY_TAGS}${window.FRONTEND_VERSION}`} + supportHref={env.SUPPORT_URL} + version={env.FRONTEND_VERSION} + versionHref={`${env.FRONTEND_REPOSITORY_TAGS}${env.FRONTEND_VERSION}`} /> </RootPaper> ); diff --git a/src/views/host/details/HostDetailsView.js b/src/views/host/details/HostDetailsView.js index 12a0cd83..b2d00a26 100644 --- a/src/views/host/details/HostDetailsView.js +++ b/src/views/host/details/HostDetailsView.js @@ -21,6 +21,7 @@ import { import { HostDetailsTable } from "./HostDetailsTable"; import { HostJobsSection } from "./HostJobsSection"; import { HostIocSection } from "./HostIocSection"; +import env from "../../../config/env"; export function HostDetailsView({ hostId, host }) { const { setTitle } = useContext(GlobalAppBarContext); @@ -124,15 +125,15 @@ export function HostDetailsView({ hostId, host }) { <ExternalLink href={ host?.netBoxHost.vm - ? `${window.NETBOX_ADDRESS}/virtualization/virtual-machines/${host?.netBoxHost.id}` - : `${window.NETBOX_ADDRESS}/dcim/devices/${host?.netBoxHost.id}` + ? `${env.NETBOX_ADDRESS}/virtualization/virtual-machines/${host?.netBoxHost.id}` + : `${env.NETBOX_ADDRESS}/dcim/devices/${host?.netBoxHost.id}` } aria-label="Host Configuration" > {" "} {host?.netBoxHost.vm - ? `${window.NETBOX_ADDRESS}/virtualization/virtual-machines/${host?.netBoxHost.id}` - : `${window.NETBOX_ADDRESS}/dcim/devices/${host?.netBoxHost.id}`} + ? `${env.NETBOX_ADDRESS}/virtualization/virtual-machines/${host?.netBoxHost.id}` + : `${env.NETBOX_ADDRESS}/dcim/devices/${host?.netBoxHost.id}`} </ExternalLink> ), "Host Metrics": ( -- GitLab