diff --git a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx index f292d4e179..b152e6c72c 100644 --- a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx +++ b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx @@ -24,6 +24,7 @@ import { Stepper, Typography, } from '@material-ui/core'; +import { errorApiRef, useApi } from '@backstage/core-plugin-api'; import { FormProps, IChangeEvent, UiSchema, withTheme } from '@rjsf/core'; import { Theme as MuiTheme } from '@rjsf/material-ui'; import React, { useState } from 'react'; @@ -44,7 +45,7 @@ type Props = { formData: Record; onChange: (e: IChangeEvent) => void; onReset: () => void; - onFinish: () => Promise; + onFinish: () => Promise; widgets?: FormProps['widgets']; fields?: FormProps['fields']; }; @@ -113,6 +114,7 @@ export const MultistepJsonForm = ({ }: Props) => { const [activeStep, setActiveStep] = useState(0); const [disableButtons, setDisableButtons] = useState(false); + const errorApi = useApi(errorApiRef); const handleReset = () => { setActiveStep(0); @@ -124,9 +126,11 @@ export const MultistepJsonForm = ({ const handleBack = () => setActiveStep(Math.max(activeStep - 1, 0)); const handleCreate = async () => { setDisableButtons(true); - const success = await onFinish(); - if (!success) { + try { + await onFinish(); + } catch (err) { setDisableButtons(false); + errorApi.post(err); } }; diff --git a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx index 7b6a217543..80aa4158ab 100644 --- a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx +++ b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx @@ -128,15 +128,8 @@ export const TemplatePage = ({ ); const handleCreate = async () => { - try { - const id = await scaffolderApi.scaffold(templateName, formState); - - navigate(generatePath(`${rootLink()}/tasks/:taskId`, { taskId: id })); - return true; - } catch (e) { - errorApi.post(e); - return false; - } + const id = await scaffolderApi.scaffold(templateName, formState); + navigate(generatePath(`${rootLink()}/tasks/:taskId`, { taskId: id })); }; if (error) {