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;