@@ -185,10 +185,16 @@ pub async fn download_files(
185185 . cancel_tokens
186186 . insert ( task_id. to_string ( ) , cancel_token. clone ( ) ) ;
187187 }
188-
189- let result =
190- _download_files_internal ( app. clone ( ) , & items, & headers, task_id, cancel_token. clone ( ) )
191- . await ;
188+ // TODO: Support resuming downloads when FE is ready
189+ let result = _download_files_internal (
190+ app. clone ( ) ,
191+ & items,
192+ & headers,
193+ task_id,
194+ false ,
195+ cancel_token. clone ( ) ,
196+ )
197+ . await ;
192198
193199 // cleanup
194200 {
@@ -259,6 +265,7 @@ async fn _download_files_internal(
259265 items : & [ DownloadItem ] ,
260266 headers : & HashMap < String , String > ,
261267 task_id : & str ,
268+ resume : bool ,
262269 cancel_token : CancellationToken ,
263270) -> Result < ( ) , String > {
264271 log:: info!( "Start download task: {}" , task_id) ;
@@ -318,7 +325,8 @@ async fn _download_files_internal(
318325 let tmp_save_path = save_path. with_extension ( append_extension ( "tmp" ) ) ;
319326 let url_save_path = save_path. with_extension ( append_extension ( "url" ) ) ;
320327
321- let mut resume = tmp_save_path. exists ( )
328+ let mut should_resume = resume
329+ && tmp_save_path. exists ( )
322330 && tokio:: fs:: read_to_string ( & url_save_path)
323331 . await
324332 . map ( |url| url == item. url ) // check if we resume the same URL
@@ -331,7 +339,7 @@ async fn _download_files_internal(
331339 log:: info!( "Started downloading: {}" , item. url) ;
332340 let client = _get_client_for_item ( item, & header_map) . map_err ( err_to_string) ?;
333341 let mut download_delta = 0u64 ;
334- let resp = if resume {
342+ let resp = if should_resume {
335343 let downloaded_size = tmp_save_path. metadata ( ) . map_err ( err_to_string) ?. len ( ) ;
336344 match _get_maybe_resume ( & client, & item. url , downloaded_size) . await {
337345 Ok ( resp) => {
@@ -346,7 +354,7 @@ async fn _download_files_internal(
346354 Err ( e) => {
347355 // fallback to normal download
348356 log:: warn!( "Failed to resume download: {}" , e) ;
349- resume = false ;
357+ should_resume = false ;
350358 _get_maybe_resume ( & client, & item. url , 0 ) . await ?
351359 }
352360 }
@@ -355,7 +363,7 @@ async fn _download_files_internal(
355363 } ;
356364 let mut stream = resp. bytes_stream ( ) ;
357365
358- let file = if resume {
366+ let file = if should_resume {
359367 // resume download, append to existing file
360368 tokio:: fs:: OpenOptions :: new ( )
361369 . write ( true )
@@ -372,6 +380,11 @@ async fn _download_files_internal(
372380 // write chunk to file
373381 while let Some ( chunk) = stream. next ( ) . await {
374382 if cancel_token. is_cancelled ( ) {
383+ if !should_resume {
384+ tokio:: fs:: remove_dir_all ( & save_path. parent ( ) . unwrap ( ) )
385+ . await
386+ . ok ( ) ;
387+ }
375388 log:: info!( "Download cancelled for task: {}" , task_id) ;
376389 app. emit ( & evt_name, evt. clone ( ) ) . unwrap ( ) ;
377390 return Ok ( ( ) ) ;
0 commit comments