|
5 | 5 | using System.Reactive.Linq; |
6 | 6 | using System.Windows; |
7 | 7 | using System.Windows.Input; |
| 8 | +using GitHub.Extensions; |
8 | 9 | using GitHub.Factories; |
9 | 10 | using GitHub.Primitives; |
| 11 | +using GitHub.Services; |
10 | 12 | using GitHub.ViewModels.TeamExplorer; |
11 | 13 | using GitHub.VisualStudio; |
12 | 14 | using Microsoft.TeamFoundation.Controls; |
13 | 15 | using Microsoft.VisualStudio.Shell; |
| 16 | +using Microsoft.VisualStudio.Threading; |
14 | 17 | using ReactiveUI; |
| 18 | +using Task = System.Threading.Tasks.Task; |
15 | 19 |
|
16 | 20 |
|
17 | 21 | namespace Microsoft.TeamExplorerSample.Sync |
@@ -79,16 +83,29 @@ public override void Initialize(object sender, SectionInitializeEventArgs e) |
79 | 83 | } |
80 | 84 | } |
81 | 85 |
|
82 | | - PublishToGitHub = new RelayCommand(o => ShowPublishDialog()); |
| 86 | + PublishToGitHub = new RelayCommand(o => ShowPublishDialog().Forget()); |
83 | 87 | } |
84 | 88 |
|
85 | | - void ShowPublishDialog() |
| 89 | + async Task ShowPublishDialog() |
86 | 90 | { |
87 | 91 | var exportProvider = compositionServices.GetExportProvider(); |
88 | 92 |
|
| 93 | + var connectionManager = exportProvider.GetExportedValue<IConnectionManager>(); |
| 94 | + var loggedIn = await connectionManager.IsLoggedIn(); |
| 95 | + if (!loggedIn) |
| 96 | + { |
| 97 | + var dialogService = exportProvider.GetExportedValue<IDialogService>(); |
| 98 | + var connection = await dialogService.ShowLoginDialog(); |
| 99 | + |
| 100 | + if (connection == null) |
| 101 | + { |
| 102 | + return; |
| 103 | + } |
| 104 | + } |
| 105 | + |
89 | 106 | var factory = exportProvider.GetExportedValue<IViewViewModelFactory>(); |
90 | 107 | var viewModel = exportProvider.GetExportedValue<IRepositoryPublishViewModel>(); |
91 | | - |
| 108 | + |
92 | 109 | var busy = viewModel.WhenAnyValue(x => x.IsBusy).Subscribe(x => IsBusy = x); |
93 | 110 | var completed = viewModel.PublishRepository |
94 | 111 | .Where(x => x == ProgressState.Success) |
|
0 commit comments