public async Task <object> Show <TViewModel>( TViewModel viewModel, IConnection connection, IEnumerable <string> scopes) where TViewModel : IDialogContentViewModel, IConnectionInitializedViewModel { var result = default(object); using (var dialogViewModel = CreateViewModel()) using (dialogViewModel.Done.Take(1).Subscribe(x => result = x)) { if (!connection.Scopes.Matches(scopes)) { await dialogViewModel.StartWithLogout(viewModel, connection); } else { await viewModel.InitializeAsync(connection); dialogViewModel.Start(viewModel); } var window = new GitHubDialogWindow(dialogViewModel); window.ShowModal(); } return(result); }
public Task <object> Show(IDialogContentViewModel viewModel) { var result = default(object); using (var dialogViewModel = CreateViewModel()) using (dialogViewModel.Done.Take(1).Subscribe(x => result = x)) { dialogViewModel.Start(viewModel); var window = new GitHubDialogWindow(dialogViewModel); window.ShowModal(); } return(Task.FromResult(result)); }
public async Task <object> ShowWithFirstConnection <TViewModel>(TViewModel viewModel) where TViewModel : IDialogContentViewModel, IConnectionInitializedViewModel { var result = default(object); using (var dialogViewModel = CreateViewModel()) using (dialogViewModel.Done.Take(1).Subscribe(x => result = x)) { var task = dialogViewModel.StartWithConnection(viewModel); var window = new GitHubDialogWindow(dialogViewModel); window.ShowModal(); await task; } return(result); }