From a01bd24a566cb3b314a4430a5216bdd315662da9 Mon Sep 17 00:00:00 2001 From: Ambroise C Date: Wed, 20 Mar 2024 17:00:18 +0100 Subject: SONAR-21819 Add FE API function --- .../sonar-web/src/main/js/api/dop-translation.ts | 38 ++++++++++++++++++++++ .../js/apps/create/project/CreateProjectPage.tsx | 10 ++++++ .../src/main/js/apps/create/project/types.ts | 1 + .../src/main/js/queries/import-projects.ts | 19 ++++++++++- 4 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 server/sonar-web/src/main/js/api/dop-translation.ts (limited to 'server/sonar-web/src') diff --git a/server/sonar-web/src/main/js/api/dop-translation.ts b/server/sonar-web/src/main/js/api/dop-translation.ts new file mode 100644 index 00000000000..393fb86da32 --- /dev/null +++ b/server/sonar-web/src/main/js/api/dop-translation.ts @@ -0,0 +1,38 @@ +/* + * SonarQube + * Copyright (C) 2009-2024 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +import axios from 'axios'; + +const DOP_TRANSLATION_PATH = '/api/v2/dop-translation'; + +// Imported projects + +const IMPORTED_PROJECTS_PATH = `${DOP_TRANSLATION_PATH}/bound-projects`; + +export function createImportedProjects(data: { + devOpsPlatformSettingId: string; + monorepo: boolean; + newCodeDefinitionType?: string; + newCodeDefinitionValue?: string; + projectKey: string; + projectName: string; + repositoryIdentifier: string; +}) { + return axios.post(IMPORTED_PROJECTS_PATH, data); +} diff --git a/server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx b/server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx index 973e39baa86..33921b2e60d 100644 --- a/server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx +++ b/server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx @@ -114,6 +114,16 @@ export type ImportProjectParam = name: string; mainBranch: string; }[]; + } + | { + creationMode: CreateProjectModes.Monorepo; + devOpsPlatformSettingId: string; + monorepo: boolean; + projects: { + projectKey: string; + projectName: string; + }[]; + repositoryIdentifier: string; }; export class CreateProjectPage extends React.PureComponent { diff --git a/server/sonar-web/src/main/js/apps/create/project/types.ts b/server/sonar-web/src/main/js/apps/create/project/types.ts index cbda3f656ef..a4352b54e4a 100644 --- a/server/sonar-web/src/main/js/apps/create/project/types.ts +++ b/server/sonar-web/src/main/js/apps/create/project/types.ts @@ -24,4 +24,5 @@ export enum CreateProjectModes { BitbucketCloud = 'bitbucketcloud', GitHub = 'github', GitLab = 'gitlab', + Monorepo = 'monorepo', } diff --git a/server/sonar-web/src/main/js/queries/import-projects.ts b/server/sonar-web/src/main/js/queries/import-projects.ts index 9ef461fb423..fae4bd0d7ac 100644 --- a/server/sonar-web/src/main/js/queries/import-projects.ts +++ b/server/sonar-web/src/main/js/queries/import-projects.ts @@ -25,6 +25,7 @@ import { importGithubRepository, importGitlabProject, } from '../api/alm-integrations'; +import { createImportedProjects } from '../api/dop-translation'; import { createProject } from '../api/project-management'; import { ImportProjectParam } from '../apps/create/project/CreateProjectPage'; import { CreateProjectModes } from '../apps/create/project/types'; @@ -36,7 +37,21 @@ export type MutationArg