@@ -55,6 +55,15 @@ export default class FilePushHandler implements DragEventListener {
5555 this . sendUpdate ( { pushId, fileName, logString : `error: "${ msg } "` , error : true } ) ;
5656 }
5757
58+ private static async getStreamReader (
59+ file : File ,
60+ ) : Promise < { reader : ReadableStreamDefaultReader < Uint8Array > ; result : ReadableStreamReadResult < Uint8Array > } > {
61+ const blob = await new Response ( file ) . blob ( ) ;
62+ const reader = blob . stream ( ) . getReader ( ) as ReadableStreamDefaultReader < Uint8Array > ;
63+ const result = await reader . read ( ) ;
64+ return { reader, result } ;
65+ }
66+
5867 private async pushFile ( file : File ) : Promise < void > {
5968 const start = Date . now ( ) ;
6069 const { name : fileName , size : fileSize } = file ;
@@ -65,7 +74,7 @@ export default class FilePushHandler implements DragEventListener {
6574 return ;
6675 }
6776 const id = FilePushHandler . REQUEST_NEW_PUSH_ID ;
68- this . sendUpdate ( { pushId : id , fileName, logString : 'begin ...' , error : false } ) ;
77+ this . sendUpdate ( { pushId : id , fileName, logString : 'begins ...' , error : false } ) ;
6978 const newParams = { id, state : FilePushState . NEW } ;
7079 this . streamReceiver . sendEvent ( CommandControlMessage . createPushFileCommand ( newParams ) ) ;
7180 const pushId : number = await this . waitForResponse ( id ) ;
@@ -74,10 +83,12 @@ export default class FilePushHandler implements DragEventListener {
7483 }
7584
7685 const startParams = { id : pushId , fileName, fileSize, state : FilePushState . START } ;
86+ const waitPromise = this . waitForResponse ( pushId ) ;
7787 this . streamReceiver . sendEvent ( CommandControlMessage . createPushFileCommand ( startParams ) ) ;
78- const stream = file . stream ( ) ;
79- const reader = stream . getReader ( ) ;
80- const [ startResponseCode , result ] = await Promise . all ( [ this . waitForResponse ( pushId ) , reader . read ( ) ] ) ;
88+ const [ startResponseCode , { reader, result } ] = await Promise . all ( [
89+ waitPromise ,
90+ FilePushHandler . getStreamReader ( file ) ,
91+ ] ) ;
8192 if ( startResponseCode !== 0 ) {
8293 this . logError ( pushId , fileName , startResponseCode ) ;
8394 return ;
0 commit comments