@@ -316,61 +316,75 @@ where string.Compare(existingPlugin.Metadata.Version, pluginUpdateSource.Version
316316 var downloadToFilePath = Path . Combine ( Path . GetTempPath ( ) ,
317317 $ "{ x . Name } -{ x . NewVersion } .zip") ;
318318
319- _ = Task . Run ( async delegate
319+ _ = Task . Run ( async ( ) =>
320320 {
321- using var cts = new CancellationTokenSource ( ) ;
322-
323- if ( ! x . PluginNewUserPlugin . IsFromLocalInstallPath )
324- {
325- await DownloadFileAsync (
326- $ "{ Context . API . GetTranslation ( "plugin_pluginsmanager_downloading_plugin" ) } { x . PluginNewUserPlugin . Name } ",
327- x . PluginNewUserPlugin . UrlDownload , downloadToFilePath , cts ) ;
328- }
329- else
321+ try
330322 {
331- downloadToFilePath = x . PluginNewUserPlugin . LocalInstallPath ;
332- }
323+ using var cts = new CancellationTokenSource ( ) ;
333324
334- // check if user cancelled download before installing plugin
335- if ( cts . IsCancellationRequested )
336- {
337- return ;
338- }
339- else
340- {
341- await Context . API . UpdatePluginAsync ( x . PluginExistingMetadata , x . PluginNewUserPlugin ,
342- downloadToFilePath ) ;
325+ if ( ! x . PluginNewUserPlugin . IsFromLocalInstallPath )
326+ {
327+ await DownloadFileAsync (
328+ $ "{ Context . API . GetTranslation ( "plugin_pluginsmanager_downloading_plugin" ) } { x . PluginNewUserPlugin . Name } ",
329+ x . PluginNewUserPlugin . UrlDownload , downloadToFilePath , cts ) ;
330+ }
331+ else
332+ {
333+ downloadToFilePath = x . PluginNewUserPlugin . LocalInstallPath ;
334+ }
343335
344- if ( Settings . AutoRestartAfterChanging )
336+ // check if user cancelled download before installing plugin
337+ if ( cts . IsCancellationRequested )
345338 {
346- Context . API . ShowMsg (
347- Context . API . GetTranslation ( "plugin_pluginsmanager_update_title" ) ,
348- string . Format (
349- Context . API . GetTranslation (
350- "plugin_pluginsmanager_update_success_restart" ) ,
351- x . Name ) ) ;
352- Context . API . RestartApp ( ) ;
339+ return ;
353340 }
354341 else
355342 {
356- Context . API . ShowMsg (
357- Context . API . GetTranslation ( "plugin_pluginsmanager_update_title" ) ,
358- string . Format (
359- Context . API . GetTranslation (
360- "plugin_pluginsmanager_update_success_no_restart" ) ,
361- x . Name ) ) ;
343+ await Context . API . UpdatePluginAsync ( x . PluginExistingMetadata , x . PluginNewUserPlugin ,
344+ downloadToFilePath ) ;
345+
346+ if ( Settings . AutoRestartAfterChanging )
347+ {
348+ Context . API . ShowMsg (
349+ Context . API . GetTranslation ( "plugin_pluginsmanager_update_title" ) ,
350+ string . Format (
351+ Context . API . GetTranslation (
352+ "plugin_pluginsmanager_update_success_restart" ) ,
353+ x . Name ) ) ;
354+ Context . API . RestartApp ( ) ;
355+ }
356+ else
357+ {
358+ Context . API . ShowMsg (
359+ Context . API . GetTranslation ( "plugin_pluginsmanager_update_title" ) ,
360+ string . Format (
361+ Context . API . GetTranslation (
362+ "plugin_pluginsmanager_update_success_no_restart" ) ,
363+ x . Name ) ) ;
364+ }
362365 }
363366 }
364- } ) . ContinueWith ( t =>
365- {
366- Context . API . LogException ( ClassName , $ "Update failed for { x . Name } ",
367- t . Exception . InnerException ) ;
368- Context . API . ShowMsg (
369- Context . API . GetTranslation ( "plugin_pluginsmanager_install_error_title" ) ,
370- string . Format (
371- Context . API . GetTranslation ( "plugin_pluginsmanager_install_error_subtitle" ) ,
372- x . Name ) ) ;
373- } , token , TaskContinuationOptions . OnlyOnFaulted , TaskScheduler . Default ) ;
367+ catch ( HttpRequestException e )
368+ {
369+ // show error message
370+ Context . API . ShowMsgError (
371+ string . Format ( Context . API . GetTranslation ( "plugin_pluginsmanager_downloading_plugin" ) , x . Name ) ,
372+ Context . API . GetTranslation ( "plugin_pluginsmanager_download_error" ) ) ;
373+ Context . API . LogException ( ClassName , "An error occurred while downloading plugin" , e ) ;
374+ return ;
375+ }
376+ catch ( Exception e )
377+ {
378+ // show error message
379+ Context . API . LogException ( ClassName , $ "Update failed for { x . Name } ", e ) ;
380+ Context . API . ShowMsgError (
381+ Context . API . GetTranslation ( "plugin_pluginsmanager_install_error_title" ) ,
382+ string . Format (
383+ Context . API . GetTranslation ( "plugin_pluginsmanager_install_error_subtitle" ) ,
384+ x . Name ) ) ;
385+ return ;
386+ }
387+ } ) ;
374388
375389 return true ;
376390 } ,
@@ -436,7 +450,7 @@ await Context.API.UpdatePluginAsync(plugin.PluginExistingMetadata, plugin.Plugin
436450 catch ( Exception ex )
437451 {
438452 Context . API . LogException ( ClassName , $ "Update failed for { plugin . Name } ", ex . InnerException ) ;
439- Context . API . ShowMsg (
453+ Context . API . ShowMsgError (
440454 Context . API . GetTranslation ( "plugin_pluginsmanager_install_error_title" ) ,
441455 string . Format (
442456 Context . API . GetTranslation ( "plugin_pluginsmanager_install_error_subtitle" ) ,
0 commit comments