void HandlePullRequest(PullRequest pr) { if (Usernames.Length > 0 && !Usernames.Contains(pr.User.Login)) { return; } if (pr.State == ItemState.Open) { if (PullRequests.ContainsKey(pr)) { return; } PullRequests.Add(pr, new OpenUrlAction { Url = pr.HtmlUrl.OriginalString, ShortDescription = $"Review {pr.Title}", Tooltip = $"Review pull request in {Repository.Owner}/{Repository.Name}, created by {pr.User.Login}" }); } else { if (!PullRequests.Remove(pr)) { return; } } Actions = PullRequests.Values.ToArray(); }
async Task GetPullRequestViewsByJiraNumber(ItemState?state, DateRange searchDates, IList <string> repoNames, string jiraIssueNumber) { try { var hasNewRequests = false; var searchResults = await SearchPullRequests(state, searchDates, repoNames, jiraIssueNumber); // Gets general info on each Pull Request. var existingRequestIds = PullRequests.Select(r => r.Id).ToList(); foreach (var request in searchResults.Items) { var repositoryName = request.PullRequest.HtmlUrl.Segments[2].TrimEnd('/'); var pullRequest = PullRequests.FirstOrDefault(r => r.Id == request.Number); if (null == pullRequest) { pullRequest = GetNewPullRequestView(request); // Get detailed info on each Pull Request. pullRequest = await GetPullRequestDetails(request, pullRequest); PullRequests.Add(pullRequest); if (pullRequest.State == ItemState.Open) { hasNewRequests = true; } } else // already had a copy in our list.. update it { existingRequestIds.Remove(request.Number); if (pullRequest.Updated != request.UpdatedAt.GetValueOrDefault()) { pullRequest = await GetPullRequestDetails(request, pullRequest); } if (pullRequest.JiraIssues.Count == 0) { pullRequest = await GetPullRequestDetails(request, pullRequest); } } } foreach (var requestToRemove in PullRequests.Where(r => existingRequestIds.Contains(r.Id)).ToList()) { PullRequests.Remove(requestToRemove); } if (hasNewRequests) { OnNewPullRequest(); } OnGetPullRequestsComplete(); } catch (Exception ex) { ExceptionHandler(ex); } }
public void Update() { PullRequests.Clear(); foreach (var pullRequest in Model.Values.OrderBy(pr => pr.Id)) { PullRequests.Add(new PullRequestViewModel(pullRequest)); } }
private void GetItems() { foreach (var item in MasterPullRequests.Skip(Skip).Take(PageSize * Increment).ToList()) { PullRequests.Add(item); } Skip += PageSize; PageSize++; OpenLabel = MasterPullRequests.Count(c => c.State == ItemState.Open) + " open"; ClosedLabel = " / " + MasterPullRequests.Count(c => c.State == ItemState.Open) + " closed"; }
/// <summary> /// Reads the pull requests from the persistent file /// </summary> public void GetCurrentSaved() { Debug.Assert(this != null); try { if (!Directory.Exists(CacheDirectory)) { return; } if (!File.Exists(CachedLocalPullRequestListPath)) { return; } var json = File.ReadAllText(CachedLocalPullRequestListPath); var list = JsonConvert.DeserializeObject <IEnumerable <PullRequest> >(json); PullRequests.Clear(); foreach (var p in list) { //Restore Self-Referential Loops p.ParentRepo = this; foreach (var r in p.ValidFiles) { r.ParentPullRequst = p; } if (VerifyPullRequestCache(p)) { PullRequests.Add(p); foreach (var r in p.ValidFiles) { r.LoadFromCache(); } } else { if (Directory.Exists(p.CacheDirectory)) { Directory.Delete(p.CacheDirectory, true); } } } UpdateLocalSavedList(); //In case some were deleted, write the file back } catch (Exception ex) { Logger.Error($"{ex.GetType().Name}: Couldn't load {CachedLocalPullRequestListPath} because {ex.Message}"); } }
private async Task GetPullRequests() { try { Loading = true; var response = await Apis.GitHub.GetPullRequests(Repository.Owner.UserName, Repository.Name, Page); if (response != null) { response.ForEach((item) => { PullRequests.Add(item); }); await RaisePropertyChanged(() => PullRequests); } } catch (Exception e) { Console.WriteLine(e.Message); } Loading = false; ShowEmptyState = PullRequests.Count == 0; }