private async Task LoadRepositoryAsync(CancellationToken cancellationToken)
        {
            try
            {
                var repositoryViewModel = new RepositoryViewModel(_connection, Repository);

                await repositoryViewModel.LoadAsync(cancellationToken);

                DispatcherHelper.CheckBeginInvokeOnUI(() => Repositories.Add(repositoryViewModel));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Load repository");
            }
        }
        private async Task LoadInnerAsync(CancellationToken cancellationToken)
        {
            try
            {
                var repositories = await _connection.Client.Catalog.GetCatalogAsync(new CatalogParameters(), cancellationToken);

                _canLoadCatalog = true;

                var repositoryViewModels = new List <RepositoryViewModel>(repositories.Repositories.Length);

                foreach (var repository in repositories.Repositories.OrderBy(r => r))
                {
                    cancellationToken.ThrowIfCancellationRequested();

                    try
                    {
                        var repositoryViewModel = new RepositoryViewModel(_connection, repository);

                        repositoryViewModels.Add(repositoryViewModel);

                        await repositoryViewModel.LoadAsync(cancellationToken);
                    }
                    catch (Exception ex)
                    {
                        Trace.WriteLine(ex.Message);
                    }
                }

                //Do this on the UI thread
                DispatcherHelper.CheckBeginInvokeOnUI(() => Repositories = new ObservableCollection <RepositoryViewModel>(repositoryViewModels));
            }
            catch (Exception ex)
            {
                Trace.WriteLine($"Unable to load catalog: {ex.Message}");
            }
        }