@@ -22,59 +22,69 @@ export default function DropZone() {
2222 const [ isBackendConnected , setIsBackendConnected ] = useState < boolean > ( false ) ;
2323 const { userCredentials } = useCredentials ( ) ;
2424
25- const fileUpload = async ( file : File , uid : string ) => {
26- try {
27- setIsLoading ( true ) ;
28- setFilesdata ( ( prevfiles ) =>
29- prevfiles . map ( ( curfile ) => {
30- if ( curfile . id == uid ) {
31- return {
32- ...curfile ,
33- status : 'Processing' ,
34- } ;
35- } else {
36- return curfile ;
37- }
38- } )
39- ) ;
40-
41- const apiResponse = await uploadAPI ( file , userCredentials ) ;
42-
43- if ( apiResponse . data != 'Failure' ) {
25+ const fileUpload = async ( file : File , uid : number ) => {
26+ if ( filesdata [ uid ] . status == 'None' ) {
27+ const apirequests = [ ] ;
28+ try {
29+ setIsLoading ( true ) ;
4430 setFilesdata ( ( prevfiles ) =>
45- prevfiles . map ( ( curfile ) => {
46- if ( curfile . id == uid ) {
31+ prevfiles . map ( ( curfile , idx ) => {
32+ if ( idx == uid ) {
4733 return {
4834 ...curfile ,
49- processing : apiResponse ?. data . processingTime . toFixed ( 2 ) ,
50- status : apiResponse ?. data ?. status ,
51- NodesCount : apiResponse ?. data ?. nodeCount ,
52- relationshipCount : apiResponse ?. data ?. relationshipCount ,
35+ status : 'Processing' ,
5336 } ;
5437 } else {
5538 return curfile ;
5639 }
5740 } )
5841 ) ;
42+ const apiResponse = await uploadAPI ( file , userCredentials ) ;
43+ apirequests . push ( apiResponse ) ;
44+ Promise . allSettled ( apirequests )
45+ . then ( ( r ) => {
46+ r . forEach ( ( apiRes ) => {
47+ if ( apiRes . status === 'fulfilled' && apiRes . value ) {
48+ if ( apiRes ?. value ?. data != 'Unexpected Error' ) {
49+ setFilesdata ( ( prevfiles ) =>
50+ prevfiles . map ( ( curfile , idx ) => {
51+ if ( idx == uid ) {
52+ return {
53+ ...curfile ,
54+ processing : apiRes ?. value ?. data ?. processingTime ?. toFixed ( 2 ) ,
55+ status : apiRes ?. value ?. data ?. status ,
56+ NodesCount : apiRes ?. value ?. data ?. nodeCount ,
57+ relationshipCount : apiRes ?. value ?. data ?. relationshipCount ,
58+ } ;
59+ } else {
60+ return curfile ;
61+ }
62+ } )
63+ ) ;
64+ setIsLoading ( false ) ;
65+ } else {
66+ throw new Error ( 'API Failure' ) ;
67+ }
68+ }
69+ } ) ;
70+ } )
71+ . catch ( ( err ) => console . log ( err ) ) ;
72+ } catch ( err ) {
73+ console . log ( err ) ;
5974 setIsLoading ( false ) ;
60- } else {
61- throw new Error ( 'API Failure' ) ;
75+ setFilesdata ( ( prevfiles ) =>
76+ prevfiles . map ( ( curfile , idx ) => {
77+ if ( idx == uid ) {
78+ return {
79+ ...curfile ,
80+ status : 'Failed' ,
81+ } ;
82+ } else {
83+ return curfile ;
84+ }
85+ } )
86+ ) ;
6287 }
63- } catch ( err ) {
64- console . log ( err ) ;
65- setIsLoading ( false ) ;
66- setFilesdata ( ( prevfiles ) =>
67- prevfiles . map ( ( curfile ) => {
68- if ( curfile . id == uid ) {
69- return {
70- ...curfile ,
71- status : 'Failed' ,
72- } ;
73- } else {
74- return curfile ;
75- }
76- } )
77- ) ;
7888 }
7989 } ;
8090
@@ -92,7 +102,9 @@ export default function DropZone() {
92102
93103 useEffect ( ( ) => {
94104 if ( files . length > 0 ) {
95- fileUpload ( files [ files . length - 1 ] , filesdata [ filesdata . length - 1 ] . id ) ;
105+ for ( let i = 0 ; i < files . length ; i ++ ) {
106+ fileUpload ( files [ i ] , i ) ;
107+ }
96108 }
97109 } , [ files ] ) ;
98110
0 commit comments