Example #1
0
        IObservable <Unit> DoPull()
        {
            OperationError = null;

            return(pullRequestsService.Pull(LocalRepository)
                   .Do(_ =>
            {
                if (IsFromFork)
                {
                    usageTracker.IncrementCounter(x => x.NumberOfForkPullRequestPulls).Forget();
                }
                else
                {
                    usageTracker.IncrementCounter(x => x.NumberOfLocalPullRequestPulls).Forget();
                }
            }));
        }
Example #2
0
        IObservable <Unit> DoCheckout(object unused)
        {
            IObservable <Unit> operation = null;

            switch (CheckoutMode)
            {
            case CheckoutMode.NeedsPull:
                operation = pullRequestsService.Pull(repository);
                break;

            case CheckoutMode.Fetch:
                operation = pullRequestsService
                            .GetDefaultLocalBranchName(repository, Model.Number, Model.Title)
                            .SelectMany(x => pullRequestsService.FetchAndCheckout(repository, Model.Number, x));
                break;

            case CheckoutMode.Switch:
                operation = pullRequestsService.SwitchToBranch(repository, Model);
                break;

            case CheckoutMode.InvalidState:
                operation = pullRequestsService
                            .UnmarkLocalBranch(repository)
                            .SelectMany(_ => pullRequestsService.GetDefaultLocalBranchName(repository, Model.Number, Model.Title))
                            .SelectMany(x => pullRequestsService.FetchAndCheckout(repository, Model.Number, x));
                break;

            default:
                Debug.Fail("Invalid CheckoutMode in PullRequestDetailViewModel.DoCheckout.");
                operation = Observable.Empty <Unit>();
                break;
            }

            return(operation.Catch <Unit, Exception>(ex =>
            {
                CheckoutError = ex.Message;
                return Observable.Empty <Unit>();
            }));
        }