diff --git a/.changeset/smart-ligers-sniff.md b/.changeset/smart-ligers-sniff.md new file mode 100644 index 0000000000..42353eca2b --- /dev/null +++ b/.changeset/smart-ligers-sniff.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-backend-module-gitlab': patch +'@backstage/plugin-scaffolder': patch +--- + +Fixed bug of passing wrong value to `onChange` handler when using `GitLab` autocomplete diff --git a/plugins/scaffolder-backend-module-gitlab/src/autocomplete/autocomplete.test.ts b/plugins/scaffolder-backend-module-gitlab/src/autocomplete/autocomplete.test.ts index 4fa906686c..a2e2f18ab2 100644 --- a/plugins/scaffolder-backend-module-gitlab/src/autocomplete/autocomplete.test.ts +++ b/plugins/scaffolder-backend-module-gitlab/src/autocomplete/autocomplete.test.ts @@ -79,8 +79,8 @@ describe('handleAutocompleteRequest', () => { mockClient.Users.showCurrentUser.mockResolvedValue({ id: 3 }); mockClient.Groups.allProjects.mockResolvedValue([ - { name: 'repo1', id: 1 }, - { name: 'repo2', id: 2 }, + { name: 'Repo 1', path: 'repo-1' }, + { name: 'Repo 2', path: 'repo-2' }, ]); const result = await handleAutocompleteRequest({ @@ -91,8 +91,8 @@ describe('handleAutocompleteRequest', () => { expect(result).toEqual({ results: [ - { title: 'repo1', id: '1' }, - { title: 'repo2', id: '2' }, + { title: 'Repo 1', id: 'repo-1' }, + { title: 'Repo 2', id: 'repo-2' }, ], }); }); @@ -104,8 +104,8 @@ describe('handleAutocompleteRequest', () => { mockClient.Users.showCurrentUser.mockResolvedValue({ id: 1 }); mockClient.Users.allProjects.mockResolvedValue([ - { name: 'repo1', id: 1 }, - { name: 'repo2', id: 2 }, + { name: 'Repo 1', path: 'repo-1' }, + { name: 'Repo 2', path: 'repo-2' }, ]); const result = await handleAutocompleteRequest({ @@ -116,8 +116,8 @@ describe('handleAutocompleteRequest', () => { expect(result).toEqual({ results: [ - { title: 'repo1', id: '1' }, - { title: 'repo2', id: '2' }, + { title: 'Repo 1', id: 'repo-1' }, + { title: 'Repo 2', id: 'repo-2' }, ], }); }); diff --git a/plugins/scaffolder-backend-module-gitlab/src/autocomplete/autocomplete.ts b/plugins/scaffolder-backend-module-gitlab/src/autocomplete/autocomplete.ts index 6e9a7f79c4..4eddd844e5 100644 --- a/plugins/scaffolder-backend-module-gitlab/src/autocomplete/autocomplete.ts +++ b/plugins/scaffolder-backend-module-gitlab/src/autocomplete/autocomplete.ts @@ -97,7 +97,7 @@ export function createHandleAutocompleteRequest(options: { return { results: response.map(project => ({ title: project.name.trim(), - id: project.id.toString(), + id: project.path, })), }; } diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx index 18da234012..ef6654b60c 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx @@ -244,8 +244,7 @@ export const RepoUrlPicker = ( onChange={repo => setState(prevState => ({ ...prevState, - repoName: repo.name, - id: repo.id || '', + repoName: repo.id || repo.name, })) } rawErrors={rawErrors} diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/types.ts b/plugins/scaffolder/src/components/fields/RepoUrlPicker/types.ts index d37e764eae..74d45fa401 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/types.ts +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/types.ts @@ -25,7 +25,6 @@ export interface RepoUrlPickerState { organization?: string; workspace?: string; project?: string; - id?: string; availableRepos?: AvailableRepositories[]; } diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/utils.test.ts b/plugins/scaffolder/src/components/fields/RepoUrlPicker/utils.test.ts index ce3c938e31..c90b357cf1 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/utils.test.ts +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/utils.test.ts @@ -53,10 +53,9 @@ describe('utils', () => { organization: 'organization', workspace: 'workspace', project: 'backstage', - id: '1234', }), ).toBe( - 'github.com?owner=owner&repo=backstage&organization=organization&workspace=workspace&project=backstage&id=1234', + 'github.com?owner=owner&repo=backstage&organization=organization&workspace=workspace&project=backstage', ); }); }); @@ -65,7 +64,7 @@ describe('utils', () => { it('should parse a complete string', () => { expect( parseRepoPickerUrl( - 'github.com?owner=owner&repo=backstage&organization=organization&workspace=workspace&project=backstage&id=1234', + 'github.com?owner=owner&repo=backstage&organization=organization&workspace=workspace&project=backstage', ), ).toEqual({ host: 'github.com', @@ -74,7 +73,6 @@ describe('utils', () => { organization: 'organization', workspace: 'workspace', project: 'backstage', - id: '1234', }); }); }); diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/utils.ts b/plugins/scaffolder/src/components/fields/RepoUrlPicker/utils.ts index 145a3e256f..408b87413b 100644 --- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/utils.ts +++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/utils.ts @@ -37,9 +37,6 @@ export function serializeRepoPickerUrl(data: RepoUrlPickerState) { if (data.project) { params.set('project', data.project); } - if (data.id) { - params.set('id', data.id); - } return `${data.host}?${params.toString()}`; } @@ -53,7 +50,6 @@ export function parseRepoPickerUrl( let organization = ''; let workspace = ''; let project = ''; - let id = ''; try { if (url) { @@ -64,10 +60,9 @@ export function parseRepoPickerUrl( organization = parsed.searchParams.get('organization') || ''; workspace = parsed.searchParams.get('workspace') || ''; project = parsed.searchParams.get('project') || ''; - id = parsed.searchParams.get('id') || ''; } } catch { /* ok */ } - return { host, owner, repoName, organization, workspace, project, id }; + return { host, owner, repoName, organization, workspace, project }; }