From d1d60ffa9465dad718a7021dfd0d5645249f5b2f Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Thu, 12 Jul 2018 16:32:35 -0400 Subject: [PATCH 01/51] Attempting to query all Check Suites with Pull Requests --- src/GitHub.App/Services/PullRequestService.cs | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/GitHub.App/Services/PullRequestService.cs b/src/GitHub.App/Services/PullRequestService.cs index 8180cd2552..b25e1e26f5 100644 --- a/src/GitHub.App/Services/PullRequestService.cs +++ b/src/GitHub.App/Services/PullRequestService.cs @@ -93,6 +93,35 @@ public async Task> ReadPullRequests( Items = page.Nodes.Select(pr => new ListItemAdapter { Id = pr.Id.Value, + CheckSuites = pr.Commits(null, null, 1, null).Nodes.Select(commit => + commit.Commit.CheckSuites(null, null, null, null, null).AllPages() + .Select(suite => new + { + suite.Conclusion, + suite.Status, + CheckRuns = suite.CheckRuns(null, null, null, null, null).AllPages() + .Select(run => new + { + run.Title, + run.Name, + run.Summary, + run.Conclusion, + run.Status, + run.Text, + Annotations = run.Annotations(null, null, null, null).AllPages() + .Select(annotation => new + { + annotation.Title, + annotation.Message, + annotation.WarningLevel, + annotation.Filename, + annotation.BlobUrl, + annotation.StartLine, + annotation.EndLine, + annotation.RawDetails + }).ToList() + }).ToList() + })).ToList(), Author = new ActorModel { Login = pr.Author.Login, @@ -840,6 +869,8 @@ static Tuple ParseGHfVSConfigKeyValue(string value) class ListItemAdapter : PullRequestListItemModel { public IList Reviews { get; set; } + + public object CheckSuites { get; set; } } class ReviewAdapter From bfd6bfb923d6024df71ea1e4def4965ca2c34727 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Fri, 13 Jul 2018 08:41:09 -0400 Subject: [PATCH 02/51] Trying to get a Check and Status summary --- src/GitHub.App/Services/PullRequestService.cs | 34 ++++++------------- 1 file changed, 11 insertions(+), 23 deletions(-) diff --git a/src/GitHub.App/Services/PullRequestService.cs b/src/GitHub.App/Services/PullRequestService.cs index b25e1e26f5..650366e694 100644 --- a/src/GitHub.App/Services/PullRequestService.cs +++ b/src/GitHub.App/Services/PullRequestService.cs @@ -99,29 +99,16 @@ public async Task> ReadPullRequests( { suite.Conclusion, suite.Status, - CheckRuns = suite.CheckRuns(null, null, null, null, null).AllPages() - .Select(run => new - { - run.Title, - run.Name, - run.Summary, - run.Conclusion, - run.Status, - run.Text, - Annotations = run.Annotations(null, null, null, null).AllPages() - .Select(annotation => new - { - annotation.Title, - annotation.Message, - annotation.WarningLevel, - annotation.Filename, - annotation.BlobUrl, - annotation.StartLine, - annotation.EndLine, - annotation.RawDetails - }).ToList() - }).ToList() - })).ToList(), + }).ToList() + ).ToList().FirstOrDefault(), + Statuses = pr.Commits(null, null, 1, null).Nodes.Select(commit => + commit.Commit.Status.Contexts + .Select(context => new + { + context.Context, + context.State, + }).ToList() + ).ToList().FirstOrDefault(), Author = new ActorModel { Login = pr.Author.Login, @@ -871,6 +858,7 @@ class ListItemAdapter : PullRequestListItemModel public IList Reviews { get; set; } public object CheckSuites { get; set; } + public object Statuses { get; set; } } class ReviewAdapter From 8622f214e84301323bb20f8451bbce887b133f90 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Tue, 17 Jul 2018 12:35:09 -0400 Subject: [PATCH 03/51] Experimenting with ways to get the data via GraphQL --- src/GitHub.App/GitHub.App.csproj | 1 + src/GitHub.App/Models/PullRequestModel.cs | 3 +- src/GitHub.App/Services/ChecksService.cs | 114 ++++++++++++++++++ src/GitHub.App/Services/PullRequestService.cs | 41 ++++--- .../GitHubPane/PullRequestDetailViewModel.cs | 5 +- .../GitHub.Exports.Reactive.csproj | 1 + .../Services/IChecksService.cs | 15 +++ src/GitHub.Exports/GitHub.Exports.csproj | 6 + src/GitHub.Exports/Models/AnnotationModel.cs | 21 ++++ .../Models/CheckAnnotationLevelEnum.cs | 9 ++ .../Models/CheckConclusionStateEnum.cs | 12 ++ src/GitHub.Exports/Models/CheckRunModel.cs | 18 +++ .../Models/CheckStatusStateEnum.cs | 10 ++ src/GitHub.Exports/Models/CheckSuiteModel.cs | 18 +++ .../Models/PullRequestDetailModel.cs | 2 + .../Services/PullRequestSessionService.cs | 54 +++++++++ .../PullRequestDetailViewModelTests.cs | 3 +- 17 files changed, 311 insertions(+), 22 deletions(-) create mode 100644 src/GitHub.App/Services/ChecksService.cs create mode 100644 src/GitHub.Exports.Reactive/Services/IChecksService.cs create mode 100644 src/GitHub.Exports/Models/AnnotationModel.cs create mode 100644 src/GitHub.Exports/Models/CheckAnnotationLevelEnum.cs create mode 100644 src/GitHub.Exports/Models/CheckConclusionStateEnum.cs create mode 100644 src/GitHub.Exports/Models/CheckRunModel.cs create mode 100644 src/GitHub.Exports/Models/CheckStatusStateEnum.cs create mode 100644 src/GitHub.Exports/Models/CheckSuiteModel.cs diff --git a/src/GitHub.App/GitHub.App.csproj b/src/GitHub.App/GitHub.App.csproj index 62d2193dcb..6dab735f07 100644 --- a/src/GitHub.App/GitHub.App.csproj +++ b/src/GitHub.App/GitHub.App.csproj @@ -229,6 +229,7 @@ + diff --git a/src/GitHub.App/Models/PullRequestModel.cs b/src/GitHub.App/Models/PullRequestModel.cs index 6a560fa2ea..754cef6fbd 100644 --- a/src/GitHub.App/Models/PullRequestModel.cs +++ b/src/GitHub.App/Models/PullRequestModel.cs @@ -3,7 +3,6 @@ using GitHub.Primitives; using GitHub.VisualStudio.Helpers; using System.Diagnostics; -using System.Collections.Generic; using GitHub.Extensions; namespace GitHub.Models @@ -183,4 +182,4 @@ internal string DebuggerDisplay } } } -} +} \ No newline at end of file diff --git a/src/GitHub.App/Services/ChecksService.cs b/src/GitHub.App/Services/ChecksService.cs new file mode 100644 index 0000000000..c11a0f327f --- /dev/null +++ b/src/GitHub.App/Services/ChecksService.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.Composition; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Reactive; +using System.Reactive.Linq; +using System.Reactive.Threading.Tasks; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using GitHub.Api; +using GitHub.Extensions; +using GitHub.Logging; +using GitHub.Models; +using GitHub.Primitives; +using LibGit2Sharp; +using Octokit.GraphQL; +using Octokit.GraphQL.Core; +using Octokit.GraphQL.Model; +using Rothko; +using static System.FormattableString; +using static Octokit.GraphQL.Variable; + +namespace GitHub.Services +{ + [Export(typeof(IChecksService))] + [PartCreationPolicy(CreationPolicy.Shared)] + public class ChecksService : IChecksService + { + readonly IGitClient gitClient; + readonly IGitService gitService; + readonly IVSGitExt gitExt; + readonly IGraphQLClientFactory graphqlFactory; + readonly IOperatingSystem os; + readonly IUsageTracker usageTracker; + + [ImportingConstructor] + public ChecksService( + IGitClient gitClient, + IGitService gitService, + IVSGitExt gitExt, + IGraphQLClientFactory graphqlFactory, + IOperatingSystem os, + IUsageTracker usageTracker) + { + this.gitClient = gitClient; + this.gitService = gitService; + this.gitExt = gitExt; + this.graphqlFactory = graphqlFactory; + this.os = os; + this.usageTracker = usageTracker; + } + + static ICompiledQuery>> readCheckSuites; + + public async Task> ReadCheckSuites( + HostAddress address, + string owner, + string name, + int pullRequestNumber) + { + if (readCheckSuites == null) + { + readCheckSuites = new Query() + .Repository(Var(nameof(owner)), Var(nameof(name))) + .PullRequest(Var(nameof(pullRequestNumber))) + .Commits(last: 1).Nodes.Select( + commit => commit.Commit.CheckSuites(null,null, null,null, null).AllPages() + .Select(suite => new CheckSuiteModel + { + Conclusion = (CheckConclusionStateEnum?) suite.Conclusion, + Status = (CheckStatusStateEnum) suite.Status, + CreatedAt = suite.CreatedAt, + UpdatedAt = suite.UpdatedAt, + CheckRuns = suite.CheckRuns(null, null, null, null, null).AllPages() + .Select(run => new CheckRunModel + { + Conclusion = (CheckConclusionStateEnum?) run.Conclusion, + Status = (CheckStatusStateEnum) run.Status, + StartedAt = run.StartedAt, + CompletedAt = run.CompletedAt, + Annotations = run.Annotations(null, null, null, null).AllPages() + .Select(annotation => new CheckRunAnnotationModel + { + BlobUrl = annotation.BlobUrl, + StartLine = annotation.StartLine, + EndLine = annotation.EndLine, + Filename = annotation.Filename, + Message = annotation.Message, + Title = annotation.Title, + WarningLevel = (CheckAnnotationLevelEnum?) annotation.WarningLevel, + RawDetails = annotation.RawDetails + }).ToList() + }).ToList() + }).ToList() + ).Compile(); + } + + var graphql = await graphqlFactory.CreateConnection(address); + var vars = new Dictionary + { + { nameof(owner), owner }, + { nameof(name), name }, + { nameof(pullRequestNumber), pullRequestNumber }, + }; + + var result = await graphql.Run(readCheckSuites, vars); + return result.FirstOrDefault(); + } + } +} diff --git a/src/GitHub.App/Services/PullRequestService.cs b/src/GitHub.App/Services/PullRequestService.cs index 650366e694..38dcfc007d 100644 --- a/src/GitHub.App/Services/PullRequestService.cs +++ b/src/GitHub.App/Services/PullRequestService.cs @@ -93,22 +93,28 @@ public async Task> ReadPullRequests( Items = page.Nodes.Select(pr => new ListItemAdapter { Id = pr.Id.Value, - CheckSuites = pr.Commits(null, null, 1, null).Nodes.Select(commit => - commit.Commit.CheckSuites(null, null, null, null, null).AllPages() - .Select(suite => new - { - suite.Conclusion, - suite.Status, - }).ToList() - ).ToList().FirstOrDefault(), - Statuses = pr.Commits(null, null, 1, null).Nodes.Select(commit => - commit.Commit.Status.Contexts - .Select(context => new - { - context.Context, - context.State, - }).ToList() - ).ToList().FirstOrDefault(), + LastCommit = pr.Commits(null, null, 1, null).Nodes.Select(commit => + new + { + Checks = commit.Commit.CheckSuites(null, null, null, null, null).AllPages() + .Select(suite => new + { + suite.Conclusion, + suite.Status, + }).ToList(), + + /* + TODO: Resolve https://github.com/octokit/octokit.graphql.net/pull/122 + Contexts can be null + + Statuses = commit.Commit.Status.Contexts + .Select(context => new + { + context.Context, + context.State, + }).ToList() + */ + }).ToList().FirstOrDefault(), Author = new ActorModel { Login = pr.Author.Login, @@ -857,8 +863,7 @@ class ListItemAdapter : PullRequestListItemModel { public IList Reviews { get; set; } - public object CheckSuites { get; set; } - public object Statuses { get; set; } + public object LastCommit { get; set; } } class ReviewAdapter diff --git a/src/GitHub.App/ViewModels/GitHubPane/PullRequestDetailViewModel.cs b/src/GitHub.App/ViewModels/GitHubPane/PullRequestDetailViewModel.cs index 38a1d4b478..f3b030cfbc 100644 --- a/src/GitHub.App/ViewModels/GitHubPane/PullRequestDetailViewModel.cs +++ b/src/GitHub.App/ViewModels/GitHubPane/PullRequestDetailViewModel.cs @@ -38,6 +38,7 @@ public sealed class PullRequestDetailViewModel : PanePageViewModelBase, IPullReq readonly IUsageTracker usageTracker; readonly ITeamExplorerContext teamExplorerContext; readonly ISyncSubmodulesCommand syncSubmodulesCommand; + private IChecksService checksService; IModelService modelService; PullRequestDetailModel model; IActorViewModel author; @@ -73,7 +74,8 @@ public PullRequestDetailViewModel( IUsageTracker usageTracker, ITeamExplorerContext teamExplorerContext, IPullRequestFilesViewModel files, - ISyncSubmodulesCommand syncSubmodulesCommand) + ISyncSubmodulesCommand syncSubmodulesCommand, + IChecksService checksService) { Guard.ArgumentNotNull(pullRequestsService, nameof(pullRequestsService)); Guard.ArgumentNotNull(sessionManager, nameof(sessionManager)); @@ -88,6 +90,7 @@ public PullRequestDetailViewModel( this.usageTracker = usageTracker; this.teamExplorerContext = teamExplorerContext; this.syncSubmodulesCommand = syncSubmodulesCommand; + this.checksService = checksService; Files = files; Checkout = ReactiveCommand.CreateAsyncObservable( diff --git a/src/GitHub.Exports.Reactive/GitHub.Exports.Reactive.csproj b/src/GitHub.Exports.Reactive/GitHub.Exports.Reactive.csproj index b634ab7a9b..627792582f 100644 --- a/src/GitHub.Exports.Reactive/GitHub.Exports.Reactive.csproj +++ b/src/GitHub.Exports.Reactive/GitHub.Exports.Reactive.csproj @@ -175,6 +175,7 @@ + diff --git a/src/GitHub.Exports.Reactive/Services/IChecksService.cs b/src/GitHub.Exports.Reactive/Services/IChecksService.cs new file mode 100644 index 0000000000..62cad9216f --- /dev/null +++ b/src/GitHub.Exports.Reactive/Services/IChecksService.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using GitHub.Primitives; + +namespace GitHub.Services +{ + public interface IChecksService + { + Task> ReadCheckSuites( + HostAddress address, + string owner, + string name, + int pullRequestNumber); + } +} \ No newline at end of file diff --git a/src/GitHub.Exports/GitHub.Exports.csproj b/src/GitHub.Exports/GitHub.Exports.csproj index 46273365f2..c0dc62019e 100644 --- a/src/GitHub.Exports/GitHub.Exports.csproj +++ b/src/GitHub.Exports/GitHub.Exports.csproj @@ -168,6 +168,12 @@ + + + + + + diff --git a/src/GitHub.Exports/Models/AnnotationModel.cs b/src/GitHub.Exports/Models/AnnotationModel.cs new file mode 100644 index 0000000000..2cfce11a2a --- /dev/null +++ b/src/GitHub.Exports/Models/AnnotationModel.cs @@ -0,0 +1,21 @@ +namespace GitHub.Models +{ + public class CheckRunAnnotationModel + { + public string BlobUrl { get; set; } + + public int StartLine { get; set; } + + public int EndLine { get; set; } + + public string Filename { get; set; } + + public string Message { get; set; } + + public string Title { get; set; } + + public CheckAnnotationLevelEnum? WarningLevel { get; set; } + + public string RawDetails { get; set; } + } +} \ No newline at end of file diff --git a/src/GitHub.Exports/Models/CheckAnnotationLevelEnum.cs b/src/GitHub.Exports/Models/CheckAnnotationLevelEnum.cs new file mode 100644 index 0000000000..153815da15 --- /dev/null +++ b/src/GitHub.Exports/Models/CheckAnnotationLevelEnum.cs @@ -0,0 +1,9 @@ +namespace GitHub.Models +{ + public enum CheckAnnotationLevelEnum + { + Failure, + Notice, + Warning, + } +} \ No newline at end of file diff --git a/src/GitHub.Exports/Models/CheckConclusionStateEnum.cs b/src/GitHub.Exports/Models/CheckConclusionStateEnum.cs new file mode 100644 index 0000000000..2b6dc90479 --- /dev/null +++ b/src/GitHub.Exports/Models/CheckConclusionStateEnum.cs @@ -0,0 +1,12 @@ +namespace GitHub.Models +{ + public enum CheckConclusionStateEnum + { + ActionRequired, + TimedOut, + Cancelled, + Failure, + Success, + Neutral, + } +} \ No newline at end of file diff --git a/src/GitHub.Exports/Models/CheckRunModel.cs b/src/GitHub.Exports/Models/CheckRunModel.cs new file mode 100644 index 0000000000..0adcced7fd --- /dev/null +++ b/src/GitHub.Exports/Models/CheckRunModel.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace GitHub.Models +{ + public class CheckRunModel + { + public CheckConclusionStateEnum? Conclusion { get; set; } + + public CheckStatusStateEnum Status { get; set; } + + public DateTimeOffset? StartedAt { get; set; } + + public DateTimeOffset? CompletedAt { get; set; } + + public List Annotations { get; set; } + } +} \ No newline at end of file diff --git a/src/GitHub.Exports/Models/CheckStatusStateEnum.cs b/src/GitHub.Exports/Models/CheckStatusStateEnum.cs new file mode 100644 index 0000000000..f48915d75d --- /dev/null +++ b/src/GitHub.Exports/Models/CheckStatusStateEnum.cs @@ -0,0 +1,10 @@ +namespace GitHub.Models +{ + public enum CheckStatusStateEnum + { + Requested, + Queued, + InProgress, + Completed, + } +} \ No newline at end of file diff --git a/src/GitHub.Exports/Models/CheckSuiteModel.cs b/src/GitHub.Exports/Models/CheckSuiteModel.cs new file mode 100644 index 0000000000..27efb9dd43 --- /dev/null +++ b/src/GitHub.Exports/Models/CheckSuiteModel.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace GitHub.Models +{ + public class CheckSuiteModel + { + public CheckConclusionStateEnum? Conclusion { get; set; } + + public CheckStatusStateEnum Status { get; set; } + + public DateTimeOffset CreatedAt { get; set; } + + public DateTimeOffset UpdatedAt { get; set; } + + public List CheckRuns { get; set; } + } +} \ No newline at end of file diff --git a/src/GitHub.Exports/Models/PullRequestDetailModel.cs b/src/GitHub.Exports/Models/PullRequestDetailModel.cs index ee6ce03a67..ebbeb640c8 100644 --- a/src/GitHub.Exports/Models/PullRequestDetailModel.cs +++ b/src/GitHub.Exports/Models/PullRequestDetailModel.cs @@ -91,5 +91,7 @@ public class PullRequestDetailModel /// into threads, as such each pull request review comment will appear in both collections. /// public IReadOnlyList Threads { get; set; } + + public List CheckSuites { get; set; } } } diff --git a/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs b/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs index 163acfb70c..d750961ce3 100644 --- a/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs +++ b/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs @@ -38,6 +38,7 @@ public class PullRequestSessionService : IPullRequestSessionService { static readonly ILogger log = LogManager.ForContext(); static ICompiledQuery readPullRequest; + static ICompiledQuery>> readCheckSuites; static ICompiledQuery readViewer; readonly IGitService gitService; @@ -339,6 +340,9 @@ public virtual async Task ReadPullRequestDetail(HostAddr var apiClient = await apiClientFactory.Create(address); var files = await apiClient.GetPullRequestFiles(owner, name, number).ToList(); + var checkSuites = await GetPullRequestCheckSuites(address, owner, name, number); + + result.CheckSuites = checkSuites; result.ChangedFiles = files.Select(file => new PullRequestFileModel { @@ -351,6 +355,56 @@ public virtual async Task ReadPullRequestDetail(HostAddr return result; } + private async Task> GetPullRequestCheckSuites(HostAddress address, string owner, string name, int number) + { + if(readCheckSuites == null) + { + readCheckSuites = new Query() + .Repository(Var(nameof(owner)), Var(nameof(name))) + .PullRequest(Var(nameof(number))).Commits(last: 1).Nodes.Select( + commit => commit.Commit.CheckSuites(null, null, null, null, null).AllPages() + .Select(suite => new CheckSuiteModel + { + Conclusion = (CheckConclusionStateEnum?) suite.Conclusion, + Status = (CheckStatusStateEnum) suite.Status, + CreatedAt = suite.CreatedAt, + UpdatedAt = suite.UpdatedAt, + CheckRuns = suite.CheckRuns(null, null, null, null, null).AllPages() + .Select(run => new CheckRunModel + { + Conclusion = (CheckConclusionStateEnum?) run.Conclusion, + Status = (CheckStatusStateEnum) run.Status, + StartedAt = run.StartedAt, + CompletedAt = run.CompletedAt, + Annotations = run.Annotations(null, null, null, null).AllPages() + .Select(annotation => new CheckRunAnnotationModel + { + BlobUrl = annotation.BlobUrl, + StartLine = annotation.StartLine, + EndLine = annotation.EndLine, + Filename = annotation.Filename, + Message = annotation.Message, + Title = annotation.Title, + WarningLevel = (CheckAnnotationLevelEnum?) annotation.WarningLevel, + RawDetails = annotation.RawDetails + }).ToList() + }).ToList() + }).ToList() + ).Compile(); + } + + var vars = new Dictionary + { + { nameof(owner), owner }, + { nameof(name), name }, + { nameof(number), number }, + }; + + var connection = await graphqlFactory.CreateConnection(address); + var result = await connection.Run(readCheckSuites, vars); + return result.First(); + } + public virtual async Task ReadViewer(HostAddress address) { if (readViewer == null) diff --git a/test/GitHub.App.UnitTests/ViewModels/GitHubPane/PullRequestDetailViewModelTests.cs b/test/GitHub.App.UnitTests/ViewModels/GitHubPane/PullRequestDetailViewModelTests.cs index 601283e5ac..9af1c4243a 100644 --- a/test/GitHub.App.UnitTests/ViewModels/GitHubPane/PullRequestDetailViewModelTests.cs +++ b/test/GitHub.App.UnitTests/ViewModels/GitHubPane/PullRequestDetailViewModelTests.cs @@ -581,7 +581,8 @@ static Tuple CreateTargetAndSer Substitute.For(), Substitute.For(), Substitute.For(), - Substitute.For()); + Substitute.For(), + Substitute.For()); vm.InitializeAsync(repository, Substitute.For(), "owner", "repo", 1).Wait(); return Tuple.Create(vm, pullRequestService); From 518c8c0f5e1068fedaed10ea40d9bf5e46dfcad0 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Tue, 17 Jul 2018 12:54:31 -0400 Subject: [PATCH 04/51] Updating nuget package --- lib/Octokit.GraphQL.0.1.1-beta.nupkg | Bin 0 -> 186546 bytes src/GitHub.Api/GitHub.Api.csproj | 8 ++++---- src/GitHub.Api/packages.config | 2 +- src/GitHub.App/GitHub.App.csproj | 8 ++++---- src/GitHub.App/packages.config | 2 +- .../GitHub.InlineReviews.csproj | 8 ++++---- src/GitHub.InlineReviews/packages.config | 2 +- .../GitHub.VisualStudio.csproj | 8 ++++---- src/GitHub.VisualStudio/packages.config | 2 +- .../GitHub.App.UnitTests.csproj | 8 ++++---- test/GitHub.App.UnitTests/packages.config | 2 +- 11 files changed, 25 insertions(+), 25 deletions(-) create mode 100644 lib/Octokit.GraphQL.0.1.1-beta.nupkg diff --git a/lib/Octokit.GraphQL.0.1.1-beta.nupkg b/lib/Octokit.GraphQL.0.1.1-beta.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..3ab9b4d819ac269f5347d68d893f9c55dd0f7e2b GIT binary patch literal 186546 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 UW)$it47K~t}WR{JRr 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

C0>f#Xa+X1FA!Zr$E@GBJd%dHiocyk)NokVc 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 z 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

nGp2 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 literal 0 HcmV?d00001 diff --git a/src/GitHub.Api/GitHub.Api.csproj b/src/GitHub.Api/GitHub.Api.csproj index 7dd7ceaad4..28f1263421 100644 --- a/src/GitHub.Api/GitHub.Api.csproj +++ b/src/GitHub.Api/GitHub.Api.csproj @@ -50,11 +50,11 @@ ..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll - - ..\..\packages\Octokit.GraphQL.0.1.0-beta\lib\netstandard1.1\Octokit.GraphQL.dll + + ..\..\packages\Octokit.GraphQL.0.1.1-beta\lib\netstandard1.1\Octokit.GraphQL.dll - - ..\..\packages\Octokit.GraphQL.0.1.0-beta\lib\netstandard1.1\Octokit.GraphQL.Core.dll + + ..\..\packages\Octokit.GraphQL.0.1.1-beta\lib\netstandard1.1\Octokit.GraphQL.Core.dll ..\..\packages\Serilog.2.5.0\lib\net46\Serilog.dll diff --git a/src/GitHub.Api/packages.config b/src/GitHub.Api/packages.config index d28e60261c..c6373f1d86 100644 --- a/src/GitHub.Api/packages.config +++ b/src/GitHub.Api/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/src/GitHub.App/GitHub.App.csproj b/src/GitHub.App/GitHub.App.csproj index 6dab735f07..f7490e6578 100644 --- a/src/GitHub.App/GitHub.App.csproj +++ b/src/GitHub.App/GitHub.App.csproj @@ -144,11 +144,11 @@ ..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll - - ..\..\packages\Octokit.GraphQL.0.1.0-beta\lib\netstandard1.1\Octokit.GraphQL.dll + + ..\..\packages\Octokit.GraphQL.0.1.1-beta\lib\netstandard1.1\Octokit.GraphQL.dll - - ..\..\packages\Octokit.GraphQL.0.1.0-beta\lib\netstandard1.1\Octokit.GraphQL.Core.dll + + ..\..\packages\Octokit.GraphQL.0.1.1-beta\lib\netstandard1.1\Octokit.GraphQL.Core.dll diff --git a/src/GitHub.App/packages.config b/src/GitHub.App/packages.config index bc724e90b5..f531b14594 100644 --- a/src/GitHub.App/packages.config +++ b/src/GitHub.App/packages.config @@ -21,7 +21,7 @@ - + diff --git a/src/GitHub.InlineReviews/GitHub.InlineReviews.csproj b/src/GitHub.InlineReviews/GitHub.InlineReviews.csproj index e560eb9651..f79e55372e 100644 --- a/src/GitHub.InlineReviews/GitHub.InlineReviews.csproj +++ b/src/GitHub.InlineReviews/GitHub.InlineReviews.csproj @@ -366,11 +366,11 @@ ..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll - - ..\..\packages\Octokit.GraphQL.0.1.0-beta\lib\netstandard1.1\Octokit.GraphQL.dll + + ..\..\packages\Octokit.GraphQL.0.1.1-beta\lib\netstandard1.1\Octokit.GraphQL.dll - - ..\..\packages\Octokit.GraphQL.0.1.0-beta\lib\netstandard1.1\Octokit.GraphQL.Core.dll + + ..\..\packages\Octokit.GraphQL.0.1.1-beta\lib\netstandard1.1\Octokit.GraphQL.Core.dll diff --git a/src/GitHub.InlineReviews/packages.config b/src/GitHub.InlineReviews/packages.config index 946cd3d240..44d71eb082 100644 --- a/src/GitHub.InlineReviews/packages.config +++ b/src/GitHub.InlineReviews/packages.config @@ -34,7 +34,7 @@ - + diff --git a/src/GitHub.VisualStudio/GitHub.VisualStudio.csproj b/src/GitHub.VisualStudio/GitHub.VisualStudio.csproj index 0b49b61e95..2cf5dfcb42 100644 --- a/src/GitHub.VisualStudio/GitHub.VisualStudio.csproj +++ b/src/GitHub.VisualStudio/GitHub.VisualStudio.csproj @@ -250,11 +250,11 @@ ..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll - - ..\..\packages\Octokit.GraphQL.0.1.0-beta\lib\netstandard1.1\Octokit.GraphQL.dll + + ..\..\packages\Octokit.GraphQL.0.1.1-beta\lib\netstandard1.1\Octokit.GraphQL.dll - - ..\..\packages\Octokit.GraphQL.0.1.0-beta\lib\netstandard1.1\Octokit.GraphQL.Core.dll + + ..\..\packages\Octokit.GraphQL.0.1.1-beta\lib\netstandard1.1\Octokit.GraphQL.Core.dll ..\..\packages\Rothko.0.0.3-ghfvs\lib\net45\rothko.dll diff --git a/src/GitHub.VisualStudio/packages.config b/src/GitHub.VisualStudio/packages.config index d21ad02600..03b60ae2e7 100644 --- a/src/GitHub.VisualStudio/packages.config +++ b/src/GitHub.VisualStudio/packages.config @@ -37,7 +37,7 @@ - + diff --git a/test/GitHub.App.UnitTests/GitHub.App.UnitTests.csproj b/test/GitHub.App.UnitTests/GitHub.App.UnitTests.csproj index 0f0aa5ff62..cf754f8b06 100644 --- a/test/GitHub.App.UnitTests/GitHub.App.UnitTests.csproj +++ b/test/GitHub.App.UnitTests/GitHub.App.UnitTests.csproj @@ -91,11 +91,11 @@ ..\..\packages\NSubstitute.2.0.3\lib\net45\NSubstitute.dll True - - ..\..\packages\Octokit.GraphQL.0.1.0-beta\lib\netstandard1.1\Octokit.GraphQL.dll + + ..\..\packages\Octokit.GraphQL.0.1.1-beta\lib\netstandard1.1\Octokit.GraphQL.dll - - ..\..\packages\Octokit.GraphQL.0.1.0-beta\lib\netstandard1.1\Octokit.GraphQL.Core.dll + + ..\..\packages\Octokit.GraphQL.0.1.1-beta\lib\netstandard1.1\Octokit.GraphQL.Core.dll diff --git a/test/GitHub.App.UnitTests/packages.config b/test/GitHub.App.UnitTests/packages.config index 43cd82a08e..84d11fa23a 100644 --- a/test/GitHub.App.UnitTests/packages.config +++ b/test/GitHub.App.UnitTests/packages.config @@ -30,7 +30,7 @@ - + From c3d3b1c98edc126b2577bcab61d31113cc769b37 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Tue, 17 Jul 2018 15:06:35 -0400 Subject: [PATCH 05/51] Adding models --- src/GitHub.App/Services/PullRequestService.cs | 27 ++++++++++++++----- .../Services/PullRequestSessionService.cs | 4 +-- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/GitHub.App/Services/PullRequestService.cs b/src/GitHub.App/Services/PullRequestService.cs index 38dcfc007d..8289daf7d2 100644 --- a/src/GitHub.App/Services/PullRequestService.cs +++ b/src/GitHub.App/Services/PullRequestService.cs @@ -94,13 +94,14 @@ public async Task> ReadPullRequests( { Id = pr.Id.Value, LastCommit = pr.Commits(null, null, 1, null).Nodes.Select(commit => - new + new LastCommitSummaryModel { - Checks = commit.Commit.CheckSuites(null, null, null, null, null).AllPages() - .Select(suite => new + Id = commit.Id, + Checks = commit.Commit.CheckSuites(null, null, null, null, null).AllPages(10) + .Select(suite => new CheckSuiteSummaryModel { - suite.Conclusion, - suite.Status, + Conclusion = (CheckConclusionStateEnum?) suite.Conclusion, + Status = (CheckStatusStateEnum) suite.Status, }).ToList(), /* @@ -863,7 +864,7 @@ class ListItemAdapter : PullRequestListItemModel { public IList Reviews { get; set; } - public object LastCommit { get; set; } + public LastCommitSummaryModel LastCommit { get; set; } } class ReviewAdapter @@ -872,5 +873,19 @@ class ReviewAdapter public int CommentCount { get; set; } public int Count => CommentCount + (!string.IsNullOrWhiteSpace(Body) ? 1 : 0); } + + class LastCommitSummaryModel + { + public ID Id { get; set; } + + public List Checks { get; set; } + } + + class CheckSuiteSummaryModel + { + public CheckConclusionStateEnum? Conclusion { get; set; } + + public CheckStatusStateEnum Status { get; set; } + } } } diff --git a/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs b/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs index d750961ce3..71079c02c7 100644 --- a/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs +++ b/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs @@ -362,14 +362,14 @@ private async Task> GetPullRequestCheckSuites(HostAddress readCheckSuites = new Query() .Repository(Var(nameof(owner)), Var(nameof(name))) .PullRequest(Var(nameof(number))).Commits(last: 1).Nodes.Select( - commit => commit.Commit.CheckSuites(null, null, null, null, null).AllPages() + commit => commit.Commit.CheckSuites(null, null, null, null, null).AllPages(10) .Select(suite => new CheckSuiteModel { Conclusion = (CheckConclusionStateEnum?) suite.Conclusion, Status = (CheckStatusStateEnum) suite.Status, CreatedAt = suite.CreatedAt, UpdatedAt = suite.UpdatedAt, - CheckRuns = suite.CheckRuns(null, null, null, null, null).AllPages() + CheckRuns = suite.CheckRuns(null, null, null, null, null).AllPages(10) .Select(run => new CheckRunModel { Conclusion = (CheckConclusionStateEnum?) run.Conclusion, From 047ba1a90843e4ec874cd859cd3f00073a858cac Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Thu, 19 Jul 2018 17:50:49 -0400 Subject: [PATCH 06/51] Adding pull request summary state to the list --- src/GitHub.App/Models/PullRequestModel.cs | 11 ++ .../PullRequestListItemViewModelDesigner.cs | 2 + src/GitHub.App/Services/ModelService.cs | 2 + src/GitHub.App/Services/PullRequestService.cs | 106 ++++++++++++++---- .../PullRequestListItemViewModel.cs | 4 + .../IPullRequestListItemViewModel.cs | 6 + src/GitHub.Exports/Models/CheckSuiteModel.cs | 28 +++++ .../Models/IPullRequestModel.cs | 9 ++ .../Models/PullRequestDetailModel.cs | 2 +- .../Models/PullRequestListItemModel.cs | 5 + .../Services/PullRequestSessionService.cs | 74 +++++++----- .../GitHubPane/PullRequestListItemView.xaml | 9 +- 12 files changed, 205 insertions(+), 53 deletions(-) diff --git a/src/GitHub.App/Models/PullRequestModel.cs b/src/GitHub.App/Models/PullRequestModel.cs index 754cef6fbd..de33a52df0 100644 --- a/src/GitHub.App/Models/PullRequestModel.cs +++ b/src/GitHub.App/Models/PullRequestModel.cs @@ -124,6 +124,17 @@ public PullRequestStateEnum State } } + PullRequestChecksEnum checks; + public PullRequestChecksEnum Checks + { + get { return checks; } + set + { + checks = value; + this.RaisePropertyChange(); + } + } + // TODO: Remove these property once maintainer workflow has been merged to master. public bool IsOpen => State == PullRequestStateEnum.Open; public bool Merged => State == PullRequestStateEnum.Merged; diff --git a/src/GitHub.App/SampleData/PullRequestListItemViewModelDesigner.cs b/src/GitHub.App/SampleData/PullRequestListItemViewModelDesigner.cs index 4c00b0ba98..a00b6995c1 100644 --- a/src/GitHub.App/SampleData/PullRequestListItemViewModelDesigner.cs +++ b/src/GitHub.App/SampleData/PullRequestListItemViewModelDesigner.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; +using GitHub.Models; using GitHub.ViewModels; using GitHub.ViewModels.GitHubPane; @@ -16,5 +17,6 @@ public class PullRequestListItemViewModelDesigner : ViewModelBase, IPullRequestL public int Number { get; set; } public string Title { get; set; } public DateTimeOffset UpdatedAt { get; set; } + public PullRequestChecksEnum Checks { get; set; } } } diff --git a/src/GitHub.App/Services/ModelService.cs b/src/GitHub.App/Services/ModelService.cs index 3c165df248..32b483f4d3 100644 --- a/src/GitHub.App/Services/ModelService.cs +++ b/src/GitHub.App/Services/ModelService.cs @@ -440,6 +440,7 @@ IPullRequestModel Create(PullRequestCacheItem prCacheItem) CommitCount = prCacheItem.CommitCount, CreatedAt = prCacheItem.CreatedAt, Head = Create(prCacheItem.Head), + Checks = prCacheItem.Checks ?? PullRequestChecksEnum.None, State = prCacheItem.State.HasValue ? prCacheItem.State.Value : prCacheItem.IsOpen.Value ? PullRequestStateEnum.Open : PullRequestStateEnum.Closed, @@ -577,6 +578,7 @@ public PullRequestCacheItem(PullRequest pr) // Nullable for compatibility with old caches. public PullRequestStateEnum? State { get; set; } + public PullRequestChecksEnum? Checks { get; set; } // This fields exists only for compatibility with old caches. The State property should be used. public bool? IsOpen { get; set; } diff --git a/src/GitHub.App/Services/PullRequestService.cs b/src/GitHub.App/Services/PullRequestService.cs index 8289daf7d2..1312def2d1 100644 --- a/src/GitHub.App/Services/PullRequestService.cs +++ b/src/GitHub.App/Services/PullRequestService.cs @@ -96,25 +96,19 @@ public async Task> ReadPullRequests( LastCommit = pr.Commits(null, null, 1, null).Nodes.Select(commit => new LastCommitSummaryModel { - Id = commit.Id, - Checks = commit.Commit.CheckSuites(null, null, null, null, null).AllPages(10) - .Select(suite => new CheckSuiteSummaryModel - { - Conclusion = (CheckConclusionStateEnum?) suite.Conclusion, - Status = (CheckStatusStateEnum) suite.Status, - }).ToList(), - - /* - TODO: Resolve https://github.com/octokit/octokit.graphql.net/pull/122 - Contexts can be null - - Statuses = commit.Commit.Status.Contexts - .Select(context => new - { - context.Context, - context.State, - }).ToList() - */ +// CheckSuites = commit.Commit.CheckSuites(null, null, null, null, null).AllPages(10) +// .Select(suite => new CheckSuiteSummaryModel +// { +// Conclusion = (CheckConclusionStateEnum?)suite.Conclusion, +// Status = (CheckStatusStateEnum)suite.Status, +// }).ToList(), + Statuses = commit.Commit.Status + .Select(context => + context.Contexts.Select(statusContext => new StatusSummaryModel + { + State = (StatusStateEnum)statusContext.State, + }).ToList() + ).SingleOrDefault() }).ToList().FirstOrDefault(), Author = new ActorModel { @@ -150,6 +144,71 @@ Contexts can be null { item.CommentCount += item.Reviews.Sum(x => x.Count); item.Reviews = null; + + var hasCheckSuites = item.LastCommit.CheckSuites != null + && item.LastCommit.CheckSuites.Any(); + + var hasStatuses = item.LastCommit.Statuses != null + && item.LastCommit.Statuses.Any(); + + if (!hasCheckSuites && !hasStatuses) + { + item.Checks = PullRequestChecksEnum.None; + } + else + { + var checksHasFailure = false; + var checksHasCompleteSuccess = true; + + if (hasCheckSuites) + { + checksHasFailure = item.LastCommit + .CheckSuites.Any(model => model.Conclusion.HasValue + && (model.Conclusion.Value == CheckConclusionStateEnum.Failure + || model.Conclusion.Value == + CheckConclusionStateEnum.ActionRequired)); + + if (!checksHasFailure) + { + checksHasCompleteSuccess = item.LastCommit + .CheckSuites.All(model => model.Conclusion.HasValue + && (model.Conclusion.Value == CheckConclusionStateEnum.Success + || model.Conclusion.Value == + CheckConclusionStateEnum.Neutral)); + } + } + + var statusHasFailure = false; + var statusHasCompleteSuccess = true; + + if (!checksHasFailure && hasStatuses) + { + statusHasFailure = item.LastCommit + .Statuses + .Any(status => status.State == StatusStateEnum.Failure); + + if (!statusHasFailure) + { + statusHasCompleteSuccess = + item.LastCommit.Statuses.All(status => status.State == StatusStateEnum.Success); + } + } + + if (checksHasFailure || statusHasFailure) + { + item.Checks = PullRequestChecksEnum.Failure; + } + else if (statusHasCompleteSuccess && checksHasCompleteSuccess) + { + item.Checks = PullRequestChecksEnum.Success; + } + else + { + item.Checks = PullRequestChecksEnum.Pending; + } + } + + item.LastCommit = null; } return result; @@ -876,9 +935,9 @@ class ReviewAdapter class LastCommitSummaryModel { - public ID Id { get; set; } + public List CheckSuites { get; set; } - public List Checks { get; set; } + public List Statuses { get; set; } } class CheckSuiteSummaryModel @@ -888,4 +947,9 @@ class CheckSuiteSummaryModel public CheckStatusStateEnum Status { get; set; } } } + + public class StatusSummaryModel + { + public StatusStateEnum State { get; set; } + } } diff --git a/src/GitHub.App/ViewModels/GitHubPane/PullRequestListItemViewModel.cs b/src/GitHub.App/ViewModels/GitHubPane/PullRequestListItemViewModel.cs index b9355c0d8f..f1af9544a0 100644 --- a/src/GitHub.App/ViewModels/GitHubPane/PullRequestListItemViewModel.cs +++ b/src/GitHub.App/ViewModels/GitHubPane/PullRequestListItemViewModel.cs @@ -19,6 +19,7 @@ public PullRequestListItemViewModel(PullRequestListItemModel model) { Id = model.Id; Author = new ActorViewModel(model.Author); + Checks = model.Checks; CommentCount = model.CommentCount; Number = model.Number; Title = model.Title; @@ -31,6 +32,9 @@ public PullRequestListItemViewModel(PullRequestListItemModel model) /// public IActorViewModel Author { get; protected set; } + /// + public PullRequestChecksEnum Checks { get; protected set; } + /// public int CommentCount { get; protected set; } diff --git a/src/GitHub.Exports.Reactive/ViewModels/GitHubPane/IPullRequestListItemViewModel.cs b/src/GitHub.Exports.Reactive/ViewModels/GitHubPane/IPullRequestListItemViewModel.cs index b252e2a60c..cb7b331213 100644 --- a/src/GitHub.Exports.Reactive/ViewModels/GitHubPane/IPullRequestListItemViewModel.cs +++ b/src/GitHub.Exports.Reactive/ViewModels/GitHubPane/IPullRequestListItemViewModel.cs @@ -1,4 +1,5 @@ using System; +using GitHub.Models; namespace GitHub.ViewModels.GitHubPane { @@ -27,5 +28,10 @@ public interface IPullRequestListItemViewModel : IIssueListItemViewModelBase /// Gets the last updated time of the pull request. /// DateTimeOffset UpdatedAt { get; } + + ///

+ /// Gets the pull request checks and statuses summary + /// + PullRequestChecksEnum Checks { get; } } } diff --git a/src/GitHub.Exports/Models/CheckSuiteModel.cs b/src/GitHub.Exports/Models/CheckSuiteModel.cs index 27efb9dd43..c2b606fdfd 100644 --- a/src/GitHub.Exports/Models/CheckSuiteModel.cs +++ b/src/GitHub.Exports/Models/CheckSuiteModel.cs @@ -3,6 +3,34 @@ namespace GitHub.Models { + public class LastCommitModel + { + public string Id { get; set; } + public List CheckSuites { get; set; } + + public List Statuses { get; set; } + } + + public enum StatusStateEnum + { + Expected, + Error, + Failure, + Pending, + Success, + } + + public class StatusModel + { + public StatusStateEnum State { get; set; } + + public string Context { get; set; } + + public string TargetUrl { get; set; } + + public string Description { get; set; } + } + public class CheckSuiteModel { public CheckConclusionStateEnum? Conclusion { get; set; } diff --git a/src/GitHub.Exports/Models/IPullRequestModel.cs b/src/GitHub.Exports/Models/IPullRequestModel.cs index 8ff71e861c..01a1affa4e 100644 --- a/src/GitHub.Exports/Models/IPullRequestModel.cs +++ b/src/GitHub.Exports/Models/IPullRequestModel.cs @@ -13,12 +13,21 @@ public enum PullRequestStateEnum Merged, } + public enum PullRequestChecksEnum + { + None, + Pending, + Success, + Failure + } + public interface IPullRequestModel : ICopyable, IEquatable, IComparable { int Number { get; } string Title { get; } PullRequestStateEnum State { get; } + PullRequestChecksEnum Checks { get; } int CommentCount { get; } int CommitCount { get; } bool IsOpen { get; } diff --git a/src/GitHub.Exports/Models/PullRequestDetailModel.cs b/src/GitHub.Exports/Models/PullRequestDetailModel.cs index ebbeb640c8..8b69ac69b8 100644 --- a/src/GitHub.Exports/Models/PullRequestDetailModel.cs +++ b/src/GitHub.Exports/Models/PullRequestDetailModel.cs @@ -92,6 +92,6 @@ public class PullRequestDetailModel /// public IReadOnlyList Threads { get; set; } - public List CheckSuites { get; set; } + public LastCommitModel LastCommit { get; set; } } } diff --git a/src/GitHub.Exports/Models/PullRequestListItemModel.cs b/src/GitHub.Exports/Models/PullRequestListItemModel.cs index 21f6030429..b8d728ce07 100644 --- a/src/GitHub.Exports/Models/PullRequestListItemModel.cs +++ b/src/GitHub.Exports/Models/PullRequestListItemModel.cs @@ -37,6 +37,11 @@ public class PullRequestListItemModel /// public PullRequestStateEnum State { get; set; } + /// + /// Gets the pull request checks and statuses summary + /// + public PullRequestChecksEnum Checks { get; set; } + /// /// Gets or sets the date/time at which the pull request was last updated. /// diff --git a/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs b/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs index 71079c02c7..3bd016acaf 100644 --- a/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs +++ b/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs @@ -38,7 +38,7 @@ public class PullRequestSessionService : IPullRequestSessionService { static readonly ILogger log = LogManager.ForContext(); static ICompiledQuery readPullRequest; - static ICompiledQuery>> readCheckSuites; + static ICompiledQuery> readCheckSuites; static ICompiledQuery readViewer; readonly IGitService gitService; @@ -340,9 +340,9 @@ public virtual async Task ReadPullRequestDetail(HostAddr var apiClient = await apiClientFactory.Create(address); var files = await apiClient.GetPullRequestFiles(owner, name, number).ToList(); - var checkSuites = await GetPullRequestCheckSuites(address, owner, name, number); + var lastCommitModel = await GetPullRequestLastCommitModel(address, owner, name, number); - result.CheckSuites = checkSuites; + result.LastCommit = lastCommitModel; result.ChangedFiles = files.Select(file => new PullRequestFileModel { @@ -355,41 +355,55 @@ public virtual async Task ReadPullRequestDetail(HostAddr return result; } - private async Task> GetPullRequestCheckSuites(HostAddress address, string owner, string name, int number) + private async Task GetPullRequestLastCommitModel(HostAddress address, string owner, string name, int number) { if(readCheckSuites == null) { readCheckSuites = new Query() .Repository(Var(nameof(owner)), Var(nameof(name))) .PullRequest(Var(nameof(number))).Commits(last: 1).Nodes.Select( - commit => commit.Commit.CheckSuites(null, null, null, null, null).AllPages(10) - .Select(suite => new CheckSuiteModel - { - Conclusion = (CheckConclusionStateEnum?) suite.Conclusion, - Status = (CheckStatusStateEnum) suite.Status, - CreatedAt = suite.CreatedAt, - UpdatedAt = suite.UpdatedAt, - CheckRuns = suite.CheckRuns(null, null, null, null, null).AllPages(10) - .Select(run => new CheckRunModel + commit => new LastCommitModel + { + Id = commit.Commit.Id.Value, +// CheckSuites = commit.Commit.CheckSuites(null, null, null, null, null).AllPages(10) +// .Select(suite => new CheckSuiteModel +// { +// Conclusion = (CheckConclusionStateEnum?)suite.Conclusion, +// Status = (CheckStatusStateEnum)suite.Status, +// CreatedAt = suite.CreatedAt, +// UpdatedAt = suite.UpdatedAt, +// CheckRuns = suite.CheckRuns(null, null, null, null, null).AllPages(10) +// .Select(run => new CheckRunModel +// { +// Conclusion = (CheckConclusionStateEnum?)run.Conclusion, +// Status = (CheckStatusStateEnum)run.Status, +// StartedAt = run.StartedAt, +// CompletedAt = run.CompletedAt, +// Annotations = run.Annotations(null, null, null, null).AllPages() +// .Select(annotation => new CheckRunAnnotationModel +// { +// BlobUrl = annotation.BlobUrl, +// StartLine = annotation.StartLine, +// EndLine = annotation.EndLine, +// Filename = annotation.Filename, +// Message = annotation.Message, +// Title = annotation.Title, +// WarningLevel = (CheckAnnotationLevelEnum?)annotation.WarningLevel, +// RawDetails = annotation.RawDetails +// }).ToList() +// }).ToList() +// }).ToList(), + Statuses = commit.Commit.Status + .Select(context => + context.Contexts.Select(statusContext => new StatusModel { - Conclusion = (CheckConclusionStateEnum?) run.Conclusion, - Status = (CheckStatusStateEnum) run.Status, - StartedAt = run.StartedAt, - CompletedAt = run.CompletedAt, - Annotations = run.Annotations(null, null, null, null).AllPages() - .Select(annotation => new CheckRunAnnotationModel - { - BlobUrl = annotation.BlobUrl, - StartLine = annotation.StartLine, - EndLine = annotation.EndLine, - Filename = annotation.Filename, - Message = annotation.Message, - Title = annotation.Title, - WarningLevel = (CheckAnnotationLevelEnum?) annotation.WarningLevel, - RawDetails = annotation.RawDetails - }).ToList() + State = (StatusStateEnum)statusContext.State, + Context = statusContext.Context, + TargetUrl = statusContext.TargetUrl, + Description = statusContext.Description }).ToList() - }).ToList() + ).SingleOrDefault() + } ).Compile(); } diff --git a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml index d23185ad0e..01b844dc06 100644 --- a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml +++ b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml @@ -12,7 +12,8 @@ Title="Let's try doing this differently" CommentCount="4" IsCurrent="True" - UpdatedAt="2018-01-29"> + UpdatedAt="2018-01-29" + Checks="Success"> @@ -84,6 +85,12 @@ + + + + + + From c6cd36f6bcc7c217b3a41730d63072ad27124c77 Mon Sep 17 00:00:00 2001 From: Don Okuda Date: Fri, 20 Jul 2018 14:33:25 -0700 Subject: [PATCH 07/51] We're three columns now --- .../Views/GitHubPane/PullRequestListItemView.xaml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml index 73b7586b71..8808ef189d 100644 --- a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml +++ b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml @@ -55,6 +55,7 @@ + Date: Fri, 20 Jul 2018 14:43:34 -0700 Subject: [PATCH 08/51] Move comment count and status into its own column --- .../GitHubPane/PullRequestListItemView.xaml | 42 +++++++++---------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml index 8808ef189d..fbcfd5e305 100644 --- a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml +++ b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml @@ -80,31 +80,27 @@ - - - - - - - - - - - - - - by - - - + + + + - - + + + + by + - - - - + + + + + + + + + + From 756e733011393393aa030eba4b2791b4acfbd098 Mon Sep 17 00:00:00 2001 From: Don Okuda Date: Fri, 20 Jul 2018 14:52:27 -0700 Subject: [PATCH 09/51] Set a minimum width --- .../Views/GitHubPane/PullRequestListItemView.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml index fbcfd5e305..db3ebb738d 100644 --- a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml +++ b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml @@ -55,7 +55,7 @@ - + Date: Fri, 20 Jul 2018 14:53:45 -0700 Subject: [PATCH 10/51] Right align pull request status and comment count --- .../Views/GitHubPane/PullRequestListItemView.xaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml index db3ebb738d..7f5ba9f6fd 100644 --- a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml +++ b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestListItemView.xaml @@ -94,8 +94,8 @@ - - + + From 9c60db13d9df34ae9fdea9ef0dbc5ae28569a3e4 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Mon, 23 Jul 2018 12:54:08 -0400 Subject: [PATCH 11/51] Functionality to display Checks on PullRequestDetailView --- src/GitHub.App/GitHub.App.csproj | 1 + .../PullRequestDetailViewModelDesigner.cs | 32 +++++++++ src/GitHub.App/Services/ChecksService.cs | 8 +-- src/GitHub.App/Services/PullRequestService.cs | 12 ++-- .../GitHubPane/PullRequestCheckViewModel.cs | 68 +++++++++++++++++++ .../GitHubPane/PullRequestDetailViewModel.cs | 9 +++ .../GitHub.Exports.Reactive.csproj | 1 + .../GitHubPane/IPullRequestCheckViewModel.cs | 22 ++++++ .../GitHubPane/IPullRequestDetailViewModel.cs | 2 + .../Models/CheckConclusionStateEnum.cs | 2 +- src/GitHub.Exports/Models/CheckRunModel.cs | 4 +- .../Models/CheckStatusStateEnum.cs | 2 +- src/GitHub.Exports/Models/CheckSuiteModel.cs | 14 ++-- .../Models/PullRequestDetailModel.cs | 4 +- .../Services/PullRequestSessionService.cs | 24 ++++--- .../GitHub.VisualStudio.csproj | 7 ++ .../GitHubPane/PullRequestCheckView.xaml | 52 ++++++++++++++ .../GitHubPane/PullRequestCheckView.xaml.cs | 12 ++++ .../GitHubPane/PullRequestDetailView.xaml | 15 ++++ 19 files changed, 258 insertions(+), 33 deletions(-) create mode 100644 src/GitHub.App/ViewModels/GitHubPane/PullRequestCheckViewModel.cs create mode 100644 src/GitHub.Exports.Reactive/ViewModels/GitHubPane/IPullRequestCheckViewModel.cs create mode 100644 src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml create mode 100644 src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml.cs diff --git a/src/GitHub.App/GitHub.App.csproj b/src/GitHub.App/GitHub.App.csproj index a5f5af25fe..720472af3b 100644 --- a/src/GitHub.App/GitHub.App.csproj +++ b/src/GitHub.App/GitHub.App.csproj @@ -268,6 +268,7 @@ + diff --git a/src/GitHub.App/SampleData/PullRequestDetailViewModelDesigner.cs b/src/GitHub.App/SampleData/PullRequestDetailViewModelDesigner.cs index a174c3e299..d3f5b3b4c3 100644 --- a/src/GitHub.App/SampleData/PullRequestDetailViewModelDesigner.cs +++ b/src/GitHub.App/SampleData/PullRequestDetailViewModelDesigner.cs @@ -95,6 +95,36 @@ public PullRequestDetailViewModelDesigner() }; Files = new PullRequestFilesViewModelDesigner(); + + var defaultAvatar = "pack://application:,,,/GitHub.App;component/Images/default_user_avatar.png"; + + Checks = new[] + { + new PullRequestCheckViewModel + { + Title = "continuous-integration/appveyor/branch", + Description = "AppVeyor build succeeded", + Status = PullRequestCheckStatusEnum.Success, + AvatarUrl = defaultAvatar, + Avatar = AvatarProvider.CreateBitmapImage(defaultAvatar), + }, + new PullRequestCheckViewModel + { + Title = "continuous-integration/appveyor/pr", + Description = "AppVeyor building", + Status = PullRequestCheckStatusEnum.Pending, + AvatarUrl = defaultAvatar, + Avatar = AvatarProvider.CreateBitmapImage(defaultAvatar), + }, + new PullRequestCheckViewModel + { + Title = "continuous-integration/appveyor/other", + Description = "AppVeyor build failed", + Status = PullRequestCheckStatusEnum.Failure, + AvatarUrl = defaultAvatar, + Avatar = AvatarProvider.CreateBitmapImage(defaultAvatar), + }, + }; } public PullRequestDetailModel Model { get; } @@ -123,6 +153,8 @@ public PullRequestDetailViewModelDesigner() public ReactiveCommand OpenOnGitHub { get; } public ReactiveCommand ShowReview { get; } + public IReadOnlyList Checks { get; } + public Task InitializeAsync(ILocalRepositoryModel localRepository, IConnection connection, string owner, string repo, int number) => Task.CompletedTask; public string GetLocalFilePath(IPullRequestFileNode file) diff --git a/src/GitHub.App/Services/ChecksService.cs b/src/GitHub.App/Services/ChecksService.cs index c11a0f327f..c136b856d7 100644 --- a/src/GitHub.App/Services/ChecksService.cs +++ b/src/GitHub.App/Services/ChecksService.cs @@ -71,15 +71,15 @@ public async Task> ReadCheckSuites( commit => commit.Commit.CheckSuites(null,null, null,null, null).AllPages() .Select(suite => new CheckSuiteModel { - Conclusion = (CheckConclusionStateEnum?) suite.Conclusion, - Status = (CheckStatusStateEnum) suite.Status, + Conclusion = (CheckSuiteConclusionStateEnum?) suite.Conclusion, + Status = (CheckSuiteStatusStateEnum) suite.Status, CreatedAt = suite.CreatedAt, UpdatedAt = suite.UpdatedAt, CheckRuns = suite.CheckRuns(null, null, null, null, null).AllPages() .Select(run => new CheckRunModel { - Conclusion = (CheckConclusionStateEnum?) run.Conclusion, - Status = (CheckStatusStateEnum) run.Status, + Conclusion = (CheckSuiteConclusionStateEnum?) run.Conclusion, + Status = (CheckSuiteStatusStateEnum) run.Status, StartedAt = run.StartedAt, CompletedAt = run.CompletedAt, Annotations = run.Annotations(null, null, null, null).AllPages() diff --git a/src/GitHub.App/Services/PullRequestService.cs b/src/GitHub.App/Services/PullRequestService.cs index 1312def2d1..bd3d7d0417 100644 --- a/src/GitHub.App/Services/PullRequestService.cs +++ b/src/GitHub.App/Services/PullRequestService.cs @@ -164,17 +164,17 @@ public async Task> ReadPullRequests( { checksHasFailure = item.LastCommit .CheckSuites.Any(model => model.Conclusion.HasValue - && (model.Conclusion.Value == CheckConclusionStateEnum.Failure + && (model.Conclusion.Value == CheckSuiteConclusionStateEnum.Failure || model.Conclusion.Value == - CheckConclusionStateEnum.ActionRequired)); + CheckSuiteConclusionStateEnum.ActionRequired)); if (!checksHasFailure) { checksHasCompleteSuccess = item.LastCommit .CheckSuites.All(model => model.Conclusion.HasValue - && (model.Conclusion.Value == CheckConclusionStateEnum.Success + && (model.Conclusion.Value == CheckSuiteConclusionStateEnum.Success || model.Conclusion.Value == - CheckConclusionStateEnum.Neutral)); + CheckSuiteConclusionStateEnum.Neutral)); } } @@ -942,9 +942,9 @@ class LastCommitSummaryModel class CheckSuiteSummaryModel { - public CheckConclusionStateEnum? Conclusion { get; set; } + public CheckSuiteConclusionStateEnum? Conclusion { get; set; } - public CheckStatusStateEnum Status { get; set; } + public CheckSuiteStatusStateEnum Status { get; set; } } } diff --git a/src/GitHub.App/ViewModels/GitHubPane/PullRequestCheckViewModel.cs b/src/GitHub.App/ViewModels/GitHubPane/PullRequestCheckViewModel.cs new file mode 100644 index 0000000000..728d5fd429 --- /dev/null +++ b/src/GitHub.App/ViewModels/GitHubPane/PullRequestCheckViewModel.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.Composition; +using System.Linq; +using System.Windows.Media.Imaging; +using GitHub.Models; +using GitHub.Services; + +namespace GitHub.ViewModels.GitHubPane +{ + [Export(typeof(IPullRequestCheckViewModel))] + [PartCreationPolicy(CreationPolicy.NonShared)] + public class PullRequestCheckViewModel: IPullRequestCheckViewModel + { + const string DefaultAvatar = "pack://application:,,,/GitHub.App;component/Images/default_user_avatar.png"; + + public static IEnumerable Build(PullRequestDetailModel pullRequest) + { + return pullRequest.Statuses?.Select(model => + { + var statusStateEnum = model.State; + + PullRequestCheckStatusEnum checkStatus; + switch (statusStateEnum) + { + case StatusStateEnum.Expected: + case StatusStateEnum.Error: + case StatusStateEnum.Failure: + checkStatus = PullRequestCheckStatusEnum.Failure; + break; + case StatusStateEnum.Pending: + checkStatus = PullRequestCheckStatusEnum.Pending; + break; + case StatusStateEnum.Success: + checkStatus = PullRequestCheckStatusEnum.Success; + break; + default: + throw new InvalidOperationException("Unkown PullRequestCheckStatusEnum"); + } + + return new PullRequestCheckViewModel + { + Title = model.Context, + Description = model.Description, + Status = checkStatus, + DetailsUrl = model.TargetUrl, + AvatarUrl = model.AvatarUrl ?? DefaultAvatar, + Avatar = model.AvatarUrl != null + ? new BitmapImage(new Uri(model.AvatarUrl)) + : AvatarProvider.CreateBitmapImage(DefaultAvatar) + }; + + }) ?? new PullRequestCheckViewModel[0]; + } + + public string Title { get; set; } + + public string Description { get; set; } + + public PullRequestCheckStatusEnum Status { get; set; } + + public string DetailsUrl { get; set; } + + public string AvatarUrl { get; set; } + + public BitmapImage Avatar { get; set; } + } +} diff --git a/src/GitHub.App/ViewModels/GitHubPane/PullRequestDetailViewModel.cs b/src/GitHub.App/ViewModels/GitHubPane/PullRequestDetailViewModel.cs index f3b030cfbc..23fc1760ac 100644 --- a/src/GitHub.App/ViewModels/GitHubPane/PullRequestDetailViewModel.cs +++ b/src/GitHub.App/ViewModels/GitHubPane/PullRequestDetailViewModel.cs @@ -56,6 +56,7 @@ public sealed class PullRequestDetailViewModel : PanePageViewModelBase, IPullReq bool refreshOnActivate; Uri webUrl; IDisposable sessionSubscription; + IReadOnlyList checks; /// /// Initializes a new instance of the class. @@ -305,6 +306,12 @@ public Uri WebUrl /// public ReactiveCommand ShowReview { get; } + public IReadOnlyList Checks + { + get { return checks; } + private set { this.RaiseAndSetIfChanged(ref checks, value); } + } + /// /// Initializes the view model. /// @@ -380,6 +387,8 @@ public async Task Load(PullRequestDetailModel pullRequest) Body = !string.IsNullOrWhiteSpace(pullRequest.Body) ? pullRequest.Body : Resources.NoDescriptionProvidedMarkdown; Reviews = PullRequestReviewSummaryViewModel.BuildByUser(Session.User, pullRequest).ToList(); + Checks = PullRequestCheckViewModel.Build(pullRequest)?.ToList(); + await Files.InitializeAsync(Session); var localBranches = await pullRequestsService.GetLocalBranches(LocalRepository, pullRequest).ToList(); diff --git a/src/GitHub.Exports.Reactive/GitHub.Exports.Reactive.csproj b/src/GitHub.Exports.Reactive/GitHub.Exports.Reactive.csproj index 627792582f..8b8b747d47 100644 --- a/src/GitHub.Exports.Reactive/GitHub.Exports.Reactive.csproj +++ b/src/GitHub.Exports.Reactive/GitHub.Exports.Reactive.csproj @@ -205,6 +205,7 @@ + diff --git a/src/GitHub.Exports.Reactive/ViewModels/GitHubPane/IPullRequestCheckViewModel.cs b/src/GitHub.Exports.Reactive/ViewModels/GitHubPane/IPullRequestCheckViewModel.cs new file mode 100644 index 0000000000..63ce46ea69 --- /dev/null +++ b/src/GitHub.Exports.Reactive/ViewModels/GitHubPane/IPullRequestCheckViewModel.cs @@ -0,0 +1,22 @@ +using System.Windows.Media.Imaging; +using GitHub.Models; + +namespace GitHub.ViewModels.GitHubPane +{ + public interface IPullRequestCheckViewModel + { + string Title { get; set; } + string Description { get; set; } + PullRequestCheckStatusEnum Status { get; set; } + string DetailsUrl { get; set; } + string AvatarUrl { get; set; } + BitmapImage Avatar { get; set; } + } + + public enum PullRequestCheckStatusEnum + { + Pending, + Success, + Failure + } +} \ No newline at end of file diff --git a/src/GitHub.Exports.Reactive/ViewModels/GitHubPane/IPullRequestDetailViewModel.cs b/src/GitHub.Exports.Reactive/ViewModels/GitHubPane/IPullRequestDetailViewModel.cs index 9a11d0dd40..839c2e6a15 100644 --- a/src/GitHub.Exports.Reactive/ViewModels/GitHubPane/IPullRequestDetailViewModel.cs +++ b/src/GitHub.Exports.Reactive/ViewModels/GitHubPane/IPullRequestDetailViewModel.cs @@ -175,6 +175,8 @@ public interface IPullRequestDetailViewModel : IPanePageViewModel, IOpenInBrowse /// ReactiveCommand ShowReview { get; } + IReadOnlyList Checks { get; } + /// /// Initializes the view model. /// diff --git a/src/GitHub.Exports/Models/CheckConclusionStateEnum.cs b/src/GitHub.Exports/Models/CheckConclusionStateEnum.cs index 2b6dc90479..5560421336 100644 --- a/src/GitHub.Exports/Models/CheckConclusionStateEnum.cs +++ b/src/GitHub.Exports/Models/CheckConclusionStateEnum.cs @@ -1,6 +1,6 @@ namespace GitHub.Models { - public enum CheckConclusionStateEnum + public enum CheckSuiteConclusionStateEnum { ActionRequired, TimedOut, diff --git a/src/GitHub.Exports/Models/CheckRunModel.cs b/src/GitHub.Exports/Models/CheckRunModel.cs index 0adcced7fd..62a3f87807 100644 --- a/src/GitHub.Exports/Models/CheckRunModel.cs +++ b/src/GitHub.Exports/Models/CheckRunModel.cs @@ -5,9 +5,9 @@ namespace GitHub.Models { public class CheckRunModel { - public CheckConclusionStateEnum? Conclusion { get; set; } + public CheckSuiteConclusionStateEnum? Conclusion { get; set; } - public CheckStatusStateEnum Status { get; set; } + public CheckSuiteStatusStateEnum Status { get; set; } public DateTimeOffset? StartedAt { get; set; } diff --git a/src/GitHub.Exports/Models/CheckStatusStateEnum.cs b/src/GitHub.Exports/Models/CheckStatusStateEnum.cs index f48915d75d..3868b6334b 100644 --- a/src/GitHub.Exports/Models/CheckStatusStateEnum.cs +++ b/src/GitHub.Exports/Models/CheckStatusStateEnum.cs @@ -1,6 +1,6 @@ namespace GitHub.Models { - public enum CheckStatusStateEnum + public enum CheckSuiteStatusStateEnum { Requested, Queued, diff --git a/src/GitHub.Exports/Models/CheckSuiteModel.cs b/src/GitHub.Exports/Models/CheckSuiteModel.cs index c2b606fdfd..fb883689c1 100644 --- a/src/GitHub.Exports/Models/CheckSuiteModel.cs +++ b/src/GitHub.Exports/Models/CheckSuiteModel.cs @@ -3,14 +3,6 @@ namespace GitHub.Models { - public class LastCommitModel - { - public string Id { get; set; } - public List CheckSuites { get; set; } - - public List Statuses { get; set; } - } - public enum StatusStateEnum { Expected, @@ -29,13 +21,15 @@ public class StatusModel public string TargetUrl { get; set; } public string Description { get; set; } + + public string AvatarUrl { get; set; } } public class CheckSuiteModel { - public CheckConclusionStateEnum? Conclusion { get; set; } + public CheckSuiteConclusionStateEnum? Conclusion { get; set; } - public CheckStatusStateEnum Status { get; set; } + public CheckSuiteStatusStateEnum Status { get; set; } public DateTimeOffset CreatedAt { get; set; } diff --git a/src/GitHub.Exports/Models/PullRequestDetailModel.cs b/src/GitHub.Exports/Models/PullRequestDetailModel.cs index 8b69ac69b8..dc579fb9c2 100644 --- a/src/GitHub.Exports/Models/PullRequestDetailModel.cs +++ b/src/GitHub.Exports/Models/PullRequestDetailModel.cs @@ -92,6 +92,8 @@ public class PullRequestDetailModel /// public IReadOnlyList Threads { get; set; } - public LastCommitModel LastCommit { get; set; } + public List CheckSuites { get; set; } + + public List Statuses { get; set; } } } diff --git a/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs b/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs index 3bd016acaf..8960a66d90 100644 --- a/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs +++ b/src/GitHub.InlineReviews/Services/PullRequestSessionService.cs @@ -38,7 +38,7 @@ public class PullRequestSessionService : IPullRequestSessionService { static readonly ILogger log = LogManager.ForContext(); static ICompiledQuery readPullRequest; - static ICompiledQuery> readCheckSuites; + static ICompiledQuery> readCheckSuites; static ICompiledQuery readViewer; readonly IGitService gitService; @@ -340,9 +340,10 @@ public virtual async Task ReadPullRequestDetail(HostAddr var apiClient = await apiClientFactory.Create(address); var files = await apiClient.GetPullRequestFiles(owner, name, number).ToList(); - var lastCommitModel = await GetPullRequestLastCommitModel(address, owner, name, number); + var lastCommitModel = await GetPullRequestLastCommitAdapter(address, owner, name, number); - result.LastCommit = lastCommitModel; + result.Statuses = lastCommitModel.Statuses; + result.CheckSuites = lastCommitModel.CheckSuites; result.ChangedFiles = files.Select(file => new PullRequestFileModel { @@ -355,16 +356,15 @@ public virtual async Task ReadPullRequestDetail(HostAddr return result; } - private async Task GetPullRequestLastCommitModel(HostAddress address, string owner, string name, int number) + private async Task GetPullRequestLastCommitAdapter(HostAddress address, string owner, string name, int number) { if(readCheckSuites == null) { readCheckSuites = new Query() .Repository(Var(nameof(owner)), Var(nameof(name))) .PullRequest(Var(nameof(number))).Commits(last: 1).Nodes.Select( - commit => new LastCommitModel + commit => new LastCommitAdapter { - Id = commit.Commit.Id.Value, // CheckSuites = commit.Commit.CheckSuites(null, null, null, null, null).AllPages(10) // .Select(suite => new CheckSuiteModel // { @@ -400,7 +400,8 @@ private async Task GetPullRequestLastCommitModel(HostAddress ad State = (StatusStateEnum)statusContext.State, Context = statusContext.Context, TargetUrl = statusContext.TargetUrl, - Description = statusContext.Description + Description = statusContext.Description, + AvatarUrl = statusContext.Creator.AvatarUrl(null) }).ToList() ).SingleOrDefault() } @@ -890,5 +891,12 @@ class CommentAdapter : PullRequestReviewCommentModel public string OriginalCommitId { get; set; } public string ReplyTo { get; set; } } - } + + class LastCommitAdapter + { + public List CheckSuites { get; set; } + + public List Statuses { get; set; } + } + } } diff --git a/src/GitHub.VisualStudio/GitHub.VisualStudio.csproj b/src/GitHub.VisualStudio/GitHub.VisualStudio.csproj index a743442958..7ff26a878d 100644 --- a/src/GitHub.VisualStudio/GitHub.VisualStudio.csproj +++ b/src/GitHub.VisualStudio/GitHub.VisualStudio.csproj @@ -418,6 +418,9 @@ PullRequestReviewAuthoringView.xaml + + PullRequestCheckView.xaml + PullRequestReviewSummaryView.xaml @@ -602,6 +605,10 @@ MSBuild:Compile Designer + + MSBuild:Compile + Designer + MSBuild:Compile Designer diff --git a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml new file mode 100644 index 0000000000..b0be50345e --- /dev/null +++ b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml.cs b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml.cs new file mode 100644 index 0000000000..6549bfdcb4 --- /dev/null +++ b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml.cs @@ -0,0 +1,12 @@ +using System.Windows.Controls; + +namespace GitHub.VisualStudio.Views.GitHubPane +{ + public partial class PullRequestCheckView : UserControl + { + public PullRequestCheckView() + { + InitializeComponent(); + } + } +} diff --git a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestDetailView.xaml b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestDetailView.xaml index 8813d36270..41cc0b6835 100644 --- a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestDetailView.xaml +++ b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestDetailView.xaml @@ -245,6 +245,21 @@ + + + + + + + + + + + Date: Tue, 24 Jul 2018 12:35:30 -0400 Subject: [PATCH 12/51] Restrain the size of the CheckRun display until it gets proper designs --- .../Views/GitHubPane/PullRequestCheckView.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml index b0be50345e..3267ac7972 100644 --- a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml +++ b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml @@ -38,7 +38,7 @@ - + From 42bb26330682336b3f7f8e9cc6d3b522cad06d22 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Tue, 24 Jul 2018 12:54:47 -0400 Subject: [PATCH 13/51] Adding a Hyperlink --- .../Views/GitHubPane/PullRequestCheckView.xaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml index 3267ac7972..c3f23f623c 100644 --- a/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml +++ b/src/GitHub.VisualStudio/Views/GitHubPane/PullRequestCheckView.xaml @@ -32,8 +32,8 @@ - + @@ -43,7 +43,11 @@