diff --git a/src/components/create-job-form/pipeline-form-build-branches.tsx b/src/components/create-job-form/pipeline-form-build-branches.tsx index d640e2184..13d1397d2 100644 --- a/src/components/create-job-form/pipeline-form-build-branches.tsx +++ b/src/components/create-job-form/pipeline-form-build-branches.tsx @@ -34,12 +34,31 @@ export function PipelineFormBuildBranches({ const [branchFullName, setBranchFullName] = useState(''); const [toEnvironment, setToEnvironment] = useState(''); const branches = useGetApplicationBranches(appName); + const [filteredBranches, setFilteredBranches] = useState([]); const handleOnTextChange = ({ target: { value }, }: ChangeEvent) => { setBranch(value); setBranchFullName(value); + setToEnvironment(''); + const cleanRegex = (val: string): string => { + switch (val) { + case '*': + return '.+'; + case '': + return '^$'; + } + return val; + }; + const values = Array.from( + new Set( + Object.entries(branches) + .filter(([key]) => new RegExp(cleanRegex(key)).test(value)) + .flatMap(([, commits]) => commits) + ) + ); + setFilteredBranches(values); }; const handleChange = ({ target: { value }, @@ -57,7 +76,7 @@ export function PipelineFormBuildBranches({ appName, pipelineParametersBuild: { branch, toEnvironment }, }; - let jobName = ''; + let jobName: string; if (pipelineName === 'build-deploy') { jobName = (await triggerBuildDeploy(body).unwrap()).name; } else { @@ -122,42 +141,43 @@ export function PipelineFormBuildBranches({ )} - {selectedBranch && branches[selectedBranch]?.length > 1 && ( -
- - Environment (optional) - - setToEnvironment(e.target.value)} - value={toEnvironment} - > - - {branches[selectedBranch]?.map((envName) => ( - +
+ )} + {pipelineName === 'build-deploy' && + branch && + !isAnyValidRegex(branch) && ( + + )}
@@ -172,7 +192,10 @@ export function PipelineFormBuildBranches({ )}
-