@@ -266,11 +266,7 @@ public override void GenerateToolBar()
266266 } ;
267267
268268 HelpButton . Click += ( _ , _ ) => { MainApp . Instance . MainWindow . NavigationPage . ShowHelp ( ) ; } ;
269-
270- NewBundle . Click += ( s , e ) =>
271- {
272- _ = AskForNewBundle ( ) ;
273- } ;
269+ NewBundle . Click += async ( s , e ) => await AskForNewBundle ( ) ;
274270
275271 RemoveSelected . Click += ( _ , _ ) =>
276272 {
@@ -282,16 +278,8 @@ public override void GenerateToolBar()
282278 InstallSkipHash . Click += async ( _ , _ ) => await ImportAndInstallPackage ( FilteredPackages . GetCheckedPackages ( ) , skiphash : true ) ;
283279 InstallInteractive . Click += async ( _ , _ ) => await ImportAndInstallPackage ( FilteredPackages . GetCheckedPackages ( ) , interactive : true ) ;
284280 InstallAsAdmin . Click += async ( _ , _ ) => await ImportAndInstallPackage ( FilteredPackages . GetCheckedPackages ( ) , elevated : true ) ;
285-
286- OpenBundle . Click += async ( _ , _ ) =>
287- {
288- await OpenFromFile ( ) ;
289- } ;
290-
291- SaveBundle . Click += async ( _ , _ ) =>
292- {
293- await SaveFile ( ) ;
294- } ;
281+ OpenBundle . Click += async ( _ , _ ) => await AskOpenFromFile ( ) ;
282+ SaveBundle . Click += async ( _ , _ ) => await SaveFile ( ) ;
295283
296284 SharePackage . Click += ( _ , _ ) =>
297285 {
@@ -449,25 +437,32 @@ private void MenuRemoveFromList_Invoked(object sender, RoutedEventArgs args)
449437 Loader . Remove ( package ) ;
450438 }
451439
452- public async Task OpenFromFile ( string ? file = null )
440+ public async Task OpenFromString ( string payload , BundleFormatType format , string source )
453441 {
454- try
455- {
456- if ( await AskForNewBundle ( ) == false )
457- return ;
442+ if ( await AskForNewBundle ( ) is false )
443+ return ;
458444
459- if ( file is null )
460- {
461- // Select file
462- FileOpenPicker picker = new ( MainApp . Instance . MainWindow . GetWindowHandle ( ) ) ;
463- file = picker . Show ( [ "*.ubundle" , "*.json" , "*.yaml" , "*.xml" ] ) ;
464- if ( file == String . Empty )
465- return ;
466- }
445+ DialogHelper . ShowLoadingDialog ( CoreTools . Translate ( "Loading packages, please wait..." ) ) ;
467446
468- DialogHelper . ShowLoadingDialog ( CoreTools . Translate ( "Loading packages, please wait..." ) ) ;
447+ double open_version = await AddFromBundle ( payload , format ) ;
448+ TelemetryHandler . ImportBundle ( format ) ;
449+ HasUnsavedChanges = false ;
450+
451+ DialogHelper . HideLoadingDialog ( ) ;
452+ if ( ( int ) ( open_version * 10 ) != ( int ) ( SerializableBundle . ExpectedVersion * 10 ) )
453+ { // Check only up to first decimal digit, prevent floating point precision error.
454+ Logger . Warn ( $ "The loaded bundle \" { source } \" is based on schema version { open_version } , " +
455+ $ "while this UniGetUI build expects version { SerializableBundle . ExpectedVersion } ." +
456+ $ "\n This should not be a problem if packages show up, but be careful") ;
457+ }
469458
470- // Read file
459+ }
460+
461+ public async Task OpenFromFile ( string file )
462+ {
463+ try
464+ {
465+ DialogHelper . ShowLoadingDialog ( CoreTools . Translate ( "Loading packages, please wait..." ) ) ;
471466 BundleFormatType formatType ;
472467 string EXT = file . Split ( '.' ) [ ^ 1 ] . ToLower ( ) ;
473468 if ( EXT == "yaml" )
@@ -482,19 +477,8 @@ public async Task OpenFromFile(string? file = null)
482477 formatType = BundleFormatType . UBUNDLE ;
483478
484479 string fileContent = await File . ReadAllTextAsync ( file ) ;
485-
486- double open_version = await AddFromBundle ( fileContent , formatType ) ;
487- TelemetryHandler . ImportBundle ( formatType ) ;
488- HasUnsavedChanges = false ;
489-
490480 DialogHelper . HideLoadingDialog ( ) ;
491-
492- if ( ( int ) ( open_version * 10 ) != ( int ) ( SerializableBundle . ExpectedVersion * 10 ) )
493- { // Check only up to first decimal digit, prevent floating point precision error.
494- Logger . Warn ( $ "The loaded bundle \" { file } \" is based on schema version { open_version } , " +
495- $ "while this UniGetUI build expects version { SerializableBundle . ExpectedVersion } ." +
496- $ "\n This should not be a problem if packages show up, but be careful") ;
497- }
481+ await OpenFromString ( fileContent , formatType , file ) ;
498482 }
499483 catch ( Exception ex )
500484 {
@@ -515,6 +499,19 @@ public async Task OpenFromFile(string? file = null)
515499 }
516500 }
517501
502+ public async Task AskOpenFromFile ( )
503+ {
504+ if ( await AskForNewBundle ( ) is false )
505+ return ;
506+
507+ FileOpenPicker picker = new ( MainApp . Instance . MainWindow . GetWindowHandle ( ) ) ;
508+ string file = picker . Show ( [ "*.ubundle" , "*.json" , "*.yaml" , "*.xml" ] ) ;
509+ if ( file == String . Empty )
510+ return ;
511+
512+ await OpenFromFile ( file ) ;
513+ }
514+
518515 public async Task SaveFile ( )
519516 {
520517 try
0 commit comments