22using System . Collections . Specialized ;
33using System . ComponentModel ;
44using System . Globalization ;
5+ using System . IO ;
56using System . Linq ;
6- using System . Reactive ;
77using System . Reactive . Linq ;
8- using System . Reactive . Subjects ;
98using System . Threading . Tasks ;
109using System . Windows . Input ;
1110using GitHub . Api ;
1514using GitHub . Primitives ;
1615using GitHub . Services ;
1716using GitHub . Settings ;
18- using GitHub . UI ;
1917using GitHub . VisualStudio . Base ;
2018using GitHub . VisualStudio . Helpers ;
2119using GitHub . VisualStudio . UI ;
@@ -31,7 +29,7 @@ public class GitHubConnectSection : TeamExplorerSectionBase, IGitHubConnectSecti
3129 {
3230 static readonly ILogger log = LogManager . ForContext < GitHubConnectSection > ( ) ;
3331 readonly IPackageSettings packageSettings ;
34- readonly IVSServices vsServices ;
32+ readonly ITeamExplorerServices teamExplorerServices ;
3533 readonly int sectionIndex ;
3634 readonly ILocalRepositories localRepositories ;
3735 readonly IUsageTracker usageTracker ;
@@ -110,7 +108,7 @@ public GitHubConnectSection(IGitHubServiceProvider serviceProvider,
110108 ITeamExplorerServiceHolder holder ,
111109 IConnectionManager manager ,
112110 IPackageSettings packageSettings ,
113- IVSServices vsServices ,
111+ ITeamExplorerServices teamExplorerServices ,
114112 ILocalRepositories localRepositories ,
115113 IUsageTracker usageTracker ,
116114 int index )
@@ -120,7 +118,7 @@ public GitHubConnectSection(IGitHubServiceProvider serviceProvider,
120118 Guard . ArgumentNotNull ( holder , nameof ( holder ) ) ;
121119 Guard . ArgumentNotNull ( manager , nameof ( manager ) ) ;
122120 Guard . ArgumentNotNull ( packageSettings , nameof ( packageSettings ) ) ;
123- Guard . ArgumentNotNull ( vsServices , nameof ( vsServices ) ) ;
121+ Guard . ArgumentNotNull ( teamExplorerServices , nameof ( teamExplorerServices ) ) ;
124122 Guard . ArgumentNotNull ( localRepositories , nameof ( localRepositories ) ) ;
125123 Guard . ArgumentNotNull ( usageTracker , nameof ( usageTracker ) ) ;
126124
@@ -130,7 +128,7 @@ public GitHubConnectSection(IGitHubServiceProvider serviceProvider,
130128 sectionIndex = index ;
131129
132130 this . packageSettings = packageSettings ;
133- this . vsServices = vsServices ;
131+ this . teamExplorerServices = teamExplorerServices ;
134132 this . localRepositories = localRepositories ;
135133 this . usageTracker = usageTracker ;
136134
@@ -462,15 +460,27 @@ public bool OpenRepository()
462460 var old = Repositories . FirstOrDefault ( x => x . Equals ( Holder . ActiveRepo ) ) ;
463461 if ( ! Equals ( SelectedRepository , old ) )
464462 {
465- var opened = vsServices . TryOpenRepository ( SelectedRepository . LocalPath ) ;
466- if ( ! opened )
463+ try
467464 {
468- // TryOpenRepository might fail because dir no longer exists. Let user find solution themselves.
469- opened = ErrorHandler . Succeeded ( ServiceProvider . GetSolution ( ) . OpenSolutionViaDlg ( SelectedRepository . LocalPath , 1 ) ) ;
470- if ( ! opened )
465+ var repositoryPath = SelectedRepository . LocalPath ;
466+ if ( Directory . Exists ( repositoryPath ) )
471467 {
472- return false ;
468+ teamExplorerServices . OpenRepository ( SelectedRepository . LocalPath ) ;
473469 }
470+ else
471+ {
472+ // If directory no longer exists, let user find solution themselves
473+ var opened = ErrorHandler . Succeeded ( ServiceProvider . GetSolution ( ) . OpenSolutionViaDlg ( SelectedRepository . LocalPath , 1 ) ) ;
474+ if ( ! opened )
475+ {
476+ return false ;
477+ }
478+ }
479+ }
480+ catch ( Exception e )
481+ {
482+ log . Error ( e , nameof ( OpenRepository ) ) ;
483+ return false ;
474484 }
475485 }
476486
0 commit comments