From 6c7b1c6c7cb4b7d2d85cda4ba96e75d8e0428c3b Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 1 Sep 2024 12:34:05 -0600 Subject: [PATCH] refactor: filter gitlab repositories by groupName --- .../general/generic/save-gitlab-provider.tsx | 5 ++++ .../pages/api/providers/gitlab/callback.ts | 3 ++- .../server/utils/providers/bitbucket.ts | 4 ++-- apps/dokploy/server/utils/providers/gitlab.ts | 24 ++++++++++++++++++- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/apps/dokploy/components/dashboard/application/general/generic/save-gitlab-provider.tsx b/apps/dokploy/components/dashboard/application/general/generic/save-gitlab-provider.tsx index c7b0654b..a56738c3 100644 --- a/apps/dokploy/components/dashboard/application/general/generic/save-gitlab-provider.tsx +++ b/apps/dokploy/components/dashboard/application/general/generic/save-gitlab-provider.tsx @@ -231,6 +231,11 @@ export const SaveGitlabProvider = ({ applicationId }: Props) => { No repositories found. + {repositories && repositories.length === 0 && ( + + No repositories found. + + )} {repositories?.map((repo) => { return ( { + const mappedData = data.values.map((repo: any) => { return { name: repo.name, url: repo.links.html.href, @@ -194,7 +194,7 @@ export const getBitbucketBranches = async (input: GetBitbucketBranches) => { const data = await response.json(); - const mappedData = data.values.map((branch) => { + const mappedData = data.values.map((branch: any) => { return { name: branch.name, commit: { diff --git a/apps/dokploy/server/utils/providers/gitlab.ts b/apps/dokploy/server/utils/providers/gitlab.ts index c06171b5..8fdb5f9a 100644 --- a/apps/dokploy/server/utils/providers/gitlab.ts +++ b/apps/dokploy/server/utils/providers/gitlab.ts @@ -163,6 +163,7 @@ export const getGitlabRepositories = async (input: { await refreshGitlabToken(input.gitlabId); const gitlabProvider = await getGitlabProvider(input.gitlabId); + const response = await fetch( `https://gitlab.com/api/v4/projects?membership=true&owned=true&page=${0}&per_page=${100}`, { @@ -181,7 +182,28 @@ export const getGitlabRepositories = async (input: { const repositories = await response.json(); - return repositories as { + const filteredRepos = repositories.filter((repo: any) => { + const { full_path, kind } = repo.namespace; + const groupName = gitlabProvider.groupName?.toLowerCase(); + + if (groupName) { + return full_path.toLowerCase().includes(groupName) && kind === "group"; + } + return kind === "user"; + }); + + const mappedRepositories = filteredRepos.map((repo: any) => { + return { + id: repo.id, + name: repo.name, + url: repo.web_url, + owner: { + username: repo.namespace.path, + }, + }; + }); + + return mappedRepositories as { id: number; name: string; url: string;