@@ -42,12 +42,13 @@ export type StepState =
4242 }
4343
4444interface Props {
45- nextStep : ( ) => void
45+ state : StepState
46+ onNext : ( v : StepState ) => void
47+ onBack ?: ( ) => void
4648}
4749
48- export const UploadFlow = ( { nextStep } : Props ) => {
50+ export const UploadFlow = ( { state , onNext , onBack } : Props ) => {
4951 const {
50- initialStepState,
5152 maxRecords,
5253 translations,
5354 uploadStepHook,
@@ -57,7 +58,6 @@ export const UploadFlow = ({ nextStep }: Props) => {
5758 rowHook,
5859 tableHook,
5960 } = useRsi ( )
60- const [ state , setState ] = useState < StepState > ( initialStepState || { type : StepType . upload } )
6161 const [ uploadedFile , setUploadedFile ] = useState < File | null > ( null )
6262 const toast = useToast ( )
6363 const errorToast = useCallback (
@@ -88,16 +88,15 @@ export const UploadFlow = ({ nextStep }: Props) => {
8888 }
8989 try {
9090 const mappedWorkbook = await uploadStepHook ( mapWorkbook ( workbook ) )
91- setState ( {
91+ onNext ( {
9292 type : StepType . selectHeader ,
9393 data : mappedWorkbook ,
9494 } )
95- nextStep ( )
9695 } catch ( e ) {
9796 errorToast ( ( e as Error ) . message )
9897 }
9998 } else {
100- setState ( { type : StepType . selectSheet , workbook } )
99+ onNext ( { type : StepType . selectSheet , workbook } )
101100 }
102101 } }
103102 />
@@ -113,15 +112,15 @@ export const UploadFlow = ({ nextStep }: Props) => {
113112 }
114113 try {
115114 const mappedWorkbook = await uploadStepHook ( mapWorkbook ( state . workbook , sheetName ) )
116- setState ( {
115+ onNext ( {
117116 type : StepType . selectHeader ,
118117 data : mappedWorkbook ,
119118 } )
120- nextStep ( )
121119 } catch ( e ) {
122120 errorToast ( ( e as Error ) . message )
123121 }
124122 } }
123+ onBack = { onBack }
125124 />
126125 )
127126 case StepType . selectHeader :
@@ -131,16 +130,16 @@ export const UploadFlow = ({ nextStep }: Props) => {
131130 onContinue = { async ( ...args ) => {
132131 try {
133132 const { data, headerValues } = await selectHeaderStepHook ( ...args )
134- setState ( {
133+ onNext ( {
135134 type : StepType . matchColumns ,
136135 data,
137136 headerValues,
138137 } )
139- nextStep ( )
140138 } catch ( e ) {
141139 errorToast ( ( e as Error ) . message )
142140 }
143141 } }
142+ onBack = { onBack }
144143 />
145144 )
146145 case StepType . matchColumns :
@@ -152,19 +151,19 @@ export const UploadFlow = ({ nextStep }: Props) => {
152151 try {
153152 const data = await matchColumnsStepHook ( values , rawData , columns )
154153 const dataWithMeta = await addErrorsAndRunHooks ( data , fields , rowHook , tableHook )
155- setState ( {
154+ onNext ( {
156155 type : StepType . validateData ,
157156 data : dataWithMeta ,
158157 } )
159- nextStep ( )
160158 } catch ( e ) {
161159 errorToast ( ( e as Error ) . message )
162160 }
163161 } }
162+ onBack = { onBack }
164163 />
165164 )
166165 case StepType . validateData :
167- return < ValidationStep initialData = { state . data } file = { uploadedFile ! } />
166+ return < ValidationStep initialData = { state . data } file = { uploadedFile ! } onBack = { onBack } />
168167 default :
169168 return < Progress isIndeterminate />
170169 }
0 commit comments