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

/*
* 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

name: string; name: string;
mainBranch: 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> { export class CreateProjectPage extends React.PureComponent<CreateProjectPageProps, State> {

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

BitbucketCloud = 'bitbucketcloud', BitbucketCloud = 'bitbucketcloud',
GitHub = 'github', GitHub = 'github',
GitLab = 'gitlab', GitLab = 'gitlab',
Monorepo = 'monorepo',
} }

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

importGithubRepository, importGithubRepository,
importGitlabProject, importGitlabProject,
} from '../api/alm-integrations'; } from '../api/alm-integrations';
import { createImportedProjects } from '../api/dop-translation';
import { createProject } from '../api/project-management'; import { createProject } from '../api/project-management';
import { ImportProjectParam } from '../apps/create/project/CreateProjectPage'; import { ImportProjectParam } from '../apps/create/project/CreateProjectPage';
import { CreateProjectModes } from '../apps/create/project/types'; import { CreateProjectModes } from '../apps/create/project/types';
projects: (infer R)[]; projects: (infer R)[];
} }
? { creationMode: A; almSetting: string } & 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() { export function useImportProjectMutation() {
return useMutation({ return useMutation({
return importBitbucketServerProject(data); return importBitbucketServerProject(data);
} else if (data.creationMode === CreateProjectModes.GitLab) { } else if (data.creationMode === CreateProjectModes.GitLab) {
return importGitlabProject(data); return importGitlabProject(data);
} else if (data.creationMode === CreateProjectModes.Monorepo) {
return createImportedProjects(data);
} }


return createProject(data); return createProject(data);

Loading…
Cancel
Save