@@ -90,7 +90,6 @@ const createFetchOptions = (url, options, type) => {
9090 */
9191const fetchXhr = ( target , fetchOptions ) => new Promise ( ( resolve , reject ) => {
9292 const req = new XMLHttpRequest ( ) ;
93- let onProgress = ( ) => { } ;
9493
9594 const onError = ( msg ) => ( ev ) => {
9695 console . warn ( msg , ev ) ;
@@ -112,18 +111,18 @@ const fetchXhr = (target, fetchOptions) => new Promise((resolve, reject) => {
112111 } ;
113112
114113 if ( typeof fetchOptions . onProgress === 'function' ) {
115- onProgress = ( ev ) => {
114+ const rel = fetchOptions . method . toUpperCase ( ) === 'GET' ? req : req . upload ;
115+ rel . addEventListener ( 'progress' , ( ev ) => {
116116 if ( ev . lengthComputable ) {
117- const percentComplete = ev . loaded / ev . total * 100 ;
117+ const percentComplete = Math . round ( ev . loaded / ev . total * 100 ) ;
118118 fetchOptions . onProgress ( ev , percentComplete ) ;
119119 }
120- } ;
120+ } ) ;
121121 }
122122
123123 req . addEventListener ( 'load' , onLoad ) ;
124124 req . addEventListener ( 'error' , onError ( 'An error occured while performing XHR request' ) ) ;
125125 req . addEventListener ( 'abort' , onError ( 'XHR request was aborted' ) ) ;
126- req . addEventListener ( 'progress' , onProgress ) ;
127126 req . open ( fetchOptions . method , target ) ;
128127 Object . entries ( fetchOptions . headers ) . forEach ( ( [ k , v ] ) => req . setRequestHeader ( k , v ) ) ;
129128 req . responseType = fetchOptions . responseType || '' ;
0 commit comments