@@ -19,17 +19,16 @@ import Languages from 'app/features/global/services/languages-service';
19
19
const PendingRootRow = ( {
20
20
rootKey,
21
21
root,
22
- parentId,
23
22
} : {
24
23
rootKey : string ;
25
24
root : UploadRootType ;
26
- parentId : string ;
27
25
} ) : JSX . Element => {
28
26
const { pauseOrResumeRootUpload, cancelRootUpload, clearRoots } = useUpload ( ) ;
29
27
const [ showFolder , setShowFolder ] = useState ( false ) ;
30
28
const [ restoredFolder , setRestoredFolder ] = useState ( false ) ;
29
+ const { item } = useDriveItem ( root ?. id || '' ) ;
31
30
const { restore } = useDriveActions ( ) ;
32
- const { refresh } = useDriveItem ( parentId || '' ) ;
31
+ const { refresh, children } = useDriveItem ( item ?. parent_id || '' ) ;
33
32
34
33
const firstPendingFile = root . items [ 0 ] ;
35
34
const uploadedFilesSize = root . uploadedSize ;
@@ -42,6 +41,7 @@ const PendingRootRow = ({
42
41
if ( ! showFolder || isFileRoot ) {
43
42
const redirectionURL = RouterService . generateRouteFromState ( {
44
43
itemId : root . id ,
44
+ dirId : item ?. parent_id || '' ,
45
45
} ) ;
46
46
window . open ( redirectionURL , '_blank' ) ;
47
47
} else {
@@ -74,16 +74,23 @@ const PendingRootRow = ({
74
74
}
75
75
} , [ isUploadCompleted ] ) ;
76
76
77
+ const waitForChild = async ( itemId : string , retries = 5 , interval = 1000 ) => {
78
+ for ( let attempt = 0 ; attempt < retries ; attempt ++ ) {
79
+ await new Promise ( resolve => setTimeout ( resolve , interval ) ) ;
80
+ if ( children . some ( child => child . id === itemId ) ) return true ;
81
+ }
82
+ return false ;
83
+ } ;
84
+
77
85
useEffect ( ( ) => {
78
86
const postProcess = async ( ) => {
79
87
if ( isUploadCompleted && ! restoredFolder ) {
80
- await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
81
- await restore ( root . id , parentId ) ;
82
- await new Promise ( resolve => setTimeout ( resolve , 1000 ) ) ;
83
- await refresh ( parentId ) ;
88
+ if ( ! isFileRoot ) await restore ( root . id , item ?. parent_id || '' ) ;
89
+ const found = isFileRoot || ( await waitForChild ( root . id ) ) ;
90
+ if ( found ) await refresh ( item ?. parent_id || '' ) ;
84
91
}
85
92
} ;
86
- if ( isUploadCompleted && ! restoredFolder ) {
93
+ if ( isUploadCompleted && root . id && ! restoredFolder ) {
87
94
setRestoredFolder ( true ) ;
88
95
postProcess ( ) ;
89
96
}
0 commit comments