From 3a272ac051baf5be2417be598a591859f4ef30b3 Mon Sep 17 00:00:00 2001 From: Benjamin Janssens Date: Tue, 18 Jun 2024 11:54:00 +0200 Subject: [PATCH] chore: code cleanup Signed-off-by: Benjamin Janssens --- .../BitbucketRepoBranchPicker.tsx | 14 ++--- .../RepoBranchPicker.tsx | 54 ++++++++++--------- 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/plugins/scaffolder/src/components/fields/BitbucketRepoBranchPicker/BitbucketRepoBranchPicker.tsx b/plugins/scaffolder/src/components/fields/BitbucketRepoBranchPicker/BitbucketRepoBranchPicker.tsx index 736841b7a6..70f4ea8c36 100644 --- a/plugins/scaffolder/src/components/fields/BitbucketRepoBranchPicker/BitbucketRepoBranchPicker.tsx +++ b/plugins/scaffolder/src/components/fields/BitbucketRepoBranchPicker/BitbucketRepoBranchPicker.tsx @@ -34,22 +34,24 @@ export const BitbucketRepoBranchPicker = ({ rawErrors: string[]; accessToken?: string; }) => { + const { host, workspace, repository, branch, availableBranches } = state; + const scaffolderApi = useApi(scaffolderApiRef); useDebounce( () => { const updateAvailableBranches = async () => { if ( - state.host === 'bitbucket.org' && + host === 'bitbucket.org' && accessToken && - state.workspace && - state.repository + workspace && + repository ) { const result = await scaffolderApi.autocomplete( accessToken, 'bitbucketCloud', 'branches', - { workspace: state.workspace, repository: state.repository }, + { workspace, repository }, ); onChange({ availableBranches: result }); @@ -70,13 +72,13 @@ export const BitbucketRepoBranchPicker = ({ 0 && !state.branch} + error={rawErrors?.length > 0 && !branch} > { onChange({ branch: newValue || undefined }); }} - options={state.availableBranches || []} + options={availableBranches || []} renderInput={params => ( )} diff --git a/plugins/scaffolder/src/components/fields/BitbucketRepoBranchPicker/RepoBranchPicker.tsx b/plugins/scaffolder/src/components/fields/BitbucketRepoBranchPicker/RepoBranchPicker.tsx index 1f75090e3b..c690a58f4a 100644 --- a/plugins/scaffolder/src/components/fields/BitbucketRepoBranchPicker/RepoBranchPicker.tsx +++ b/plugins/scaffolder/src/components/fields/BitbucketRepoBranchPicker/RepoBranchPicker.tsx @@ -36,34 +36,15 @@ import { BitbucketRepoBranchPicker } from './BitbucketRepoBranchPicker'; */ export const RepoBranchPicker = (props: RepoBranchPickerProps) => { const { uiSchema, onChange, rawErrors, schema, formContext } = props; + const [state, setState] = useState({}); + const { host, branch } = state; + const integrationApi = useApi(scmIntegrationsApiRef); const scmAuthApi = useApi(scmAuthApiRef); + const { secrets, setSecrets } = useTemplateSecrets(); - useEffect(() => { - if (formContext.formData.repoUrl) { - const url = new URL(`https://${formContext.formData.repoUrl}`); - - setState({ - host: url.host, - workspace: url.searchParams.get('workspace') || undefined, - repository: url.searchParams.get('repo') || undefined, - }); - } - }, [formContext]); - - useEffect(() => { - onChange(state.branch); - }, [state, onChange]); - - const updateLocalState = useCallback( - (newState: RepoBranchPickerState) => { - setState(prevState => ({ ...prevState, ...newState })); - }, - [setState], - ); - useDebounce( async () => { const { requestUserCredentials } = uiSchema?.['ui:options'] ?? {}; @@ -96,8 +77,31 @@ export const RepoBranchPicker = (props: RepoBranchPickerProps) => { [state, uiSchema], ); - const hostType = - (state.host && integrationApi.byHost(state.host)?.type) ?? null; + useEffect(() => { + if (formContext.formData.repoUrl) { + const url = new URL(`https://${formContext.formData.repoUrl}`); + + setState({ + host: url.host, + workspace: url.searchParams.get('workspace') || undefined, + repository: url.searchParams.get('repo') || undefined, + }); + } + }, [formContext]); + + useEffect(() => { + onChange(branch); + }, [branch, onChange]); + + const updateLocalState = useCallback( + (newState: RepoBranchPickerState) => { + setState(prevState => ({ ...prevState, ...newState })); + }, + [setState], + ); + + const hostType = (host && integrationApi.byHost(host)?.type) ?? null; + return ( <> {schema.title && (