Browse Source

SONAR-21819 Add FE API function

tags/10.5.0.89998
Ambroise C 1 month ago
parent
commit
a01bd24a56

+ 38
- 0
server/sonar-web/src/main/js/api/dop-translation.ts View File

@@ -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);
}

+ 10
- 0
server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx View File

@@ -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<CreateProjectPageProps, State> {

+ 1
- 0
server/sonar-web/src/main/js/apps/create/project/types.ts View File

@@ -24,4 +24,5 @@ export enum CreateProjectModes {
BitbucketCloud = 'bitbucketcloud',
GitHub = 'github',
GitLab = 'gitlab',
Monorepo = 'monorepo',
}

+ 18
- 1
server/sonar-web/src/main/js/queries/import-projects.ts View File

@@ -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<AlmImport extends ImportProjectParam = ImportProjectPara
projects: (infer R)[];
}
? { creationMode: A; almSetting: string } & R
: never;
:
| {
creationMode: CreateProjectModes.Manual;
project: string;
name: string;
mainBranch: string;
}
| {
creationMode: CreateProjectModes.Monorepo;
devOpsPlatformSettingId: string;
monorepo: boolean;
projectKey: string;
projectName: string;
repositoryIdentifier: string;
};

export function useImportProjectMutation() {
return useMutation({
@@ -56,6 +71,8 @@ export function useImportProjectMutation() {
return importBitbucketServerProject(data);
} else if (data.creationMode === CreateProjectModes.GitLab) {
return importGitlabProject(data);
} else if (data.creationMode === CreateProjectModes.Monorepo) {
return createImportedProjects(data);
}

return createProject(data);

Loading…
Cancel
Save