11import { Button , Divider , Heading , useToast , VStack , Text , Code } from "@chakra-ui/react" ;
2- import { FormEvent , useCallback } from "react" ;
2+ import { FormEvent , useCallback , useState } from "react" ;
33import { useNavigate , useParams } from "react-router" ;
44
55import "styles/upload.css" ;
@@ -8,21 +8,25 @@ import { client } from "utils/api/client";
88export const UploadModelPage = ( ) => {
99 const { propId, visitId } = useParams ( ) ;
1010 const toast = useToast ( ) ;
11+ const [ loading , setLoading ] = useState ( false ) ;
1112
1213 const navigate = useNavigate ( ) ;
1314
1415 const uploadFile = useCallback (
1516 async ( e : FormEvent < HTMLFormElement > ) => {
1617 e . preventDefault ( ) ;
1718 const data = new FormData ( e . currentTarget ) ;
19+
20+ setLoading ( true ) ;
1821 const resp = await client . post (
1922 `proposals/${ propId } /sessions/${ visitId } /processingModel` ,
2023 data
2124 ) ;
25+ setLoading ( false ) ;
2226
2327 if ( resp . status === 200 ) {
2428 toast ( { status : "success" , title : "Model successfully uploaded!" } ) ;
25- navigate ( - 1 ) ;
29+ navigate ( `/proposals/ ${ propId } /sessions/ ${ visitId } ` ) ;
2630 } else {
2731 toast ( {
2832 status : "error" ,
@@ -44,7 +48,7 @@ export const UploadModelPage = () => {
4448 </ Text >
4549 < form onSubmit = { uploadFile } encType = 'multipart/form-data' >
4650 < input name = 'file' data-testid = 'file-input' type = 'file' accept = '.h5' />
47- < Button w = '8em' type = 'submit' >
51+ < Button w = '8em' type = 'submit' loadingText = 'Uploading' isLoading = { loading } >
4852 Submit
4953 </ Button >
5054 </ form >
0 commit comments