Example #1
0
        protected async override void RepoChanged(bool changed)
        {
            IsLoggedIn = true;
            IsVisible  = false;

            base.RepoChanged(changed);

            IsVisible = await IsAGitHubRepo();

            if (IsVisible)
            {
                RepoName = ActiveRepoName;
                RepoUrl  = ActiveRepoUri.ToString();
                Icon     = GetIcon(false, true, false);

                // We want to display a welcome message but only if Team Explorer isn't
                // already displaying the "Install 3rd Party Tools" message and the current repo is hosted on GitHub.
                if (!settings.HideTeamExplorerWelcomeMessage && !IsGitToolsMessageVisible())
                {
                    ShowWelcomeMessage();
                }

                Debug.Assert(SimpleApiClient != null,
                             "If we're in this block, simpleApiClient cannot be null. It was created by UpdateStatus");
                var repo = await SimpleApiClient.GetRepository();

                Icon       = GetIcon(repo.Private, true, repo.Fork);
                IsLoggedIn = await IsUserAuthenticated();
            }
            else
            {
                teamExplorerServices.HideNotification(welcomeMessageGuid);
            }
        }
        protected async override void RepoChanged()
        {
            IsVisible = false;

            base.RepoChanged();

            IsVisible = await IsAGitHubRepo();

            if (IsVisible)
            {
                RepoName = ActiveRepoName;
                RepoUrl  = ActiveRepoUri.ToString();
                Icon     = GetIcon(false, true, false);
                Debug.Assert(SimpleApiClient != null,
                             "If we're in this block, simpleApiClient cannot be null. It was created by UpdateStatus");
                var repo = await SimpleApiClient.GetRepository();

                Icon = GetIcon(repo.Private, true, repo.Fork);
            }
        }
        protected void UpdateRepo([AllowNull] IGitRepositoryInfo repo)
        {
            if (ActiveRepo.Compare(repo))
            {
                return;
            }

            ActiveRepo = repo;
            if (repo != null)
            {
                var gitRepo = Services.GetRepoFromIGit(repo);
                var uri     = Services.GetUriFromRepository(gitRepo);
                if (uri != null)
                {
                    var name = uri.GetRepo();
                    if (name != null)
                    {
                        ActiveRepoUri  = uri;
                        ActiveRepoName = ActiveRepoUri.GetUser() + "/" + ActiveRepoUri.GetRepo();
                    }
                }
            }
            RepoChanged();
        }
Example #4
0
        public override void Initialize(IServiceProvider serviceProvider)
        {
            Guard.ArgumentNotNull(serviceProvider, nameof(serviceProvider));

            serviceProvider.AddCommandHandler(Guids.guidGitHubToolbarCmdSet, PkgCmdIDList.pullRequestCommand,
                                              (s, e) => Load(new ViewWithData(UIControllerFlow.PullRequestList)).Forget());

            back = serviceProvider.AddCommandHandler(Guids.guidGitHubToolbarCmdSet, PkgCmdIDList.backCommand,
                                                     () => !disabled && (navController?.HasBack ?? false),
                                                     () =>
            {
                DisableButtons();
                navController.Back();
            },
                                                     true);

            forward = serviceProvider.AddCommandHandler(Guids.guidGitHubToolbarCmdSet, PkgCmdIDList.forwardCommand,
                                                        () => !disabled && (navController?.HasForward ?? false),
                                                        () =>
            {
                DisableButtons();
                navController.Forward();
            },
                                                        true);

            refresh = serviceProvider.AddCommandHandler(Guids.guidGitHubToolbarCmdSet, PkgCmdIDList.refreshCommand,
                                                        () => !disabled,
                                                        () =>
            {
                DisableButtons();
                Refresh();
            },
                                                        true);

            serviceProvider.AddCommandHandler(Guids.guidGitHubToolbarCmdSet, PkgCmdIDList.githubCommand,
                                              () => !disabled && (RepositoryOrigin == RepositoryOrigin.DotCom || RepositoryOrigin == RepositoryOrigin.Enterprise),
                                              () =>
            {
                switch (navController?.Current.CurrentFlow)
                {
                case UIControllerFlow.PullRequestDetail:
                    var prDetailViewModel = control.DataContext as IPullRequestDetailViewModel;
                    if (prDetailViewModel != null)
                    {
                        browser.OpenUrl(ActiveRepoUri.ToRepositoryUrl().Append("pull/" + prDetailViewModel.Model.Number));
                    }
                    else
                    {
                        goto default;
                    }
                    break;

                case UIControllerFlow.PullRequestList:
                case UIControllerFlow.PullRequestCreation:
                    browser.OpenUrl(ActiveRepoUri.ToRepositoryUrl().Append("pulls/"));
                    break;

                case UIControllerFlow.Home:
                default:
                    browser.OpenUrl(ActiveRepoUri.ToRepositoryUrl());
                    break;
                }
            },
                                              true);

            serviceProvider.AddCommandHandler(Guids.guidGitHubToolbarCmdSet, PkgCmdIDList.helpCommand,
                                              () => true,
                                              () =>
            {
                browser.OpenUrl(new Uri(GitHubUrls.Documentation));
                usageTracker.IncrementCounter(x => x.NumberOfGitHubPaneHelpClicks).Forget();
            },
                                              true);

            initialized = true;

            base.Initialize(serviceProvider);

            hosts.WhenAnyValue(x => x.IsLoggedInToAnyHost).Subscribe(_ => LoadDefault());
        }