99using GitHub . Extensions ;
1010using GitHub . Logging ;
1111using GitHub . Models ;
12+ using GitHub . Primitives ;
1213using GitHub . Services ;
1314using ReactiveUI ;
1415using Rothko ;
@@ -20,15 +21,14 @@ namespace GitHub.ViewModels.Dialog.Clone
2021 [ PartCreationPolicy ( CreationPolicy . NonShared ) ]
2122 public class RepositoryCloneViewModel : ViewModelBase , IRepositoryCloneViewModel
2223 {
23- static readonly ILogger log = LogManager . ForContext < RepositoryCloneViewModel > ( ) ;
2424 readonly IOperatingSystem os ;
2525 readonly IConnectionManager connectionManager ;
2626 readonly IRepositoryCloneService service ;
2727 readonly IGitService gitService ;
28- readonly IUsageService usageService ;
2928 readonly IUsageTracker usageTracker ;
3029 readonly IReadOnlyList < IRepositoryCloneTabViewModel > tabs ;
3130 string path ;
31+ UriString url ;
3232 RepositoryModel previousRepository ;
3333 ObservableAsPropertyHelper < string > pathWarning ;
3434 int selectedTabIndex ;
@@ -39,23 +39,19 @@ public RepositoryCloneViewModel(
3939 IConnectionManager connectionManager ,
4040 IRepositoryCloneService service ,
4141 IGitService gitService ,
42- IUsageService usageService ,
4342 IUsageTracker usageTracker ,
4443 IRepositorySelectViewModel gitHubTab ,
45- IRepositorySelectViewModel enterpriseTab ,
46- IRepositoryUrlViewModel urlTab )
44+ IRepositorySelectViewModel enterpriseTab )
4745 {
4846 this . os = os ;
4947 this . connectionManager = connectionManager ;
5048 this . service = service ;
5149 this . gitService = gitService ;
52- this . usageService = usageService ;
5350 this . usageTracker = usageTracker ;
5451
5552 GitHubTab = gitHubTab ;
5653 EnterpriseTab = enterpriseTab ;
57- UrlTab = urlTab ;
58- tabs = new IRepositoryCloneTabViewModel [ ] { GitHubTab , EnterpriseTab , UrlTab } ;
54+ tabs = new IRepositoryCloneTabViewModel [ ] { GitHubTab , EnterpriseTab } ;
5955
6056 var repository = this . WhenAnyValue ( x => x . SelectedTabIndex )
6157 . SelectMany ( x => tabs [ x ] . WhenAnyValue ( tab => tab . Repository ) ) ;
@@ -88,14 +84,19 @@ public RepositoryCloneViewModel(
8884
8985 public IRepositorySelectViewModel GitHubTab { get ; }
9086 public IRepositorySelectViewModel EnterpriseTab { get ; }
91- public IRepositoryUrlViewModel UrlTab { get ; }
9287
9388 public string Path
9489 {
9590 get => path ;
9691 set => this . RaiseAndSetIfChanged ( ref path , value ) ;
9792 }
9893
94+ public UriString Url
95+ {
96+ get => url ;
97+ set => this . RaiseAndSetIfChanged ( ref url , value ) ;
98+ }
99+
99100 public string PathWarning => pathWarning . Value ;
100101
101102 public int SelectedTabIndex
@@ -135,26 +136,21 @@ public async Task InitializeAsync(IConnection connection)
135136 SelectedTabIndex = 1 ;
136137 }
137138
138- this . WhenAnyValue ( x => x . SelectedTabIndex ) . Subscribe ( x => tabs [ x ] . Activate ( ) . Forget ( ) ) ;
139-
140- // When a clipboard URL has been set, show the URL tab by default
141- if ( ! string . IsNullOrEmpty ( UrlTab . Url ) )
139+ if ( Url ? . Host is string host && HostAddress . Create ( host ) is HostAddress hostAddress )
142140 {
143- SelectedTabIndex = 2 ;
141+ if ( hostAddress == gitHubConnection ? . HostAddress )
142+ {
143+ GitHubTab . Filter = Url ;
144+ SelectedTabIndex = 0 ;
145+ }
146+ else if ( hostAddress == enterpriseConnection ? . HostAddress )
147+ {
148+ EnterpriseTab . Filter = Url ;
149+ SelectedTabIndex = 1 ;
150+ }
144151 }
145152
146- switch ( SelectedTabIndex )
147- {
148- case 0 :
149- usageTracker . IncrementCounter ( model => model . NumberOfCloneViewGitHubTab ) . Forget ( ) ;
150- break ;
151- case 1 :
152- usageTracker . IncrementCounter ( model => model . NumberOfCloneViewEnterpriseTab ) . Forget ( ) ;
153- break ;
154- case 2 :
155- usageTracker . IncrementCounter ( model => model . NumberOfCloneViewUrlTab ) . Forget ( ) ;
156- break ;
157- }
153+ this . WhenAnyValue ( x => x . SelectedTabIndex ) . Subscribe ( x => tabs [ x ] . Activate ( ) . Forget ( ) ) ;
158154 }
159155
160156 void BrowseForDirectory ( )
0 commit comments