@@ -22,7 +22,7 @@ import {
2222 SimpleStepper ,
2323 SimpleStepperStep ,
2424} from '@backstage/core-components' ;
25- import { useApi , useRouteRef } from '@backstage/core-plugin-api' ;
25+ import { errorApiRef , useApi , useRouteRef } from '@backstage/core-plugin-api' ;
2626import { makeStyles , TextField , Typography } from '@material-ui/core' ;
2727import { Alert } from '@material-ui/lab' ;
2828import React , { Fragment , useEffect , useRef , useState } from 'react' ;
@@ -153,6 +153,8 @@ const getPackageResources = async (
153153
154154export const AddPackagePage = ( { action } : AddPackagePageProps ) => {
155155 const api = useApi ( configAsDataApiRef ) ;
156+ const errorApi = useApi ( errorApiRef ) ;
157+
156158 const classes = useStyles ( ) ;
157159 const navigate = useNavigate ( ) ;
158160
@@ -163,6 +165,7 @@ export const AddPackagePage = ({ action }: AddPackagePageProps) => {
163165
164166 const newPackageRevision = 'v1' ;
165167
168+ const [ activeStep , setActiveStep ] = useState < number > ( 0 ) ;
166169 const [ addPackageAction , setAddPackageAction ] =
167170 useState < AddPackageSelectItem > ( ) ;
168171 const [ addPackageSelectItems , setAddPackageSelectItems ] = useState <
@@ -463,19 +466,30 @@ export const AddPackagePage = ({ action }: AddPackagePageProps) => {
463466
464467 setIsCreatingPackage ( true ) ;
465468
466- const newPackageRevisionResource = await api . createPackageRevision (
467- resourceJson ,
468- ) ;
469- const newPackageRevisionName = newPackageRevisionResource . metadata . name ;
469+ try {
470+ const newPackageRevisionResource = await api . createPackageRevision (
471+ resourceJson ,
472+ ) ;
473+ const newPackageRevisionName = newPackageRevisionResource . metadata . name ;
470474
471- await updatePackageResources ( newPackageRevisionName ) ;
475+ try {
476+ await updatePackageResources ( newPackageRevisionName ) ;
477+ } catch ( resourcesError ) {
478+ errorApi . post ( resourcesError as Error ) ;
479+ }
472480
473- navigate (
474- packageRef ( {
475- repositoryName : resourceJson . spec . repository ,
476- packageName : newPackageRevisionName ,
477- } ) ,
478- ) ;
481+ navigate (
482+ packageRef ( {
483+ repositoryName : resourceJson . spec . repository ,
484+ packageName : newPackageRevisionName ,
485+ } ) ,
486+ ) ;
487+ } catch ( createError ) {
488+ errorApi . post ( createError as Error ) ;
489+ setActiveStep ( stepNumber => stepNumber - 1 ) ;
490+ } finally {
491+ setIsCreatingPackage ( false ) ;
492+ }
479493 } ;
480494
481495 if ( loading || isCreatingPackage ) {
@@ -522,7 +536,10 @@ export const AddPackagePage = ({ action }: AddPackagePageProps) => {
522536 </ Fragment >
523537 ) }
524538
525- < SimpleStepper >
539+ < SimpleStepper
540+ activeStep = { activeStep }
541+ onStepChange = { ( _ , next ) => setActiveStep ( next ) }
542+ >
526543 < SimpleStepperStep title = "Action" >
527544 < div className = { classes . stepContent } >
528545 { isCloneNamedPackageAction && (
0 commit comments