@@ -417,7 +417,7 @@ impl Scene for MainScene {
417417 "_import_respack" => {
418418 let root = dir:: respacks ( ) ?;
419419 let dir = prpr:: dir:: Dir :: new ( & root) ?;
420- let mut dir_id = String :: new ( ) ;
420+ let mut dir_id: Option < String > = None ;
421421 let item: Result < ResPackItem > = ( || {
422422 let config = {
423423 let mut zip = zip:: ZipArchive :: new ( BufReader :: new ( File :: open ( & file) ?) ) ?;
@@ -462,17 +462,20 @@ impl Scene for MainScene {
462462 while dir. exists ( uuid. to_string ( ) ) ? {
463463 uuid = Uuid :: new_v4 ( ) ;
464464 }
465- dir_id = uuid. to_string ( ) ;
466- dir. create_dir_all ( & dir_id) ?;
467- let dir = dir. open_dir ( & dir_id) ?;
465+ let id = uuid. to_string ( ) ;
466+ dir_id = Some ( id. clone ( ) ) ;
467+ dir. create_dir_all ( & id) ?;
468+ let dir = dir. open_dir ( & id) ?;
468469 unzip_into ( BufReader :: new ( File :: open ( file) ?) , & dir, false ) . context ( "failed to unzip" ) ?;
469- get_data_mut ( ) . respacks . push ( dir_id . clone ( ) ) ;
470+ get_data_mut ( ) . respacks . push ( id . clone ( ) ) ;
470471 save_data ( ) ?;
471- Ok ( ResPackItem :: new ( Some ( format ! ( "{root}/{dir_id }" ) . into ( ) ) , config. name ) )
472+ Ok ( ResPackItem :: new ( Some ( format ! ( "{root}/{id }" ) . into ( ) ) , config. name ) )
472473 } ) ( ) ;
473474 match item {
474475 Err ( err) => {
475- dir. remove_dir_all ( & dir_id) ?;
476+ if let Some ( id) = & dir_id {
477+ dir. remove_dir_all ( id) ?;
478+ }
476479 show_error ( err. context ( itl ! ( "import-respack-failed" ) ) ) ;
477480 }
478481 Ok ( item) => {
0 commit comments