diff --git a/frontend/src/component/application/Application.tsx b/frontend/src/component/application/Application.tsx index 2d9c24d63c..f531b74a1f 100644 --- a/frontend/src/component/application/Application.tsx +++ b/frontend/src/component/application/Application.tsx @@ -78,7 +78,7 @@ export const Application = () => { const { setToastData, setToastApiError } = useToast(); const { pathname } = useLocation(); - const basePath = `/applications/${name}`; + const basePath = `/applications/${encodeURIComponent(name)}`; const [showDialog, setShowDialog] = useState(false); diff --git a/frontend/src/component/application/ApplicationList/PaginatedApplicationList.tsx b/frontend/src/component/application/ApplicationList/PaginatedApplicationList.tsx index 3cad383249..51bf588448 100644 --- a/frontend/src/component/application/ApplicationList/PaginatedApplicationList.tsx +++ b/frontend/src/component/application/ApplicationList/PaginatedApplicationList.tsx @@ -109,7 +109,7 @@ export const PaginatedApplicationList = () => { }: any) => ( ), diff --git a/frontend/src/component/project/ProjectApplications/ProjectApplications.tsx b/frontend/src/component/project/ProjectApplications/ProjectApplications.tsx index ec880e82cf..b2b12025c8 100644 --- a/frontend/src/component/project/ProjectApplications/ProjectApplications.tsx +++ b/frontend/src/component/project/ProjectApplications/ProjectApplications.tsx @@ -99,7 +99,9 @@ export const ProjectApplications = () => { title={row.original.name} onClick={() => { trackProjectApplicationClick(); - navigate(`/applications/${row.original.name}`); + navigate( + `/applications/${encodeURIComponent(row.original.name)}`, + ); }} /> ), diff --git a/frontend/src/hooks/api/getters/useApplication/useApplication.ts b/frontend/src/hooks/api/getters/useApplication/useApplication.ts index 17e52ec7ae..c819a05675 100644 --- a/frontend/src/hooks/api/getters/useApplication/useApplication.ts +++ b/frontend/src/hooks/api/getters/useApplication/useApplication.ts @@ -16,7 +16,8 @@ const useApplication = ( name: string, options: SWRConfiguration = {}, ): IUseApplicationOutput => { - const path = formatApiPath(`api/admin/metrics/applications/${name}`); + const encodedName = encodeURIComponent(name); + const path = formatApiPath(`api/admin/metrics/applications/${encodedName}`); const fetcher = async () => { return fetch(path, { @@ -26,7 +27,7 @@ const useApplication = ( .then((res) => res.json()); }; - const APPLICATION_CACHE_KEY = `api/admin/metrics/applications/${name}`; + const APPLICATION_CACHE_KEY = `api/admin/metrics/applications/${encodedName}`; const { data, error } = useSWR(APPLICATION_CACHE_KEY, fetcher, { ...options, @@ -44,7 +45,7 @@ const useApplication = ( return { application: data || { - appName: name, + appName: encodedName, color: '', createdAt: '2022-02-02T21:04:00.268Z', description: '', diff --git a/frontend/src/hooks/api/getters/useApplicationOverview/useApplicationOverview.ts b/frontend/src/hooks/api/getters/useApplicationOverview/useApplicationOverview.ts index 98a9b50ca5..d876f8a880 100644 --- a/frontend/src/hooks/api/getters/useApplicationOverview/useApplicationOverview.ts +++ b/frontend/src/hooks/api/getters/useApplicationOverview/useApplicationOverview.ts @@ -15,8 +15,9 @@ export const useApplicationOverview = ( application: string, options: SWRConfiguration = {}, ) => { + const encodedApplication = encodeURIComponent(application); const path = formatApiPath( - `api/admin/metrics/applications/${application}/overview`, + `api/admin/metrics/applications/${encodedApplication}/overview`, ); const { data, error } = useSWR( path, diff --git a/frontend/src/hooks/api/getters/useConnectedInstances/useConnectedInstances.ts b/frontend/src/hooks/api/getters/useConnectedInstances/useConnectedInstances.ts index 5c91c1fdd8..c3793e2a4a 100644 --- a/frontend/src/hooks/api/getters/useConnectedInstances/useConnectedInstances.ts +++ b/frontend/src/hooks/api/getters/useConnectedInstances/useConnectedInstances.ts @@ -17,8 +17,9 @@ export const useConnectedInstances = ( environment?: string, options: SWRConfiguration = {}, ) => { + const encodedApplication = encodeURIComponent(application); const path = formatApiPath( - `api/admin/metrics/instances/${application}/environment/${environment}`, + `api/admin/metrics/instances/${encodedApplication}/environment/${environment}`, ); const { data, error } = useConditionalSWR( Boolean(environment),