diff --git a/src/pages/code-repositories/overview/CodeRepositoriesOverviewPage.tsx b/src/pages/code-repositories/overview/CodeRepositoriesOverviewPage.tsx
index 8da79dd3..12d87f37 100644
--- a/src/pages/code-repositories/overview/CodeRepositoriesOverviewPage.tsx
+++ b/src/pages/code-repositories/overview/CodeRepositoriesOverviewPage.tsx
@@ -6,6 +6,7 @@ import { RouteComponentProps } from 'react-router-dom'
import { getRole } from 'utils/data'
import { useGetAllAplCodeReposQuery, useGetTeamAplCodeReposQuery } from 'redux/otomiApi'
import { useAppSelector } from 'redux/hooks'
+import { SAFE_REPO_URL } from 'utils/constants'
import { HeadCell } from '../../../components/EnhancedTable'
import RLink from '../../../components/Link'
import ListTable from '../../../components/ListTable'
@@ -23,12 +24,20 @@ const getCodeRepoName = (): CallableFunction =>
)
}
+const getSafeRepositoryHref = (repositoryUrl: string): string | null => {
+ if (!SAFE_REPO_URL.test(repositoryUrl)) return null
+ return `https://${repositoryUrl}`
+}
+
const getCodeRepoUrl = (): CallableFunction =>
function (row): string | React.ReactElement {
- const repositoryUrl = row?.spec?.repositoryUrl ?? ''
+ const repositoryUrl = String(row?.spec?.repositoryUrl ?? '')
+ const href = getSafeRepositoryHref(repositoryUrl)
+
+ if (!href) return repositoryUrl
return (
-
+
{repositoryUrl}
)
diff --git a/src/utils/constants.ts b/src/utils/constants.ts
new file mode 100644
index 00000000..8410c402
--- /dev/null
+++ b/src/utils/constants.ts
@@ -0,0 +1,2 @@
+export const SAFE_REPO_URL =
+ /^(?:https:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}\/|git@[A-Za-z0-9.-]+\.[A-Za-z]{2,}:|[A-Za-z0-9.-]+\.[A-Za-z]{2,}\/)[A-Za-z0-9_.-]+(?:\/[A-Za-z0-9_.-]+)+(?:\.git)?$/