diff --git a/lib/containers/__generated__/aggregatedReviewsContainerRefetchQuery.graphql.js b/lib/containers/__generated__/aggregatedReviewsContainerRefetchQuery.graphql.js index 0dd065181f..ed22ebd6b6 100644 --- a/lib/containers/__generated__/aggregatedReviewsContainerRefetchQuery.graphql.js +++ b/lib/containers/__generated__/aggregatedReviewsContainerRefetchQuery.graphql.js @@ -1,6 +1,6 @@ /** * @flow - * @relayHash 783c15f002e51fadaa8569e1a26e79ef + * @relayHash c78b6c8ea15f58b1de06a29e203fd1ad */ /* eslint-disable */ @@ -92,6 +92,7 @@ fragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest { __typename login avatarUrl + url ... on Node { id } @@ -144,6 +145,7 @@ fragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThrea __typename avatarUrl login + url ... on Node { id } @@ -621,6 +623,7 @@ return { (v2/*: any*/), (v5/*: any*/), (v12/*: any*/), + (v4/*: any*/), (v3/*: any*/) ] }, @@ -773,6 +776,7 @@ return { (v2/*: any*/), (v12/*: any*/), (v5/*: any*/), + (v4/*: any*/), (v3/*: any*/) ] }, @@ -829,7 +833,7 @@ return { "operationKind": "query", "name": "aggregatedReviewsContainerRefetchQuery", "id": null, - "text": "query aggregatedReviewsContainerRefetchQuery(\n $prId: ID!\n $reviewCount: Int!\n $reviewCursor: String\n $threadCount: Int!\n $threadCursor: String\n $commentCount: Int!\n $commentCursor: String\n) {\n pullRequest: node(id: $prId) {\n __typename\n ...prCheckoutController_pullRequest\n ...aggregatedReviewsContainer_pullRequest_qdneZ\n id\n }\n}\n\nfragment prCheckoutController_pullRequest on PullRequest {\n number\n headRefName\n headRepository {\n name\n url\n sshUrl\n owner {\n __typename\n login\n id\n }\n id\n }\n}\n\nfragment aggregatedReviewsContainer_pullRequest_qdneZ on PullRequest {\n id\n ...reviewSummariesAccumulator_pullRequest_2zzc96\n ...reviewThreadsAccumulator_pullRequest_CKDvj\n}\n\nfragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest {\n url\n reviews(first: $reviewCount, after: $reviewCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n bodyHTML\n state\n submittedAt\n lastEditedAt\n url\n author {\n __typename\n login\n avatarUrl\n ... on Node {\n id\n }\n }\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment reviewThreadsAccumulator_pullRequest_CKDvj on PullRequest {\n url\n reviewThreads(first: $threadCount, after: $threadCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n isResolved\n resolvedBy {\n login\n id\n }\n viewerCanResolve\n viewerCanUnresolve\n ...reviewCommentsAccumulator_reviewThread_1VbUmL\n __typename\n }\n }\n }\n}\n\nfragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThread {\n id\n comments(first: $commentCount, after: $commentCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n author {\n __typename\n avatarUrl\n login\n ... on Node {\n id\n }\n }\n bodyHTML\n isMinimized\n state\n viewerCanReact\n path\n position\n createdAt\n lastEditedAt\n url\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment emojiReactionsController_reactable on Reactable {\n id\n ...emojiReactionsView_reactable\n}\n\nfragment emojiReactionsView_reactable on Reactable {\n id\n reactionGroups {\n content\n viewerHasReacted\n users {\n totalCount\n }\n }\n viewerCanReact\n}\n", + "text": "query aggregatedReviewsContainerRefetchQuery(\n $prId: ID!\n $reviewCount: Int!\n $reviewCursor: String\n $threadCount: Int!\n $threadCursor: String\n $commentCount: Int!\n $commentCursor: String\n) {\n pullRequest: node(id: $prId) {\n __typename\n ...prCheckoutController_pullRequest\n ...aggregatedReviewsContainer_pullRequest_qdneZ\n id\n }\n}\n\nfragment prCheckoutController_pullRequest on PullRequest {\n number\n headRefName\n headRepository {\n name\n url\n sshUrl\n owner {\n __typename\n login\n id\n }\n id\n }\n}\n\nfragment aggregatedReviewsContainer_pullRequest_qdneZ on PullRequest {\n id\n ...reviewSummariesAccumulator_pullRequest_2zzc96\n ...reviewThreadsAccumulator_pullRequest_CKDvj\n}\n\nfragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest {\n url\n reviews(first: $reviewCount, after: $reviewCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n bodyHTML\n state\n submittedAt\n lastEditedAt\n url\n author {\n __typename\n login\n avatarUrl\n url\n ... on Node {\n id\n }\n }\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment reviewThreadsAccumulator_pullRequest_CKDvj on PullRequest {\n url\n reviewThreads(first: $threadCount, after: $threadCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n isResolved\n resolvedBy {\n login\n id\n }\n viewerCanResolve\n viewerCanUnresolve\n ...reviewCommentsAccumulator_reviewThread_1VbUmL\n __typename\n }\n }\n }\n}\n\nfragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThread {\n id\n comments(first: $commentCount, after: $commentCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n author {\n __typename\n avatarUrl\n login\n url\n ... on Node {\n id\n }\n }\n bodyHTML\n isMinimized\n state\n viewerCanReact\n path\n position\n createdAt\n lastEditedAt\n url\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment emojiReactionsController_reactable on Reactable {\n id\n ...emojiReactionsView_reactable\n}\n\nfragment emojiReactionsView_reactable on Reactable {\n id\n reactionGroups {\n content\n viewerHasReacted\n users {\n totalCount\n }\n }\n viewerCanReact\n}\n", "metadata": {} } }; diff --git a/lib/containers/__generated__/commentDecorationsContainerQuery.graphql.js b/lib/containers/__generated__/commentDecorationsContainerQuery.graphql.js index e6a94e3ec7..6a2394c3d5 100644 --- a/lib/containers/__generated__/commentDecorationsContainerQuery.graphql.js +++ b/lib/containers/__generated__/commentDecorationsContainerQuery.graphql.js @@ -1,6 +1,6 @@ /** * @flow - * @relayHash 6102c2ed0015fd6092f361f17cfec637 + * @relayHash 02603333f5d8b5bed9e192b81fe49e1d */ /* eslint-disable */ @@ -125,6 +125,7 @@ fragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest { __typename login avatarUrl + url ... on Node { id } @@ -177,6 +178,7 @@ fragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThrea __typename avatarUrl login + url ... on Node { id } @@ -774,6 +776,7 @@ return { (v7/*: any*/), (v8/*: any*/), (v18/*: any*/), + (v11/*: any*/), (v9/*: any*/) ] }, @@ -926,6 +929,7 @@ return { (v7/*: any*/), (v18/*: any*/), (v8/*: any*/), + (v11/*: any*/), (v9/*: any*/) ] }, @@ -988,7 +992,7 @@ return { "operationKind": "query", "name": "commentDecorationsContainerQuery", "id": null, - "text": "query commentDecorationsContainerQuery(\n $headOwner: String!\n $headName: String!\n $headRef: String!\n $reviewCount: Int!\n $reviewCursor: String\n $threadCount: Int!\n $threadCursor: String\n $commentCount: Int!\n $commentCursor: String\n $first: Int!\n) {\n repository(owner: $headOwner, name: $headName) {\n ref(qualifiedName: $headRef) {\n associatedPullRequests(first: $first, states: [OPEN]) {\n totalCount\n nodes {\n number\n headRefOid\n ...commentDecorationsController_pullRequests\n ...aggregatedReviewsContainer_pullRequest_qdneZ\n id\n }\n }\n id\n }\n id\n }\n}\n\nfragment commentDecorationsController_pullRequests on PullRequest {\n number\n headRefName\n headRefOid\n headRepository {\n name\n owner {\n __typename\n login\n id\n }\n id\n }\n repository {\n name\n owner {\n __typename\n login\n id\n }\n id\n }\n}\n\nfragment aggregatedReviewsContainer_pullRequest_qdneZ on PullRequest {\n id\n ...reviewSummariesAccumulator_pullRequest_2zzc96\n ...reviewThreadsAccumulator_pullRequest_CKDvj\n}\n\nfragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest {\n url\n reviews(first: $reviewCount, after: $reviewCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n bodyHTML\n state\n submittedAt\n lastEditedAt\n url\n author {\n __typename\n login\n avatarUrl\n ... on Node {\n id\n }\n }\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment reviewThreadsAccumulator_pullRequest_CKDvj on PullRequest {\n url\n reviewThreads(first: $threadCount, after: $threadCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n isResolved\n resolvedBy {\n login\n id\n }\n viewerCanResolve\n viewerCanUnresolve\n ...reviewCommentsAccumulator_reviewThread_1VbUmL\n __typename\n }\n }\n }\n}\n\nfragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThread {\n id\n comments(first: $commentCount, after: $commentCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n author {\n __typename\n avatarUrl\n login\n ... on Node {\n id\n }\n }\n bodyHTML\n isMinimized\n state\n viewerCanReact\n path\n position\n createdAt\n lastEditedAt\n url\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment emojiReactionsController_reactable on Reactable {\n id\n ...emojiReactionsView_reactable\n}\n\nfragment emojiReactionsView_reactable on Reactable {\n id\n reactionGroups {\n content\n viewerHasReacted\n users {\n totalCount\n }\n }\n viewerCanReact\n}\n", + "text": "query commentDecorationsContainerQuery(\n $headOwner: String!\n $headName: String!\n $headRef: String!\n $reviewCount: Int!\n $reviewCursor: String\n $threadCount: Int!\n $threadCursor: String\n $commentCount: Int!\n $commentCursor: String\n $first: Int!\n) {\n repository(owner: $headOwner, name: $headName) {\n ref(qualifiedName: $headRef) {\n associatedPullRequests(first: $first, states: [OPEN]) {\n totalCount\n nodes {\n number\n headRefOid\n ...commentDecorationsController_pullRequests\n ...aggregatedReviewsContainer_pullRequest_qdneZ\n id\n }\n }\n id\n }\n id\n }\n}\n\nfragment commentDecorationsController_pullRequests on PullRequest {\n number\n headRefName\n headRefOid\n headRepository {\n name\n owner {\n __typename\n login\n id\n }\n id\n }\n repository {\n name\n owner {\n __typename\n login\n id\n }\n id\n }\n}\n\nfragment aggregatedReviewsContainer_pullRequest_qdneZ on PullRequest {\n id\n ...reviewSummariesAccumulator_pullRequest_2zzc96\n ...reviewThreadsAccumulator_pullRequest_CKDvj\n}\n\nfragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest {\n url\n reviews(first: $reviewCount, after: $reviewCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n bodyHTML\n state\n submittedAt\n lastEditedAt\n url\n author {\n __typename\n login\n avatarUrl\n url\n ... on Node {\n id\n }\n }\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment reviewThreadsAccumulator_pullRequest_CKDvj on PullRequest {\n url\n reviewThreads(first: $threadCount, after: $threadCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n isResolved\n resolvedBy {\n login\n id\n }\n viewerCanResolve\n viewerCanUnresolve\n ...reviewCommentsAccumulator_reviewThread_1VbUmL\n __typename\n }\n }\n }\n}\n\nfragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThread {\n id\n comments(first: $commentCount, after: $commentCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n author {\n __typename\n avatarUrl\n login\n url\n ... on Node {\n id\n }\n }\n bodyHTML\n isMinimized\n state\n viewerCanReact\n path\n position\n createdAt\n lastEditedAt\n url\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment emojiReactionsController_reactable on Reactable {\n id\n ...emojiReactionsView_reactable\n}\n\nfragment emojiReactionsView_reactable on Reactable {\n id\n reactionGroups {\n content\n viewerHasReacted\n users {\n totalCount\n }\n }\n viewerCanReact\n}\n", "metadata": {} } }; diff --git a/lib/containers/__generated__/issueishDetailContainerQuery.graphql.js b/lib/containers/__generated__/issueishDetailContainerQuery.graphql.js index ba020ccfb5..8cddd318d5 100644 --- a/lib/containers/__generated__/issueishDetailContainerQuery.graphql.js +++ b/lib/containers/__generated__/issueishDetailContainerQuery.graphql.js @@ -1,6 +1,6 @@ /** * @flow - * @relayHash f86d65375ce1021e879ebe33b77d309e + * @relayHash 669f6411c4085a7670d22aca11164bb8 */ /* eslint-disable */ @@ -568,6 +568,7 @@ fragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest { __typename login avatarUrl + url ... on Node { id } @@ -620,6 +621,7 @@ fragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThrea __typename avatarUrl login + url ... on Node { id } @@ -849,13 +851,7 @@ v15 = { "args": null, "storageKey": null }, -v16 = [ - (v3/*: any*/), - (v14/*: any*/), - (v15/*: any*/), - (v4/*: any*/) -], -v17 = { +v16 = { "kind": "LinkedField", "alias": null, "name": "author", @@ -863,16 +859,22 @@ v17 = { "args": null, "concreteType": null, "plural": false, - "selections": (v16/*: any*/) + "selections": [ + (v3/*: any*/), + (v14/*: any*/), + (v15/*: any*/), + (v5/*: any*/), + (v4/*: any*/) + ] }, -v18 = { +v17 = { "kind": "ScalarField", "alias": null, "name": "authorAssociation", "args": null, "storageKey": null }, -v19 = [ +v18 = [ { "kind": "ScalarField", "alias": null, @@ -881,7 +883,7 @@ v19 = [ "storageKey": null } ], -v20 = { +v19 = { "kind": "LinkedField", "alias": null, "name": "reactionGroups", @@ -912,18 +914,18 @@ v20 = { "args": null, "concreteType": "ReactingUserConnection", "plural": false, - "selections": (v19/*: any*/) + "selections": (v18/*: any*/) } ] }, -v21 = { +v20 = { "kind": "ScalarField", "alias": null, "name": "viewerCanReact", "args": null, "storageKey": null }, -v22 = [ +v21 = [ { "kind": "Variable", "name": "after", @@ -937,11 +939,11 @@ v22 = [ "type": "Int" } ], -v23 = [ +v22 = [ (v14/*: any*/), (v4/*: any*/) ], -v24 = [ +v23 = [ { "kind": "Variable", "name": "after", @@ -955,56 +957,40 @@ v24 = [ "type": "Int" } ], -v25 = { +v24 = { "kind": "ScalarField", "alias": null, "name": "position", "args": null, "storageKey": null }, -v26 = { +v25 = { "kind": "ScalarField", "alias": null, "name": "path", "args": null, "storageKey": null }, -v27 = [ - (v3/*: any*/), - (v15/*: any*/), - (v14/*: any*/), - (v4/*: any*/) -], -v28 = { - "kind": "LinkedField", - "alias": null, - "name": "author", - "storageKey": null, - "args": null, - "concreteType": null, - "plural": false, - "selections": (v27/*: any*/) -}, -v29 = { +v26 = { "kind": "ScalarField", "alias": null, "name": "createdAt", "args": null, "storageKey": null }, -v30 = { +v27 = { "kind": "ScalarField", "alias": null, "name": "name", "args": null, "storageKey": null }, -v31 = [ +v28 = [ (v3/*: any*/), (v14/*: any*/), (v4/*: any*/) ], -v32 = { +v29 = { "kind": "LinkedField", "alias": null, "name": "owner", @@ -1012,39 +998,23 @@ v32 = { "args": null, "concreteType": null, "plural": false, - "selections": (v31/*: any*/) + "selections": (v28/*: any*/) }, -v33 = { +v30 = { "kind": "ScalarField", "alias": null, "name": "title", "args": null, "storageKey": null }, -v34 = { +v31 = { "kind": "ScalarField", "alias": null, "name": "number", "args": null, "storageKey": null }, -v35 = { - "kind": "LinkedField", - "alias": null, - "name": "author", - "storageKey": null, - "args": null, - "concreteType": null, - "plural": false, - "selections": [ - (v3/*: any*/), - (v14/*: any*/), - (v15/*: any*/), - (v5/*: any*/), - (v4/*: any*/) - ] -}, -v36 = [ +v32 = [ { "kind": "Variable", "name": "after", @@ -1058,7 +1028,7 @@ v36 = [ "type": "Int" } ], -v37 = { +v33 = { "kind": "LinkedField", "alias": null, "name": "pageInfo", @@ -1071,14 +1041,20 @@ v37 = { (v7/*: any*/) ] }, -v38 = { +v34 = { "kind": "ScalarField", "alias": null, "name": "isCrossRepository", "args": null, "storageKey": null }, -v39 = { +v35 = [ + (v3/*: any*/), + (v14/*: any*/), + (v15/*: any*/), + (v4/*: any*/) +], +v36 = { "kind": "InlineFragment", "type": "CrossReferencedEvent", "selections": [ @@ -1089,7 +1065,7 @@ v39 = { "args": null, "storageKey": null }, - (v38/*: any*/), + (v34/*: any*/), { "kind": "LinkedField", "alias": null, @@ -1098,7 +1074,7 @@ v39 = { "args": null, "concreteType": null, "plural": false, - "selections": (v16/*: any*/) + "selections": (v35/*: any*/) }, { "kind": "LinkedField", @@ -1119,8 +1095,8 @@ v39 = { "concreteType": "Repository", "plural": false, "selections": [ - (v30/*: any*/), - (v32/*: any*/), + (v27/*: any*/), + (v29/*: any*/), (v4/*: any*/), { "kind": "ScalarField", @@ -1136,8 +1112,8 @@ v39 = { "kind": "InlineFragment", "type": "PullRequest", "selections": [ - (v34/*: any*/), - (v33/*: any*/), + (v31/*: any*/), + (v30/*: any*/), (v5/*: any*/), { "kind": "ScalarField", @@ -1152,8 +1128,8 @@ v39 = { "kind": "InlineFragment", "type": "Issue", "selections": [ - (v34/*: any*/), - (v33/*: any*/), + (v31/*: any*/), + (v30/*: any*/), (v5/*: any*/), { "kind": "ScalarField", @@ -1168,17 +1144,32 @@ v39 = { } ] }, -v40 = { +v37 = [ + (v3/*: any*/), + (v15/*: any*/), + (v14/*: any*/), + (v4/*: any*/) +], +v38 = { "kind": "InlineFragment", "type": "IssueComment", "selections": [ - (v28/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "author", + "storageKey": null, + "args": null, + "concreteType": null, + "plural": false, + "selections": (v37/*: any*/) + }, (v13/*: any*/), - (v29/*: any*/), + (v26/*: any*/), (v5/*: any*/) ] }, -v41 = { +v39 = { "kind": "LinkedField", "alias": null, "name": "user", @@ -1186,16 +1177,16 @@ v41 = { "args": null, "concreteType": "User", "plural": false, - "selections": (v23/*: any*/) + "selections": (v22/*: any*/) }, -v42 = { +v40 = { "kind": "ScalarField", "alias": "sha", "name": "oid", "args": null, "storageKey": null }, -v43 = { +v41 = { "kind": "InlineFragment", "type": "Commit", "selections": [ @@ -1208,8 +1199,8 @@ v43 = { "concreteType": "GitActor", "plural": false, "selections": [ - (v30/*: any*/), - (v41/*: any*/), + (v27/*: any*/), + (v39/*: any*/), (v15/*: any*/) ] }, @@ -1222,9 +1213,9 @@ v43 = { "concreteType": "GitActor", "plural": false, "selections": [ - (v30/*: any*/), + (v27/*: any*/), (v15/*: any*/), - (v41/*: any*/) + (v39/*: any*/) ] }, { @@ -1234,7 +1225,7 @@ v43 = { "args": null, "storageKey": null }, - (v42/*: any*/), + (v40/*: any*/), { "kind": "ScalarField", "alias": null, @@ -1258,7 +1249,7 @@ v43 = { } ] }, -v44 = [ +v42 = [ { "kind": "Variable", "name": "after", @@ -1272,7 +1263,7 @@ v44 = [ "type": "Int" } ], -v45 = [ +v43 = [ { "kind": "ScalarField", "alias": null, @@ -1282,7 +1273,7 @@ v45 = [ }, (v4/*: any*/) ], -v46 = { +v44 = { "kind": "LinkedField", "alias": null, "name": "commit", @@ -1290,9 +1281,9 @@ v46 = { "args": null, "concreteType": "Commit", "plural": false, - "selections": (v45/*: any*/) + "selections": (v43/*: any*/) }, -v47 = { +v45 = { "kind": "LinkedField", "alias": null, "name": "actor", @@ -1300,7 +1291,7 @@ v47 = { "args": null, "concreteType": null, "plural": false, - "selections": (v27/*: any*/) + "selections": (v37/*: any*/) }; return { "kind": "Request", @@ -1491,10 +1482,10 @@ return { }, (v12/*: any*/), (v13/*: any*/), + (v16/*: any*/), (v17/*: any*/), - (v18/*: any*/), + (v19/*: any*/), (v20/*: any*/), - (v21/*: any*/), (v3/*: any*/) ] } @@ -1516,7 +1507,7 @@ return { "alias": null, "name": "reviewThreads", "storageKey": null, - "args": (v22/*: any*/), + "args": (v21/*: any*/), "concreteType": "PullRequestReviewThreadConnection", "plural": false, "selections": [ @@ -1556,7 +1547,7 @@ return { "args": null, "concreteType": "User", "plural": false, - "selections": (v23/*: any*/) + "selections": (v22/*: any*/) }, { "kind": "ScalarField", @@ -1577,7 +1568,7 @@ return { "alias": null, "name": "comments", "storageKey": null, - "args": (v24/*: any*/), + "args": (v23/*: any*/), "concreteType": "PullRequestReviewCommentConnection", "plural": false, "selections": [ @@ -1601,7 +1592,7 @@ return { "concreteType": "PullRequestReviewComment", "plural": false, "selections": [ - (v25/*: any*/), + (v24/*: any*/), (v4/*: any*/), (v13/*: any*/), { @@ -1612,14 +1603,29 @@ return { "storageKey": null }, (v11/*: any*/), - (v21/*: any*/), + (v20/*: any*/), + (v25/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "author", + "storageKey": null, + "args": null, + "concreteType": null, + "plural": false, + "selections": [ + (v3/*: any*/), + (v15/*: any*/), + (v14/*: any*/), + (v5/*: any*/), + (v4/*: any*/) + ] + }, (v26/*: any*/), - (v28/*: any*/), - (v29/*: any*/), (v12/*: any*/), (v5/*: any*/), - (v18/*: any*/), - (v20/*: any*/), + (v17/*: any*/), + (v19/*: any*/), (v3/*: any*/) ] } @@ -1631,7 +1637,7 @@ return { "kind": "LinkedHandle", "alias": null, "name": "comments", - "args": (v24/*: any*/), + "args": (v23/*: any*/), "handle": "connection", "key": "ReviewCommentsAccumulator_comments", "filters": null @@ -1647,7 +1653,7 @@ return { "kind": "LinkedHandle", "alias": null, "name": "reviewThreads", - "args": (v22/*: any*/), + "args": (v21/*: any*/), "handle": "connection", "key": "ReviewThreadsAccumulator_reviewThreads", "filters": null @@ -1657,8 +1663,8 @@ return { ] }, (v4/*: any*/), - (v30/*: any*/), - (v32/*: any*/), + (v27/*: any*/), + (v29/*: any*/), { "kind": "LinkedField", "alias": "issue", @@ -1675,21 +1681,21 @@ return { "type": "Issue", "selections": [ (v11/*: any*/), - (v33/*: any*/), + (v30/*: any*/), (v5/*: any*/), - (v34/*: any*/), + (v31/*: any*/), (v13/*: any*/), - (v35/*: any*/), + (v16/*: any*/), { "kind": "LinkedField", "alias": null, "name": "timeline", "storageKey": null, - "args": (v36/*: any*/), + "args": (v32/*: any*/), "concreteType": "IssueTimelineConnection", "plural": false, "selections": [ - (v37/*: any*/), + (v33/*: any*/), { "kind": "LinkedField", "alias": null, @@ -1711,9 +1717,9 @@ return { "selections": [ (v3/*: any*/), (v4/*: any*/), - (v39/*: any*/), - (v40/*: any*/), - (v43/*: any*/) + (v36/*: any*/), + (v38/*: any*/), + (v41/*: any*/) ] } ] @@ -1724,13 +1730,13 @@ return { "kind": "LinkedHandle", "alias": null, "name": "timeline", - "args": (v36/*: any*/), + "args": (v32/*: any*/), "handle": "connection", "key": "IssueTimelineController_timeline", "filters": null }, - (v20/*: any*/), - (v21/*: any*/) + (v19/*: any*/), + (v20/*: any*/) ] } ] @@ -1751,7 +1757,7 @@ return { "type": "PullRequest", "selections": [ (v13/*: any*/), - (v33/*: any*/), + (v30/*: any*/), { "kind": "ScalarField", "alias": null, @@ -1768,7 +1774,7 @@ return { "concreteType": "Repository", "plural": false, "selections": [ - (v30/*: any*/), + (v27/*: any*/), (v5/*: any*/), { "kind": "ScalarField", @@ -1777,12 +1783,12 @@ return { "args": null, "storageKey": null }, - (v32/*: any*/), + (v29/*: any*/), (v4/*: any*/) ] }, (v5/*: any*/), - (v38/*: any*/), + (v34/*: any*/), { "kind": "ScalarField", "alias": null, @@ -1791,7 +1797,7 @@ return { "storageKey": null }, (v11/*: any*/), - (v34/*: any*/), + (v31/*: any*/), { "kind": "ScalarField", "alias": null, @@ -1807,19 +1813,19 @@ return { "args": null, "concreteType": "PullRequestCommitConnection", "plural": false, - "selections": (v19/*: any*/) + "selections": (v18/*: any*/) }, - (v35/*: any*/), + (v16/*: any*/), { "kind": "LinkedField", "alias": null, "name": "commits", "storageKey": null, - "args": (v44/*: any*/), + "args": (v42/*: any*/), "concreteType": "PullRequestCommitConnection", "plural": false, "selections": [ - (v37/*: any*/), + (v33/*: any*/), { "kind": "LinkedField", "alias": null, @@ -1859,7 +1865,7 @@ return { "plural": false, "selections": [ (v15/*: any*/), - (v30/*: any*/), + (v27/*: any*/), { "kind": "ScalarField", "alias": null, @@ -1890,7 +1896,7 @@ return { "args": null, "storageKey": null }, - (v42/*: any*/), + (v40/*: any*/), (v5/*: any*/) ] }, @@ -1906,7 +1912,7 @@ return { "kind": "LinkedHandle", "alias": null, "name": "commits", - "args": (v44/*: any*/), + "args": (v42/*: any*/), "handle": "connection", "key": "prCommitsView_commits", "filters": null @@ -2019,7 +2025,7 @@ return { "args": null, "concreteType": null, "plural": false, - "selections": (v31/*: any*/) + "selections": (v28/*: any*/) }, { "kind": "LinkedField", @@ -2030,7 +2036,7 @@ return { "concreteType": "Repository", "plural": false, "selections": [ - (v32/*: any*/), + (v29/*: any*/), (v4/*: any*/) ] }, @@ -2039,11 +2045,11 @@ return { "alias": null, "name": "timeline", "storageKey": null, - "args": (v36/*: any*/), + "args": (v32/*: any*/), "concreteType": "PullRequestTimelineConnection", "plural": false, "selections": [ - (v37/*: any*/), + (v33/*: any*/), { "kind": "LinkedField", "alias": null, @@ -2065,12 +2071,12 @@ return { "selections": [ (v3/*: any*/), (v4/*: any*/), - (v39/*: any*/), + (v36/*: any*/), { "kind": "InlineFragment", "type": "CommitCommentThread", "selections": [ - (v46/*: any*/), + (v44/*: any*/), { "kind": "LinkedField", "alias": null, @@ -2106,12 +2112,21 @@ return { "plural": false, "selections": [ (v4/*: any*/), - (v17/*: any*/), - (v46/*: any*/), + { + "kind": "LinkedField", + "alias": null, + "name": "author", + "storageKey": null, + "args": null, + "concreteType": null, + "plural": false, + "selections": (v35/*: any*/) + }, + (v44/*: any*/), (v13/*: any*/), - (v29/*: any*/), (v26/*: any*/), - (v25/*: any*/) + (v25/*: any*/), + (v24/*: any*/) ] } ] @@ -2124,7 +2139,7 @@ return { "kind": "InlineFragment", "type": "HeadRefForcePushedEvent", "selections": [ - (v47/*: any*/), + (v45/*: any*/), { "kind": "LinkedField", "alias": null, @@ -2133,7 +2148,7 @@ return { "args": null, "concreteType": "Commit", "plural": false, - "selections": (v45/*: any*/) + "selections": (v43/*: any*/) }, { "kind": "LinkedField", @@ -2143,17 +2158,17 @@ return { "args": null, "concreteType": "Commit", "plural": false, - "selections": (v45/*: any*/) + "selections": (v43/*: any*/) }, - (v29/*: any*/) + (v26/*: any*/) ] }, { "kind": "InlineFragment", "type": "MergedEvent", "selections": [ - (v47/*: any*/), - (v46/*: any*/), + (v45/*: any*/), + (v44/*: any*/), { "kind": "ScalarField", "alias": null, @@ -2161,11 +2176,11 @@ return { "args": null, "storageKey": null }, - (v29/*: any*/) + (v26/*: any*/) ] }, - (v40/*: any*/), - (v43/*: any*/) + (v38/*: any*/), + (v41/*: any*/) ] } ] @@ -2176,13 +2191,13 @@ return { "kind": "LinkedHandle", "alias": null, "name": "timeline", - "args": (v36/*: any*/), + "args": (v32/*: any*/), "handle": "connection", "key": "prTimelineContainer_timeline", "filters": null }, - (v20/*: any*/), - (v21/*: any*/) + (v19/*: any*/), + (v20/*: any*/) ] } ] @@ -2195,7 +2210,7 @@ return { "operationKind": "query", "name": "issueishDetailContainerQuery", "id": null, - "text": "query issueishDetailContainerQuery(\n $repoOwner: String!\n $repoName: String!\n $issueishNumber: Int!\n $timelineCount: Int!\n $timelineCursor: String\n $commitCount: Int!\n $commitCursor: String\n $reviewCount: Int!\n $reviewCursor: String\n $threadCount: Int!\n $threadCursor: String\n $commentCount: Int!\n $commentCursor: String\n) {\n repository(owner: $repoOwner, name: $repoName) {\n issueish: issueOrPullRequest(number: $issueishNumber) {\n __typename\n ... on PullRequest {\n ...aggregatedReviewsContainer_pullRequest_qdneZ\n }\n ... on Node {\n id\n }\n }\n ...issueishDetailController_repository_1mXVvq\n id\n }\n}\n\nfragment aggregatedReviewsContainer_pullRequest_qdneZ on PullRequest {\n id\n ...reviewSummariesAccumulator_pullRequest_2zzc96\n ...reviewThreadsAccumulator_pullRequest_CKDvj\n}\n\nfragment issueishDetailController_repository_1mXVvq on Repository {\n ...issueDetailView_repository\n ...prCheckoutController_repository\n ...prDetailView_repository\n name\n owner {\n __typename\n login\n id\n }\n issue: issueOrPullRequest(number: $issueishNumber) {\n __typename\n ... on Issue {\n title\n number\n ...issueDetailView_issue_3D8CP9\n }\n ... on Node {\n id\n }\n }\n pullRequest: issueOrPullRequest(number: $issueishNumber) {\n __typename\n ... on PullRequest {\n title\n number\n ...prCheckoutController_pullRequest\n ...prDetailView_pullRequest_1TnD8A\n }\n ... on Node {\n id\n }\n }\n}\n\nfragment issueDetailView_repository on Repository {\n id\n name\n owner {\n __typename\n login\n id\n }\n}\n\nfragment prCheckoutController_repository on Repository {\n name\n owner {\n __typename\n login\n id\n }\n}\n\nfragment prDetailView_repository on Repository {\n id\n name\n owner {\n __typename\n login\n id\n }\n}\n\nfragment issueDetailView_issue_3D8CP9 on Issue {\n id\n __typename\n url\n state\n number\n title\n bodyHTML\n author {\n __typename\n login\n avatarUrl\n url\n ... on Node {\n id\n }\n }\n ...issueTimelineController_issue_3D8CP9\n ...emojiReactionsView_reactable\n}\n\nfragment prCheckoutController_pullRequest on PullRequest {\n number\n headRefName\n headRepository {\n name\n url\n sshUrl\n owner {\n __typename\n login\n id\n }\n id\n }\n}\n\nfragment prDetailView_pullRequest_1TnD8A on PullRequest {\n id\n __typename\n url\n isCrossRepository\n changedFiles\n state\n number\n title\n bodyHTML\n baseRefName\n headRefName\n countedCommits: commits {\n totalCount\n }\n author {\n __typename\n login\n avatarUrl\n url\n ... on Node {\n id\n }\n }\n ...prCommitsView_pullRequest_38TpXw\n ...prStatusesView_pullRequest\n ...prTimelineController_pullRequest_3D8CP9\n ...emojiReactionsController_reactable\n}\n\nfragment prCommitsView_pullRequest_38TpXw on PullRequest {\n url\n commits(first: $commitCount, after: $commitCursor) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n cursor\n node {\n commit {\n id\n ...prCommitView_item\n }\n id\n __typename\n }\n }\n }\n}\n\nfragment prStatusesView_pullRequest on PullRequest {\n id\n recentCommits: commits(last: 1) {\n edges {\n node {\n commit {\n status {\n state\n contexts {\n id\n state\n ...prStatusContextView_context\n }\n id\n }\n id\n }\n id\n }\n }\n }\n}\n\nfragment prTimelineController_pullRequest_3D8CP9 on PullRequest {\n url\n ...headRefForcePushedEventView_issueish\n timeline(first: $timelineCount, after: $timelineCursor) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n cursor\n node {\n __typename\n ...commitsView_nodes\n ...issueCommentView_item\n ...mergedEventView_item\n ...headRefForcePushedEventView_item\n ...commitCommentThreadView_item\n ...crossReferencedEventsView_nodes\n ... on Node {\n id\n }\n }\n }\n }\n}\n\nfragment emojiReactionsController_reactable on Reactable {\n id\n ...emojiReactionsView_reactable\n}\n\nfragment emojiReactionsView_reactable on Reactable {\n id\n reactionGroups {\n content\n viewerHasReacted\n users {\n totalCount\n }\n }\n viewerCanReact\n}\n\nfragment headRefForcePushedEventView_issueish on PullRequest {\n headRefName\n headRepositoryOwner {\n __typename\n login\n id\n }\n repository {\n owner {\n __typename\n login\n id\n }\n id\n }\n}\n\nfragment commitsView_nodes on Commit {\n id\n author {\n name\n user {\n login\n id\n }\n }\n ...commitView_commit\n}\n\nfragment issueCommentView_item on IssueComment {\n author {\n __typename\n avatarUrl\n login\n ... on Node {\n id\n }\n }\n bodyHTML\n createdAt\n url\n}\n\nfragment mergedEventView_item on MergedEvent {\n actor {\n __typename\n avatarUrl\n login\n ... on Node {\n id\n }\n }\n commit {\n oid\n id\n }\n mergeRefName\n createdAt\n}\n\nfragment headRefForcePushedEventView_item on HeadRefForcePushedEvent {\n actor {\n __typename\n avatarUrl\n login\n ... on Node {\n id\n }\n }\n beforeCommit {\n oid\n id\n }\n afterCommit {\n oid\n id\n }\n createdAt\n}\n\nfragment commitCommentThreadView_item on CommitCommentThread {\n commit {\n oid\n id\n }\n comments(first: 100) {\n edges {\n node {\n id\n ...commitCommentView_item\n }\n }\n }\n}\n\nfragment crossReferencedEventsView_nodes on CrossReferencedEvent {\n id\n referencedAt\n isCrossRepository\n actor {\n __typename\n login\n avatarUrl\n ... on Node {\n id\n }\n }\n source {\n __typename\n ... on RepositoryNode {\n repository {\n name\n owner {\n __typename\n login\n id\n }\n id\n }\n }\n ... on Node {\n id\n }\n }\n ...crossReferencedEventView_item\n}\n\nfragment crossReferencedEventView_item on CrossReferencedEvent {\n id\n isCrossRepository\n source {\n __typename\n ... on Issue {\n number\n title\n url\n issueState: state\n }\n ... on PullRequest {\n number\n title\n url\n prState: state\n }\n ... on RepositoryNode {\n repository {\n name\n isPrivate\n owner {\n __typename\n login\n id\n }\n id\n }\n }\n ... on Node {\n id\n }\n }\n}\n\nfragment commitCommentView_item on CommitComment {\n author {\n __typename\n login\n avatarUrl\n ... on Node {\n id\n }\n }\n commit {\n oid\n id\n }\n bodyHTML\n createdAt\n path\n position\n}\n\nfragment commitView_commit on Commit {\n author {\n name\n avatarUrl\n user {\n login\n id\n }\n }\n committer {\n name\n avatarUrl\n user {\n login\n id\n }\n }\n authoredByCommitter\n sha: oid\n message\n messageHeadlineHTML\n commitUrl\n}\n\nfragment prStatusContextView_context on StatusContext {\n context\n description\n state\n targetUrl\n}\n\nfragment prCommitView_item on Commit {\n committer {\n avatarUrl\n name\n date\n }\n messageHeadline\n messageBody\n shortSha: abbreviatedOid\n sha: oid\n url\n}\n\nfragment issueTimelineController_issue_3D8CP9 on Issue {\n url\n timeline(first: $timelineCount, after: $timelineCursor) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n cursor\n node {\n __typename\n ...commitsView_nodes\n ...issueCommentView_item\n ...crossReferencedEventsView_nodes\n ... on Node {\n id\n }\n }\n }\n }\n}\n\nfragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest {\n url\n reviews(first: $reviewCount, after: $reviewCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n bodyHTML\n state\n submittedAt\n lastEditedAt\n url\n author {\n __typename\n login\n avatarUrl\n ... on Node {\n id\n }\n }\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment reviewThreadsAccumulator_pullRequest_CKDvj on PullRequest {\n url\n reviewThreads(first: $threadCount, after: $threadCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n isResolved\n resolvedBy {\n login\n id\n }\n viewerCanResolve\n viewerCanUnresolve\n ...reviewCommentsAccumulator_reviewThread_1VbUmL\n __typename\n }\n }\n }\n}\n\nfragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThread {\n id\n comments(first: $commentCount, after: $commentCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n author {\n __typename\n avatarUrl\n login\n ... on Node {\n id\n }\n }\n bodyHTML\n isMinimized\n state\n viewerCanReact\n path\n position\n createdAt\n lastEditedAt\n url\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n", + "text": "query issueishDetailContainerQuery(\n $repoOwner: String!\n $repoName: String!\n $issueishNumber: Int!\n $timelineCount: Int!\n $timelineCursor: String\n $commitCount: Int!\n $commitCursor: String\n $reviewCount: Int!\n $reviewCursor: String\n $threadCount: Int!\n $threadCursor: String\n $commentCount: Int!\n $commentCursor: String\n) {\n repository(owner: $repoOwner, name: $repoName) {\n issueish: issueOrPullRequest(number: $issueishNumber) {\n __typename\n ... on PullRequest {\n ...aggregatedReviewsContainer_pullRequest_qdneZ\n }\n ... on Node {\n id\n }\n }\n ...issueishDetailController_repository_1mXVvq\n id\n }\n}\n\nfragment aggregatedReviewsContainer_pullRequest_qdneZ on PullRequest {\n id\n ...reviewSummariesAccumulator_pullRequest_2zzc96\n ...reviewThreadsAccumulator_pullRequest_CKDvj\n}\n\nfragment issueishDetailController_repository_1mXVvq on Repository {\n ...issueDetailView_repository\n ...prCheckoutController_repository\n ...prDetailView_repository\n name\n owner {\n __typename\n login\n id\n }\n issue: issueOrPullRequest(number: $issueishNumber) {\n __typename\n ... on Issue {\n title\n number\n ...issueDetailView_issue_3D8CP9\n }\n ... on Node {\n id\n }\n }\n pullRequest: issueOrPullRequest(number: $issueishNumber) {\n __typename\n ... on PullRequest {\n title\n number\n ...prCheckoutController_pullRequest\n ...prDetailView_pullRequest_1TnD8A\n }\n ... on Node {\n id\n }\n }\n}\n\nfragment issueDetailView_repository on Repository {\n id\n name\n owner {\n __typename\n login\n id\n }\n}\n\nfragment prCheckoutController_repository on Repository {\n name\n owner {\n __typename\n login\n id\n }\n}\n\nfragment prDetailView_repository on Repository {\n id\n name\n owner {\n __typename\n login\n id\n }\n}\n\nfragment issueDetailView_issue_3D8CP9 on Issue {\n id\n __typename\n url\n state\n number\n title\n bodyHTML\n author {\n __typename\n login\n avatarUrl\n url\n ... on Node {\n id\n }\n }\n ...issueTimelineController_issue_3D8CP9\n ...emojiReactionsView_reactable\n}\n\nfragment prCheckoutController_pullRequest on PullRequest {\n number\n headRefName\n headRepository {\n name\n url\n sshUrl\n owner {\n __typename\n login\n id\n }\n id\n }\n}\n\nfragment prDetailView_pullRequest_1TnD8A on PullRequest {\n id\n __typename\n url\n isCrossRepository\n changedFiles\n state\n number\n title\n bodyHTML\n baseRefName\n headRefName\n countedCommits: commits {\n totalCount\n }\n author {\n __typename\n login\n avatarUrl\n url\n ... on Node {\n id\n }\n }\n ...prCommitsView_pullRequest_38TpXw\n ...prStatusesView_pullRequest\n ...prTimelineController_pullRequest_3D8CP9\n ...emojiReactionsController_reactable\n}\n\nfragment prCommitsView_pullRequest_38TpXw on PullRequest {\n url\n commits(first: $commitCount, after: $commitCursor) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n cursor\n node {\n commit {\n id\n ...prCommitView_item\n }\n id\n __typename\n }\n }\n }\n}\n\nfragment prStatusesView_pullRequest on PullRequest {\n id\n recentCommits: commits(last: 1) {\n edges {\n node {\n commit {\n status {\n state\n contexts {\n id\n state\n ...prStatusContextView_context\n }\n id\n }\n id\n }\n id\n }\n }\n }\n}\n\nfragment prTimelineController_pullRequest_3D8CP9 on PullRequest {\n url\n ...headRefForcePushedEventView_issueish\n timeline(first: $timelineCount, after: $timelineCursor) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n cursor\n node {\n __typename\n ...commitsView_nodes\n ...issueCommentView_item\n ...mergedEventView_item\n ...headRefForcePushedEventView_item\n ...commitCommentThreadView_item\n ...crossReferencedEventsView_nodes\n ... on Node {\n id\n }\n }\n }\n }\n}\n\nfragment emojiReactionsController_reactable on Reactable {\n id\n ...emojiReactionsView_reactable\n}\n\nfragment emojiReactionsView_reactable on Reactable {\n id\n reactionGroups {\n content\n viewerHasReacted\n users {\n totalCount\n }\n }\n viewerCanReact\n}\n\nfragment headRefForcePushedEventView_issueish on PullRequest {\n headRefName\n headRepositoryOwner {\n __typename\n login\n id\n }\n repository {\n owner {\n __typename\n login\n id\n }\n id\n }\n}\n\nfragment commitsView_nodes on Commit {\n id\n author {\n name\n user {\n login\n id\n }\n }\n ...commitView_commit\n}\n\nfragment issueCommentView_item on IssueComment {\n author {\n __typename\n avatarUrl\n login\n ... on Node {\n id\n }\n }\n bodyHTML\n createdAt\n url\n}\n\nfragment mergedEventView_item on MergedEvent {\n actor {\n __typename\n avatarUrl\n login\n ... on Node {\n id\n }\n }\n commit {\n oid\n id\n }\n mergeRefName\n createdAt\n}\n\nfragment headRefForcePushedEventView_item on HeadRefForcePushedEvent {\n actor {\n __typename\n avatarUrl\n login\n ... on Node {\n id\n }\n }\n beforeCommit {\n oid\n id\n }\n afterCommit {\n oid\n id\n }\n createdAt\n}\n\nfragment commitCommentThreadView_item on CommitCommentThread {\n commit {\n oid\n id\n }\n comments(first: 100) {\n edges {\n node {\n id\n ...commitCommentView_item\n }\n }\n }\n}\n\nfragment crossReferencedEventsView_nodes on CrossReferencedEvent {\n id\n referencedAt\n isCrossRepository\n actor {\n __typename\n login\n avatarUrl\n ... on Node {\n id\n }\n }\n source {\n __typename\n ... on RepositoryNode {\n repository {\n name\n owner {\n __typename\n login\n id\n }\n id\n }\n }\n ... on Node {\n id\n }\n }\n ...crossReferencedEventView_item\n}\n\nfragment crossReferencedEventView_item on CrossReferencedEvent {\n id\n isCrossRepository\n source {\n __typename\n ... on Issue {\n number\n title\n url\n issueState: state\n }\n ... on PullRequest {\n number\n title\n url\n prState: state\n }\n ... on RepositoryNode {\n repository {\n name\n isPrivate\n owner {\n __typename\n login\n id\n }\n id\n }\n }\n ... on Node {\n id\n }\n }\n}\n\nfragment commitCommentView_item on CommitComment {\n author {\n __typename\n login\n avatarUrl\n ... on Node {\n id\n }\n }\n commit {\n oid\n id\n }\n bodyHTML\n createdAt\n path\n position\n}\n\nfragment commitView_commit on Commit {\n author {\n name\n avatarUrl\n user {\n login\n id\n }\n }\n committer {\n name\n avatarUrl\n user {\n login\n id\n }\n }\n authoredByCommitter\n sha: oid\n message\n messageHeadlineHTML\n commitUrl\n}\n\nfragment prStatusContextView_context on StatusContext {\n context\n description\n state\n targetUrl\n}\n\nfragment prCommitView_item on Commit {\n committer {\n avatarUrl\n name\n date\n }\n messageHeadline\n messageBody\n shortSha: abbreviatedOid\n sha: oid\n url\n}\n\nfragment issueTimelineController_issue_3D8CP9 on Issue {\n url\n timeline(first: $timelineCount, after: $timelineCursor) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n cursor\n node {\n __typename\n ...commitsView_nodes\n ...issueCommentView_item\n ...crossReferencedEventsView_nodes\n ... on Node {\n id\n }\n }\n }\n }\n}\n\nfragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest {\n url\n reviews(first: $reviewCount, after: $reviewCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n bodyHTML\n state\n submittedAt\n lastEditedAt\n url\n author {\n __typename\n login\n avatarUrl\n url\n ... on Node {\n id\n }\n }\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment reviewThreadsAccumulator_pullRequest_CKDvj on PullRequest {\n url\n reviewThreads(first: $threadCount, after: $threadCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n isResolved\n resolvedBy {\n login\n id\n }\n viewerCanResolve\n viewerCanUnresolve\n ...reviewCommentsAccumulator_reviewThread_1VbUmL\n __typename\n }\n }\n }\n}\n\nfragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThread {\n id\n comments(first: $commentCount, after: $commentCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n author {\n __typename\n avatarUrl\n login\n url\n ... on Node {\n id\n }\n }\n bodyHTML\n isMinimized\n state\n viewerCanReact\n path\n position\n createdAt\n lastEditedAt\n url\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n", "metadata": {} } }; diff --git a/lib/containers/__generated__/reviewsContainerQuery.graphql.js b/lib/containers/__generated__/reviewsContainerQuery.graphql.js index e62302ee44..f1adb901d9 100644 --- a/lib/containers/__generated__/reviewsContainerQuery.graphql.js +++ b/lib/containers/__generated__/reviewsContainerQuery.graphql.js @@ -1,6 +1,6 @@ /** * @flow - * @relayHash 8a10abb173ca5d7a2e814cc2e5f7a392 + * @relayHash c5fc2c138b012df8081c275fb687ae7b */ /* eslint-disable */ @@ -128,6 +128,7 @@ fragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest { __typename login avatarUrl + url ... on Node { id } @@ -180,6 +181,7 @@ fragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThrea __typename avatarUrl login + url ... on Node { id } @@ -705,6 +707,7 @@ return { (v5/*: any*/), (v6/*: any*/), (v16/*: any*/), + (v9/*: any*/), (v7/*: any*/) ] }, @@ -857,6 +860,7 @@ return { (v5/*: any*/), (v16/*: any*/), (v6/*: any*/), + (v9/*: any*/), (v7/*: any*/) ] }, @@ -964,7 +968,7 @@ return { "operationKind": "query", "name": "reviewsContainerQuery", "id": null, - "text": "query reviewsContainerQuery(\n $repoOwner: String!\n $repoName: String!\n $prNumber: Int!\n $reviewCount: Int!\n $reviewCursor: String\n $threadCount: Int!\n $threadCursor: String\n $commentCount: Int!\n $commentCursor: String\n) {\n repository(owner: $repoOwner, name: $repoName) {\n ...reviewsController_repository\n pullRequest(number: $prNumber) {\n headRefOid\n ...aggregatedReviewsContainer_pullRequest_qdneZ\n ...reviewsController_pullRequest\n id\n }\n id\n }\n viewer {\n ...reviewsController_viewer\n id\n }\n}\n\nfragment reviewsController_repository on Repository {\n ...prCheckoutController_repository\n}\n\nfragment aggregatedReviewsContainer_pullRequest_qdneZ on PullRequest {\n id\n ...reviewSummariesAccumulator_pullRequest_2zzc96\n ...reviewThreadsAccumulator_pullRequest_CKDvj\n}\n\nfragment reviewsController_pullRequest on PullRequest {\n id\n ...prCheckoutController_pullRequest\n}\n\nfragment reviewsController_viewer on User {\n id\n login\n avatarUrl\n}\n\nfragment prCheckoutController_pullRequest on PullRequest {\n number\n headRefName\n headRepository {\n name\n url\n sshUrl\n owner {\n __typename\n login\n id\n }\n id\n }\n}\n\nfragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest {\n url\n reviews(first: $reviewCount, after: $reviewCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n bodyHTML\n state\n submittedAt\n lastEditedAt\n url\n author {\n __typename\n login\n avatarUrl\n ... on Node {\n id\n }\n }\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment reviewThreadsAccumulator_pullRequest_CKDvj on PullRequest {\n url\n reviewThreads(first: $threadCount, after: $threadCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n isResolved\n resolvedBy {\n login\n id\n }\n viewerCanResolve\n viewerCanUnresolve\n ...reviewCommentsAccumulator_reviewThread_1VbUmL\n __typename\n }\n }\n }\n}\n\nfragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThread {\n id\n comments(first: $commentCount, after: $commentCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n author {\n __typename\n avatarUrl\n login\n ... on Node {\n id\n }\n }\n bodyHTML\n isMinimized\n state\n viewerCanReact\n path\n position\n createdAt\n lastEditedAt\n url\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment emojiReactionsController_reactable on Reactable {\n id\n ...emojiReactionsView_reactable\n}\n\nfragment emojiReactionsView_reactable on Reactable {\n id\n reactionGroups {\n content\n viewerHasReacted\n users {\n totalCount\n }\n }\n viewerCanReact\n}\n\nfragment prCheckoutController_repository on Repository {\n name\n owner {\n __typename\n login\n id\n }\n}\n", + "text": "query reviewsContainerQuery(\n $repoOwner: String!\n $repoName: String!\n $prNumber: Int!\n $reviewCount: Int!\n $reviewCursor: String\n $threadCount: Int!\n $threadCursor: String\n $commentCount: Int!\n $commentCursor: String\n) {\n repository(owner: $repoOwner, name: $repoName) {\n ...reviewsController_repository\n pullRequest(number: $prNumber) {\n headRefOid\n ...aggregatedReviewsContainer_pullRequest_qdneZ\n ...reviewsController_pullRequest\n id\n }\n id\n }\n viewer {\n ...reviewsController_viewer\n id\n }\n}\n\nfragment reviewsController_repository on Repository {\n ...prCheckoutController_repository\n}\n\nfragment aggregatedReviewsContainer_pullRequest_qdneZ on PullRequest {\n id\n ...reviewSummariesAccumulator_pullRequest_2zzc96\n ...reviewThreadsAccumulator_pullRequest_CKDvj\n}\n\nfragment reviewsController_pullRequest on PullRequest {\n id\n ...prCheckoutController_pullRequest\n}\n\nfragment reviewsController_viewer on User {\n id\n login\n avatarUrl\n}\n\nfragment prCheckoutController_pullRequest on PullRequest {\n number\n headRefName\n headRepository {\n name\n url\n sshUrl\n owner {\n __typename\n login\n id\n }\n id\n }\n}\n\nfragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest {\n url\n reviews(first: $reviewCount, after: $reviewCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n bodyHTML\n state\n submittedAt\n lastEditedAt\n url\n author {\n __typename\n login\n avatarUrl\n url\n ... on Node {\n id\n }\n }\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment reviewThreadsAccumulator_pullRequest_CKDvj on PullRequest {\n url\n reviewThreads(first: $threadCount, after: $threadCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n isResolved\n resolvedBy {\n login\n id\n }\n viewerCanResolve\n viewerCanUnresolve\n ...reviewCommentsAccumulator_reviewThread_1VbUmL\n __typename\n }\n }\n }\n}\n\nfragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThread {\n id\n comments(first: $commentCount, after: $commentCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n author {\n __typename\n avatarUrl\n login\n url\n ... on Node {\n id\n }\n }\n bodyHTML\n isMinimized\n state\n viewerCanReact\n path\n position\n createdAt\n lastEditedAt\n url\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment emojiReactionsController_reactable on Reactable {\n id\n ...emojiReactionsView_reactable\n}\n\nfragment emojiReactionsView_reactable on Reactable {\n id\n reactionGroups {\n content\n viewerHasReacted\n users {\n totalCount\n }\n }\n viewerCanReact\n}\n\nfragment prCheckoutController_repository on Repository {\n name\n owner {\n __typename\n login\n id\n }\n}\n", "metadata": {} } }; diff --git a/lib/containers/accumulators/__generated__/reviewCommentsAccumulatorQuery.graphql.js b/lib/containers/accumulators/__generated__/reviewCommentsAccumulatorQuery.graphql.js index dc5ff54c79..de2e349eaa 100644 --- a/lib/containers/accumulators/__generated__/reviewCommentsAccumulatorQuery.graphql.js +++ b/lib/containers/accumulators/__generated__/reviewCommentsAccumulatorQuery.graphql.js @@ -1,6 +1,6 @@ /** * @flow - * @relayHash 46a9d8c02a82e693290bcde9566ba3f9 + * @relayHash e03fe8d7e5ac69de56d1ba99eb403ce7 */ /* eslint-disable */ @@ -57,6 +57,7 @@ fragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThrea __typename avatarUrl login + url ... on Node { id } @@ -152,7 +153,14 @@ v4 = [ "variableName": "commentCount", "type": "Int" } -]; +], +v5 = { + "kind": "ScalarField", + "alias": null, + "name": "url", + "args": null, + "storageKey": null +}; return { "kind": "Request", "fragment": { @@ -345,6 +353,7 @@ return { "args": null, "storageKey": null }, + (v5/*: any*/), (v3/*: any*/) ] }, @@ -362,13 +371,7 @@ return { "args": null, "storageKey": null }, - { - "kind": "ScalarField", - "alias": null, - "name": "url", - "args": null, - "storageKey": null - }, + (v5/*: any*/), { "kind": "ScalarField", "alias": null, @@ -445,7 +448,7 @@ return { "operationKind": "query", "name": "reviewCommentsAccumulatorQuery", "id": null, - "text": "query reviewCommentsAccumulatorQuery(\n $id: ID!\n $commentCount: Int!\n $commentCursor: String\n) {\n node(id: $id) {\n __typename\n ... on PullRequestReviewThread {\n ...reviewCommentsAccumulator_reviewThread_1VbUmL\n }\n id\n }\n}\n\nfragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThread {\n id\n comments(first: $commentCount, after: $commentCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n author {\n __typename\n avatarUrl\n login\n ... on Node {\n id\n }\n }\n bodyHTML\n isMinimized\n state\n viewerCanReact\n path\n position\n createdAt\n lastEditedAt\n url\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment emojiReactionsController_reactable on Reactable {\n id\n ...emojiReactionsView_reactable\n}\n\nfragment emojiReactionsView_reactable on Reactable {\n id\n reactionGroups {\n content\n viewerHasReacted\n users {\n totalCount\n }\n }\n viewerCanReact\n}\n", + "text": "query reviewCommentsAccumulatorQuery(\n $id: ID!\n $commentCount: Int!\n $commentCursor: String\n) {\n node(id: $id) {\n __typename\n ... on PullRequestReviewThread {\n ...reviewCommentsAccumulator_reviewThread_1VbUmL\n }\n id\n }\n}\n\nfragment reviewCommentsAccumulator_reviewThread_1VbUmL on PullRequestReviewThread {\n id\n comments(first: $commentCount, after: $commentCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n author {\n __typename\n avatarUrl\n login\n url\n ... on Node {\n id\n }\n }\n bodyHTML\n isMinimized\n state\n viewerCanReact\n path\n position\n createdAt\n lastEditedAt\n url\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment emojiReactionsController_reactable on Reactable {\n id\n ...emojiReactionsView_reactable\n}\n\nfragment emojiReactionsView_reactable on Reactable {\n id\n reactionGroups {\n content\n viewerHasReacted\n users {\n totalCount\n }\n }\n viewerCanReact\n}\n", "metadata": {} } }; diff --git a/lib/containers/accumulators/__generated__/reviewCommentsAccumulator_reviewThread.graphql.js b/lib/containers/accumulators/__generated__/reviewCommentsAccumulator_reviewThread.graphql.js index bf6efa4473..a049a16ac9 100644 --- a/lib/containers/accumulators/__generated__/reviewCommentsAccumulator_reviewThread.graphql.js +++ b/lib/containers/accumulators/__generated__/reviewCommentsAccumulator_reviewThread.graphql.js @@ -27,6 +27,7 @@ export type reviewCommentsAccumulator_reviewThread = {| +author: ?{| +avatarUrl: any, +login: string, + +url: any, |}, +bodyHTML: any, +isMinimized: boolean, @@ -54,6 +55,13 @@ var v0 = { "name": "id", "args": null, "storageKey": null +}, +v1 = { + "kind": "ScalarField", + "alias": null, + "name": "url", + "args": null, + "storageKey": null }; return { "kind": "Fragment", @@ -211,7 +219,8 @@ return { "name": "login", "args": null, "storageKey": null - } + }, + (v1/*: any*/) ] }, { @@ -228,13 +237,7 @@ return { "args": null, "storageKey": null }, - { - "kind": "ScalarField", - "alias": null, - "name": "url", - "args": null, - "storageKey": null - }, + (v1/*: any*/), { "kind": "ScalarField", "alias": null, @@ -264,5 +267,5 @@ return { }; })(); // prettier-ignore -(node/*: any*/).hash = 'd93fe966cd2799dfc28b6c5cd5869b9a'; +(node/*: any*/).hash = '6a1d075c882842171dfeaf52d4241b35'; module.exports = node; diff --git a/lib/containers/accumulators/__generated__/reviewSummariesAccumulatorQuery.graphql.js b/lib/containers/accumulators/__generated__/reviewSummariesAccumulatorQuery.graphql.js index fde9bef96a..51f21c212d 100644 --- a/lib/containers/accumulators/__generated__/reviewSummariesAccumulatorQuery.graphql.js +++ b/lib/containers/accumulators/__generated__/reviewSummariesAccumulatorQuery.graphql.js @@ -1,6 +1,6 @@ /** * @flow - * @relayHash c72e0b3ed1b1eb09d79808c2da6a8d56 + * @relayHash d8874c903550e8d84d57fb2ec3a2b26b */ /* eslint-disable */ @@ -64,6 +64,7 @@ fragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest { __typename login avatarUrl + url ... on Node { id } @@ -338,6 +339,7 @@ return { "args": null, "storageKey": null }, + (v4/*: any*/), (v3/*: any*/) ] }, @@ -424,7 +426,7 @@ return { "operationKind": "query", "name": "reviewSummariesAccumulatorQuery", "id": null, - "text": "query reviewSummariesAccumulatorQuery(\n $url: URI!\n $reviewCount: Int!\n $reviewCursor: String\n) {\n resource(url: $url) {\n __typename\n ... on PullRequest {\n ...reviewSummariesAccumulator_pullRequest_2zzc96\n }\n ... on Node {\n id\n }\n }\n}\n\nfragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest {\n url\n reviews(first: $reviewCount, after: $reviewCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n bodyHTML\n state\n submittedAt\n lastEditedAt\n url\n author {\n __typename\n login\n avatarUrl\n ... on Node {\n id\n }\n }\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment emojiReactionsController_reactable on Reactable {\n id\n ...emojiReactionsView_reactable\n}\n\nfragment emojiReactionsView_reactable on Reactable {\n id\n reactionGroups {\n content\n viewerHasReacted\n users {\n totalCount\n }\n }\n viewerCanReact\n}\n", + "text": "query reviewSummariesAccumulatorQuery(\n $url: URI!\n $reviewCount: Int!\n $reviewCursor: String\n) {\n resource(url: $url) {\n __typename\n ... on PullRequest {\n ...reviewSummariesAccumulator_pullRequest_2zzc96\n }\n ... on Node {\n id\n }\n }\n}\n\nfragment reviewSummariesAccumulator_pullRequest_2zzc96 on PullRequest {\n url\n reviews(first: $reviewCount, after: $reviewCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n bodyHTML\n state\n submittedAt\n lastEditedAt\n url\n author {\n __typename\n login\n avatarUrl\n url\n ... on Node {\n id\n }\n }\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment emojiReactionsController_reactable on Reactable {\n id\n ...emojiReactionsView_reactable\n}\n\nfragment emojiReactionsView_reactable on Reactable {\n id\n reactionGroups {\n content\n viewerHasReacted\n users {\n totalCount\n }\n }\n viewerCanReact\n}\n", "metadata": {} } }; diff --git a/lib/containers/accumulators/__generated__/reviewSummariesAccumulator_pullRequest.graphql.js b/lib/containers/accumulators/__generated__/reviewSummariesAccumulator_pullRequest.graphql.js index 514fab6f5a..2653d8e2ab 100644 --- a/lib/containers/accumulators/__generated__/reviewSummariesAccumulator_pullRequest.graphql.js +++ b/lib/containers/accumulators/__generated__/reviewSummariesAccumulator_pullRequest.graphql.js @@ -32,6 +32,7 @@ export type reviewSummariesAccumulator_pullRequest = {| +author: ?{| +login: string, +avatarUrl: any, + +url: any, |}, +authorAssociation: CommentAuthorAssociation, +$fragmentRefs: emojiReactionsController_reactable$ref, @@ -200,7 +201,8 @@ return { "name": "avatarUrl", "args": null, "storageKey": null - } + }, + (v0/*: any*/) ] }, { @@ -232,5 +234,5 @@ return { }; })(); // prettier-ignore -(node/*: any*/).hash = '1ec93a745279a7a0915ab910e111830b'; +(node/*: any*/).hash = '1da33e7396e8427d0a9bcec503f5b25d'; module.exports = node; diff --git a/lib/containers/accumulators/__generated__/reviewThreadsAccumulatorQuery.graphql.js b/lib/containers/accumulators/__generated__/reviewThreadsAccumulatorQuery.graphql.js index 3837d1c7b1..3ac5f6b86d 100644 --- a/lib/containers/accumulators/__generated__/reviewThreadsAccumulatorQuery.graphql.js +++ b/lib/containers/accumulators/__generated__/reviewThreadsAccumulatorQuery.graphql.js @@ -1,6 +1,6 @@ /** * @flow - * @relayHash da375fdf673990d0765dc29484de0292 + * @relayHash 3b12f0de40249adb03e03e305bb72247 */ /* eslint-disable */ @@ -86,6 +86,7 @@ fragment reviewCommentsAccumulator_reviewThread_1UlnwR on PullRequestReviewThrea __typename avatarUrl login + url ... on Node { id } @@ -469,6 +470,7 @@ return { "storageKey": null }, (v8/*: any*/), + (v4/*: any*/), (v3/*: any*/) ] }, @@ -579,7 +581,7 @@ return { "operationKind": "query", "name": "reviewThreadsAccumulatorQuery", "id": null, - "text": "query reviewThreadsAccumulatorQuery(\n $url: URI!\n $threadCount: Int!\n $threadCursor: String\n $commentCount: Int!\n) {\n resource(url: $url) {\n __typename\n ... on PullRequest {\n ...reviewThreadsAccumulator_pullRequest_3dVVow\n }\n ... on Node {\n id\n }\n }\n}\n\nfragment reviewThreadsAccumulator_pullRequest_3dVVow on PullRequest {\n url\n reviewThreads(first: $threadCount, after: $threadCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n isResolved\n resolvedBy {\n login\n id\n }\n viewerCanResolve\n viewerCanUnresolve\n ...reviewCommentsAccumulator_reviewThread_1UlnwR\n __typename\n }\n }\n }\n}\n\nfragment reviewCommentsAccumulator_reviewThread_1UlnwR on PullRequestReviewThread {\n id\n comments(first: $commentCount) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n author {\n __typename\n avatarUrl\n login\n ... on Node {\n id\n }\n }\n bodyHTML\n isMinimized\n state\n viewerCanReact\n path\n position\n createdAt\n lastEditedAt\n url\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment emojiReactionsController_reactable on Reactable {\n id\n ...emojiReactionsView_reactable\n}\n\nfragment emojiReactionsView_reactable on Reactable {\n id\n reactionGroups {\n content\n viewerHasReacted\n users {\n totalCount\n }\n }\n viewerCanReact\n}\n", + "text": "query reviewThreadsAccumulatorQuery(\n $url: URI!\n $threadCount: Int!\n $threadCursor: String\n $commentCount: Int!\n) {\n resource(url: $url) {\n __typename\n ... on PullRequest {\n ...reviewThreadsAccumulator_pullRequest_3dVVow\n }\n ... on Node {\n id\n }\n }\n}\n\nfragment reviewThreadsAccumulator_pullRequest_3dVVow on PullRequest {\n url\n reviewThreads(first: $threadCount, after: $threadCursor) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n isResolved\n resolvedBy {\n login\n id\n }\n viewerCanResolve\n viewerCanUnresolve\n ...reviewCommentsAccumulator_reviewThread_1UlnwR\n __typename\n }\n }\n }\n}\n\nfragment reviewCommentsAccumulator_reviewThread_1UlnwR on PullRequestReviewThread {\n id\n comments(first: $commentCount) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n cursor\n node {\n id\n author {\n __typename\n avatarUrl\n login\n url\n ... on Node {\n id\n }\n }\n bodyHTML\n isMinimized\n state\n viewerCanReact\n path\n position\n createdAt\n lastEditedAt\n url\n authorAssociation\n ...emojiReactionsController_reactable\n __typename\n }\n }\n }\n}\n\nfragment emojiReactionsController_reactable on Reactable {\n id\n ...emojiReactionsView_reactable\n}\n\nfragment emojiReactionsView_reactable on Reactable {\n id\n reactionGroups {\n content\n viewerHasReacted\n users {\n totalCount\n }\n }\n viewerCanReact\n}\n", "metadata": {} } }; diff --git a/lib/containers/accumulators/review-comments-accumulator.js b/lib/containers/accumulators/review-comments-accumulator.js index 17bdde6318..1bebdffed1 100644 --- a/lib/containers/accumulators/review-comments-accumulator.js +++ b/lib/containers/accumulators/review-comments-accumulator.js @@ -67,6 +67,7 @@ export default createPaginationContainer(BareReviewCommentsAccumulator, { author { avatarUrl login + url } bodyHTML isMinimized diff --git a/lib/containers/accumulators/review-summaries-accumulator.js b/lib/containers/accumulators/review-summaries-accumulator.js index 2ce5a4d709..6d51c135b4 100644 --- a/lib/containers/accumulators/review-summaries-accumulator.js +++ b/lib/containers/accumulators/review-summaries-accumulator.js @@ -78,6 +78,7 @@ export default createPaginationContainer(BareReviewSummariesAccumulator, { author { login avatarUrl + url } authorAssociation ...emojiReactionsController_reactable diff --git a/lib/containers/issueish-tooltip-container.js b/lib/containers/issueish-tooltip-container.js index 59595e910b..c3ce08842b 100644 --- a/lib/containers/issueish-tooltip-container.js +++ b/lib/containers/issueish-tooltip-container.js @@ -4,6 +4,7 @@ import PropTypes from 'prop-types'; import cx from 'classnames'; import Octicon from '../atom/octicon'; +import {GHOST_USER} from '../helpers'; const typeAndStateToIcon = { Issue: { @@ -17,7 +18,7 @@ const typeAndStateToIcon = { }, }; -class IssueishTooltip extends React.Component { +export class BareIssueishTooltipContainer extends React.Component { static propTypes = { resource: PropTypes.shape({ issue: PropTypes.shape({}), @@ -27,7 +28,9 @@ class IssueishTooltip extends React.Component { render() { const resource = this.props.resource; - const {repository, state, number, title, author, __typename} = resource; + const author = resource.author || GHOST_USER; + + const {repository, state, number, title, __typename} = resource; const icons = typeAndStateToIcon[__typename] || {}; const icon = icons[state] || ''; return ( @@ -52,7 +55,7 @@ class IssueishTooltip extends React.Component { } } -export default createFragmentContainer(IssueishTooltip, { +export default createFragmentContainer(BareIssueishTooltipContainer, { resource: graphql` fragment issueishTooltipContainer_resource on UniformResourceLocatable { __typename diff --git a/lib/controllers/issueish-list-controller.js b/lib/controllers/issueish-list-controller.js index 5903a9ed71..32b92bc967 100644 --- a/lib/controllers/issueish-list-controller.js +++ b/lib/controllers/issueish-list-controller.js @@ -20,7 +20,7 @@ export class BareIssueishListController extends React.Component { author: PropTypes.shape({ login: PropTypes.string.isRequired, avatarUrl: PropTypes.string.isRequired, - }).isRequired, + }), createdAt: PropTypes.string.isRequired, headRefName: PropTypes.string.isRequired, repository: PropTypes.shape({ diff --git a/lib/helpers.js b/lib/helpers.js index 8f3b653bfa..7822f43d08 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -504,3 +504,9 @@ export const reactionTypeToEmoji = { ROCKET: '🚀', EYES: '👀', }; + +export const GHOST_USER = { + login: 'ghost', + avatarUrl: 'https://avatars1.githubusercontent.com/u/10137?v=4', + url: 'https://github.com/ghost', +}; diff --git a/lib/models/issueish.js b/lib/models/issueish.js index 2ee646497d..3b51e007a6 100644 --- a/lib/models/issueish.js +++ b/lib/models/issueish.js @@ -2,14 +2,17 @@ import {URL} from 'url'; import moment from 'moment'; import {category} from '../views/pr-statuses-view'; +import {GHOST_USER} from '../helpers'; export default class Issueish { constructor(data) { + const author = data.author || GHOST_USER; + this.number = data.number; this.title = data.title; this.url = new URL(data.url); - this.authorLogin = data.author.login; - this.authorAvatarURL = new URL(data.author.avatarUrl); + this.authorLogin = author.login; + this.authorAvatarURL = new URL(author.avatarUrl); this.createdAt = moment(data.createdAt, moment.ISO_8601); this.headRefName = data.headRefName; this.headRepositoryID = data.repository.id; diff --git a/lib/views/issue-detail-view.js b/lib/views/issue-detail-view.js index 34f512b335..225e190644 100644 --- a/lib/views/issue-detail-view.js +++ b/lib/views/issue-detail-view.js @@ -10,6 +10,7 @@ import IssueishBadge from '../views/issueish-badge'; import GithubDotcomMarkdown from '../views/github-dotcom-markdown'; import PeriodicRefresher from '../periodic-refresher'; import {addEvent} from '../reporter-proxy'; +import {GHOST_USER} from '../helpers'; export class BareIssueDetailView extends React.Component { static propTypes = { @@ -99,17 +100,19 @@ export class BareIssueDetailView extends React.Component { render() { const repo = this.props.repository; const issue = this.props.issue; + const author = issue.author || GHOST_USER; + return (
- + {issue.author.login}
diff --git a/lib/views/pr-detail-view.js b/lib/views/pr-detail-view.js index 9aa879f279..87b91f0785 100644 --- a/lib/views/pr-detail-view.js +++ b/lib/views/pr-detail-view.js @@ -18,7 +18,7 @@ import CheckoutButton from './checkout-button'; import PullRequestCommitsView from '../views/pr-commits-view'; import PullRequestStatusesView from '../views/pr-statuses-view'; import ReviewsFooterView from '../views/reviews-footer-view'; -import {PAGE_SIZE} from '../helpers'; +import {PAGE_SIZE, GHOST_USER} from '../helpers'; export class BarePullRequestDetailView extends React.Component { static propTypes = { @@ -52,7 +52,7 @@ export class BarePullRequestDetailView extends React.Component { login: PropTypes.string.isRequired, avatarUrl: PropTypes.string.isRequired, url: PropTypes.string.isRequired, - }).isRequired, + }), }).isRequired, // Local model objects @@ -119,12 +119,14 @@ export class BarePullRequestDetailView extends React.Component { } renderPrMetadata(pullRequest, repo) { + const author = this.getAuthor(pullRequest); + return ( {pullRequest.isCrossRepository ? `${repo.owner.login}/${pullRequest.baseRefName}` : pullRequest.baseRefName}{' ‹ '} {pullRequest.isCrossRepository ? - `${pullRequest.author.login}/${pullRequest.headRefName}` : pullRequest.headRefName} + `${author.login}/${pullRequest.headRefName}` : pullRequest.headRefName} ); } @@ -232,6 +234,7 @@ export class BarePullRequestDetailView extends React.Component { render() { const repo = this.props.repository; const pullRequest = this.props.pullRequest; + const author = this.getAuthor(pullRequest); return (
@@ -239,11 +242,11 @@ export class BarePullRequestDetailView extends React.Component {
@@ -335,6 +338,10 @@ export class BarePullRequestDetailView extends React.Component { this.setState({refreshing: false}); }, {force: true}); } + + getAuthor(pullRequest) { + return pullRequest.author || GHOST_USER; + } } export default createRefetchContainer(BarePullRequestDetailView, { diff --git a/lib/views/reviews-view.js b/lib/views/reviews-view.js index ff83eb86ac..2baa24e4c1 100644 --- a/lib/views/reviews-view.js +++ b/lib/views/reviews-view.js @@ -17,7 +17,7 @@ import CheckoutButton from './checkout-button'; import Timeago from './timeago'; import Octicon from '../atom/octicon'; import RefHolder from '../models/ref-holder'; -import {toNativePathSep} from '../helpers'; +import {toNativePathSep, GHOST_USER} from '../helpers'; import {addEvent} from '../reporter-proxy'; const authorAssociationText = { @@ -270,16 +270,17 @@ export default class ReviewsView extends React.Component { return null; } - const reviewAuthor = {avatarUrl: '', login: '', ...review.author}; + const author = review.author || GHOST_USER; + return (
{reviewAuthor.login} - {reviewAuthor.login} + {author.login} {copy} {this.renderEditedLink(review)} {this.renderAuthorAssociation(review)} @@ -383,7 +384,7 @@ export default class ReviewsView extends React.Component { } }; - const rootCommentAuthor = {avatarUrl: '', login: '', ...rootComment.author}; + const author = rootComment.author || GHOST_USER; return (
{dir ? path.sep : ''}{base} {positionText} {rootCommentAuthor.login} @@ -542,16 +543,17 @@ export default class ReviewsView extends React.Component { } const commentClass = cx('github-Review-comment', {'github-Review-comment--pending': comment.state === 'PENDING'}); - const commentAuthor = {avatarUrl: '', login: '', ...comment.author}; + const author = comment.author || GHOST_USER; + return (
- +
diff --git a/lib/views/timeline-items/commit-comment-view.js b/lib/views/timeline-items/commit-comment-view.js index 81685aa6de..6c97c2117b 100644 --- a/lib/views/timeline-items/commit-comment-view.js +++ b/lib/views/timeline-items/commit-comment-view.js @@ -5,6 +5,7 @@ import PropTypes from 'prop-types'; import Octicon from '../../atom/octicon'; import Timeago from '../timeago'; import GithubDotcomMarkdown from '../github-dotcom-markdown'; +import {GHOST_USER} from '../../helpers'; export class BareCommitCommentView extends React.Component { static propTypes = { @@ -15,31 +16,33 @@ export class BareCommitCommentView extends React.Component { render() { const comment = this.props.item; + const author = comment.author || GHOST_USER; + return (
{this.props.isReply ? null : } {comment.author.login} - {this.renderHeader(comment)} + {this.renderHeader(comment, author)}
); } - renderHeader(comment) { + renderHeader(comment, author) { if (this.props.isReply) { return ( - {comment.author.login} replied + {author.login} replied ); } else { return ( - {comment.author.login} commented {this.renderPath()} in + {author.login} commented {this.renderPath()} in {' '}{comment.commit.oid.substr(0, 7)} ); diff --git a/lib/views/timeline-items/issue-comment-view.js b/lib/views/timeline-items/issue-comment-view.js index 0489cdb32f..b9efe0c188 100644 --- a/lib/views/timeline-items/issue-comment-view.js +++ b/lib/views/timeline-items/issue-comment-view.js @@ -5,6 +5,7 @@ import PropTypes from 'prop-types'; import Octicon from '../../atom/octicon'; import Timeago from '../timeago'; import GithubDotcomMarkdown from '../github-dotcom-markdown'; +import {GHOST_USER} from '../../helpers'; export class BareIssueCommentView extends React.Component { static propTypes = { @@ -22,19 +23,17 @@ export class BareIssueCommentView extends React.Component { render() { const comment = this.props.item; - const author = comment.author; + const author = comment.author || GHOST_USER; return (
- {author && - {comment.author.login} - } + {author.login} - {author ? author.login : 'someone'} commented + {author.login} commented {' '}
diff --git a/test/builder/graphql/issue.js b/test/builder/graphql/issue.js index 09314d0200..5c3ba12428 100644 --- a/test/builder/graphql/issue.js +++ b/test/builder/graphql/issue.js @@ -18,7 +18,7 @@ export const IssueBuilder = createSpecBuilderClass('Issue', { number: {default: 123}, state: {default: 'OPEN'}, bodyHTML: {default: '

HI

'}, - author: {linked: UserBuilder}, + author: {linked: UserBuilder, default: null, nullable: true}, reactionGroups: {linked: ReactionGroupBuilder, plural: true, singularName: 'reactionGroup'}, viewerCanReact: {default: true}, timeline: {linked: createConnectionBuilderClass('IssueTimeline', IssueTimelineItemBuilder)}, diff --git a/test/builder/graphql/pr.js b/test/builder/graphql/pr.js index b4d1b8d759..fc272e1996 100644 --- a/test/builder/graphql/pr.js +++ b/test/builder/graphql/pr.js @@ -29,11 +29,11 @@ export const CommentBuilder = createSpecBuilderClass('PullRequestReviewComment', path: {default: 'first.txt'}, position: {default: 0, nullable: true}, diffHunk: {default: '@ -1,4 +1,5 @@'}, - author: {linked: UserBuilder}, + author: {linked: UserBuilder, default: null, nullable: true}, reactionGroups: {linked: ReactionGroupBuilder, plural: true, singularName: 'reactionGroup'}, url: {default: 'https://github.com/atom/github/pull/1829/files#r242224689'}, createdAt: {default: '2018-12-27T17:51:17Z'}, - lastEditedAt: {default: null}, + lastEditedAt: {default: null, nullable: true}, bodyHTML: {default: 'Lorem ipsum dolor sit amet, te urbanitas appellantur est.'}, replyTo: {default: null, nullable: true}, isMinimized: {default: false}, @@ -60,11 +60,11 @@ export const ReviewBuilder = createSpecBuilderClass('PullRequestReview', { __typename: {default: 'PullRequestReview'}, id: {default: nextID}, submittedAt: {default: '2018-12-28T20:40:55Z'}, - lastEditedAt: {default: null}, + lastEditedAt: {default: null, nullable: true}, url: {default: 'https://github.com/atom/github/pull/1995#pullrequestreview-223120384'}, bodyHTML: {default: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit'}, state: {default: 'COMMENTED'}, - author: {linked: UserBuilder}, + author: {linked: UserBuilder, default: null, nullable: true}, comments: {linked: CommentConnectionBuilder}, viewerCanReact: {default: true}, reactionGroups: {linked: ReactionGroupBuilder, plural: true, singularName: 'reactionGroup'}, @@ -98,7 +98,7 @@ export const PullRequestBuilder = createSpecBuilderClass('PullRequest', { const number = f.number || 1; return `https://github.com/${ownerLogin}/${repoName}/pull/${number}`; }}, - author: {linked: UserBuilder}, + author: {linked: UserBuilder, nullable: true, default: null}, repository: {linked: RepositoryBuilder}, headRepository: {linked: RepositoryBuilder, nullable: true}, headRepositoryOwner: {linked: UserBuilder}, diff --git a/test/builder/graphql/timeline.js b/test/builder/graphql/timeline.js index 1b59689311..b10c1fba49 100644 --- a/test/builder/graphql/timeline.js +++ b/test/builder/graphql/timeline.js @@ -16,7 +16,7 @@ export const StatusBuilder = createSpecBuilderClass('Status', { export const CommitBuilder = createSpecBuilderClass('Commit', { id: {default: nextID}, - author: {linked: UserBuilder}, + author: {linked: UserBuilder, default: null, nullable: true}, committer: {linked: UserBuilder}, authoredByCommitter: {default: true}, sha: {default: '0000000000000000000000000000000000000000'}, @@ -32,7 +32,7 @@ export const CommitBuilder = createSpecBuilderClass('Commit', { export const CommitCommentBuilder = createSpecBuilderClass('CommitComment', { id: {default: nextID}, - author: {linked: UserBuilder}, + author: {linked: UserBuilder, default: null, nullable: true}, commit: {linked: CommitBuilder}, bodyHTML: {default: 'comment body'}, createdAt: {default: '2019-01-01T10:00:00Z'}, @@ -61,7 +61,7 @@ export const HeadRefForcePushedEventBuilder = createSpecBuilderClass('HeadRefFor }, 'Node'); export const IssueCommentBuilder = createSpecBuilderClass('IssueComment', { - author: {linked: UserBuilder}, + author: {linked: UserBuilder, default: null, nullable: true}, bodyHTML: {default: 'issue comment'}, createdAt: {default: '2019-01-01T10:00:00Z'}, url: {default: 'https://github.com/atom/github/issue/123'}, diff --git a/test/containers/issueish-tooltip-container.test.js b/test/containers/issueish-tooltip-container.test.js new file mode 100644 index 0000000000..22974f40ec --- /dev/null +++ b/test/containers/issueish-tooltip-container.test.js @@ -0,0 +1,58 @@ +import React from 'react'; +import {shallow} from 'enzyme'; + +import {BareIssueishTooltipContainer} from '../../lib/containers/issueish-tooltip-container'; +import {pullRequestBuilder} from '../builder/graphql/pr'; +import {GHOST_USER} from '../../lib/helpers'; + +import pullRequestsQuery from '../../lib/containers/__generated__/issueishTooltipContainer_resource.graphql'; + +describe('IssueishTooltipContainer', function() { + function buildApp(override = {}) { + const props = { + ...override, + }; + + return ; + } + + it('renders information about an issueish', function() { + const wrapper = shallow(buildApp({ + resource: pullRequestBuilder(pullRequestsQuery) + .state('OPEN') + .number(5) + .title('Fix all the things!') + .repository(r => { + r.owner(o => o.login('owner')); + r.name('repo'); + }) + .author(a => { + a.login('user'); + a.avatarUrl('https://avatars2.githubusercontent.com/u/0?v=12'); + }) + .build(), + })); + + assert.strictEqual(wrapper.find('.author-avatar').prop('src'), 'https://avatars2.githubusercontent.com/u/0?v=12'); + assert.strictEqual(wrapper.find('.author-avatar').prop('alt'), 'user'); + assert.strictEqual(wrapper.find('.issueish-title').text(), 'Fix all the things!'); + assert.strictEqual(wrapper.find('.issueish-link').text(), 'owner/repo#5'); + }); + + it('shows ghost user as author if none is provided', function() { + const wrapper = shallow(buildApp({ + resource: pullRequestBuilder(pullRequestsQuery) + .state('OPEN') + .number(5) + .title('Fix all the things!') + .repository(r => { + r.owner(o => o.login('owner')); + r.name('repo'); + }) + .build(), + })); + + assert.strictEqual(wrapper.find('.author-avatar').prop('src'), GHOST_USER.avatarUrl); + assert.strictEqual(wrapper.find('.author-avatar').prop('alt'), GHOST_USER.login); + }); +}); diff --git a/test/fixtures/factories/commit-comment-thread-results.js b/test/fixtures/factories/commit-comment-thread-results.js index bcbb2e7e18..547bf06676 100644 --- a/test/fixtures/factories/commit-comment-thread-results.js +++ b/test/fixtures/factories/commit-comment-thread-results.js @@ -6,6 +6,7 @@ export function createCommitComment(opts = {}) { const o = { id: idGen.generate('comment-comment'), commitOid: '1234abcd', + includeAuthor: true, authorLogin: 'author0', authorAvatarUrl: 'https://avatars2.githubusercontent.com/u/0?v=12', bodyHTML: '

body

', @@ -14,14 +15,9 @@ export function createCommitComment(opts = {}) { ...opts, }; - return { + const comment = { id: o.id, - author: { - __typename: 'User', - id: idGen.generate('user'), - login: o.authorLogin, - avatarUrl: o.authorAvatarUrl, - }, + author: null, commit: { oid: o.commitOid, }, @@ -29,6 +25,17 @@ export function createCommitComment(opts = {}) { createdAt: o.createdAt, path: o.commentPath, }; + + if (o.includeAuthor) { + comment.author = { + __typename: 'User', + id: idGen.generate('user'), + login: o.authorLogin, + avatarUrl: o.authorAvatarUrl, + } + } + + return comment; } export function createCommitCommentThread(opts = {}) { diff --git a/test/fixtures/props/issueish-pane-props.js b/test/fixtures/props/issueish-pane-props.js index fa9124b24c..13137a7bcc 100644 --- a/test/fixtures/props/issueish-pane-props.js +++ b/test/fixtures/props/issueish-pane-props.js @@ -96,6 +96,7 @@ export function pullRequestDetailViewProps(opts, overrides = {}) { pullRequestTitle: 'title', pullRequestBodyHTML: '

body

', pullRequestBaseRef: 'master', + includeAuthor: true, pullRequestAuthorLogin: 'author', pullRequestAuthorAvatarURL: 'https://avatars3.githubusercontent.com/u/000?v=4', issueishNumber: 1, @@ -122,7 +123,7 @@ export function pullRequestDetailViewProps(opts, overrides = {}) { }; }; - return { + const props = { relay: { refetch: o.relayRefetch, }, @@ -158,11 +159,7 @@ export function pullRequestDetailViewProps(opts, overrides = {}) { url: `https://github.com/${o.pullRequestHeadRepoOwner}/${o.pullRequestHeadRepoName}`, sshUrl: `git@github.com:${o.pullRequestHeadRepoOwner}/${o.pullRequestHeadRepoName}.git`, }, - author: { - login: o.pullRequestAuthorLogin, - avatarUrl: o.pullRequestAuthorAvatarURL, - url: `https://github.com/${o.pullRequestAuthorLogin}`, - }, + author: null, reactionGroups: o.pullRequestReactions.map(buildReaction), }, @@ -197,6 +194,16 @@ export function pullRequestDetailViewProps(opts, overrides = {}) { ...overrides, }; + + if (o.includeAuthor) { + props.pullRequest.author = { + login: o.pullRequestAuthorLogin, + avatarUrl: o.pullRequestAuthorAvatarURL, + url: `https://github.com/${o.pullRequestAuthorLogin}`, + }; + } + + return props; } export function issueDetailViewProps(opts, overrides = {}) { @@ -208,6 +215,7 @@ export function issueDetailViewProps(opts, overrides = {}) { issueTitle: 'title', issueBodyHTML: '

body

', issueBaseRef: 'master', + includeAuthor: true, issueAuthorLogin: 'author', issueAuthorAvatarURL: 'https://avatars3.githubusercontent.com/u/000?v=4', issueishNumber: 1, @@ -230,7 +238,7 @@ export function issueDetailViewProps(opts, overrides = {}) { }; }; - return { + const props = { relay: { refetch: o.relayRefetch, }, @@ -259,11 +267,7 @@ export function issueDetailViewProps(opts, overrides = {}) { url: `https://github.com/${o.issueHeadRepoOwner}/${o.issueHeadRepoName}`, sshUrl: `git@github.com:${o.issueHeadRepoOwner}/${o.issueHeadRepoName}.git`, }, - author: { - login: o.issueAuthorLogin, - avatarUrl: o.issueAuthorAvatarURL, - url: `https://github.com/${o.issueAuthorLogin}`, - }, + author: null, reactionGroups: o.issueReactions.map(buildReaction), }, @@ -272,4 +276,14 @@ export function issueDetailViewProps(opts, overrides = {}) { ...overrides, }; + + if (o.includeAuthor) { + props.issue.author = { + login: o.issueAuthorLogin, + avatarUrl: o.issueAuthorAvatarURL, + url: `https://github.com/${o.issueAuthorLogin}`, + }; + } + + return props; } diff --git a/test/views/issue-detail-view.test.js b/test/views/issue-detail-view.test.js index d722b68006..c4c872edb9 100644 --- a/test/views/issue-detail-view.test.js +++ b/test/views/issue-detail-view.test.js @@ -5,6 +5,7 @@ import {BareIssueDetailView} from '../../lib/views/issue-detail-view'; import EmojiReactionsController from '../../lib/controllers/emoji-reactions-controller'; import {issueDetailViewProps} from '../fixtures/props/issueish-pane-props'; import * as reporterProxy from '../../lib/reporter-proxy'; +import {GHOST_USER} from '../../lib/helpers'; describe('IssueDetailView', function() { function buildApp(opts, overrideProps = {}) { @@ -53,6 +54,14 @@ describe('IssueDetailView', function() { assert.notOk(wrapper.find('ForwardRef(Relay(IssueishTimelineView))').prop('pullRequest')); }); + it('displays ghost author if author is null', function() { + const wrapper = shallow(buildApp({includeAuthor: false})); + + assert.strictEqual(wrapper.find('.github-IssueishDetailView-avatar').prop('href'), GHOST_USER.url); + assert.strictEqual(wrapper.find('.github-IssueishDetailView-avatarImage').prop('src'), GHOST_USER.avatarUrl); + assert.strictEqual(wrapper.find('.github-IssueishDetailView-avatarImage').prop('alt'), GHOST_USER.login); + }); + it('renders a placeholder issue body', function() { const wrapper = shallow(buildApp({issueBodyHTML: null})); assert.isTrue(wrapper.find('GithubDotcomMarkdown').someWhere(n => /No description/.test(n.prop('html')))); diff --git a/test/views/pr-detail-view.test.js b/test/views/pr-detail-view.test.js index 767559ad47..d2c8a0ade8 100644 --- a/test/views/pr-detail-view.test.js +++ b/test/views/pr-detail-view.test.js @@ -16,6 +16,7 @@ import * as reporterProxy from '../../lib/reporter-proxy'; import {repositoryBuilder} from '../builder/graphql/repository'; import {pullRequestBuilder} from '../builder/graphql/pr'; import {cloneRepository, buildRepository} from '../helpers'; +import {GHOST_USER} from '../../lib/helpers'; import repositoryQuery from '../../lib/views/__generated__/prDetailView_repository.graphql'; import pullRequestQuery from '../../lib/views/__generated__/prDetailView_pullRequest.graphql'; @@ -139,6 +140,14 @@ describe('PullRequestDetailView', function() { assert.strictEqual(wrapper.find('.github-IssueishDetailView-headRefName').text(), 'tt/heck-yes'); }); + it('renders ghost user if author is null', function() { + const wrapper = shallow(buildApp({})); + + assert.strictEqual(wrapper.find('.github-IssueishDetailView-avatar').prop('href'), GHOST_USER.url); + assert.strictEqual(wrapper.find('.github-IssueishDetailView-avatarImage').prop('src'), GHOST_USER.avatarUrl); + assert.strictEqual(wrapper.find('.github-IssueishDetailView-avatarImage').prop('alt'), GHOST_USER.login); + }); + it('renders footer and passes review thread props through', function() { const openReviews = sinon.spy(); diff --git a/test/views/reviews-view.test.js b/test/views/reviews-view.test.js index 74bd870fbc..3b3d8a09cf 100644 --- a/test/views/reviews-view.test.js +++ b/test/views/reviews-view.test.js @@ -9,6 +9,7 @@ import {aggregatedReviewsBuilder} from '../builder/graphql/aggregated-reviews-bu import {multiFilePatchBuilder} from '../builder/patch'; import {checkoutStates} from '../../lib/controllers/pr-checkout-controller'; import * as reporterProxy from '../../lib/reporter-proxy'; +import {GHOST_USER} from '../../lib/helpers'; describe('ReviewsView', function() { let atomEnv; @@ -113,6 +114,33 @@ describe('ReviewsView', function() { assert.lengthOf(wrapper.find('details.github-Review'), 2); }); + it('displays ghost user information if author is null', function() { + const {summaries, commentThreads} = aggregatedReviewsBuilder() + .addReviewSummary(r => r.id(0)) + .addReviewThread(t => t.addComment().addComment()) + .build(); + + const wrapper = shallow(buildApp({summaries, commentThreads})); + + // summary + assert.strictEqual(wrapper.find('.github-ReviewSummary-username').text(), GHOST_USER.login); + assert.strictEqual(wrapper.find('.github-ReviewSummary-username').prop('href'), GHOST_USER.url); + assert.strictEqual(wrapper.find('.github-ReviewSummary-avatar').prop('src'), GHOST_USER.avatarUrl); + assert.strictEqual(wrapper.find('.github-ReviewSummary-avatar').prop('alt'), GHOST_USER.login); + + // root comment + assert.strictEqual(wrapper.find('.github-Review-username').at(0).text(), GHOST_USER.login); + assert.strictEqual(wrapper.find('.github-Review-username').at(0).prop('href'), GHOST_USER.url); + assert.strictEqual(wrapper.find('.github-Review-avatar').at(0).prop('src'), GHOST_USER.avatarUrl); + assert.strictEqual(wrapper.find('.github-Review-avatar').at(0).prop('alt'), GHOST_USER.login); + + // non-root comment + assert.strictEqual(wrapper.find('.github-Review-username').at(1).text(), GHOST_USER.login); + assert.strictEqual(wrapper.find('.github-Review-username').at(1).prop('href'), GHOST_USER.url); + assert.strictEqual(wrapper.find('.github-Review-avatar').at(1).prop('src'), GHOST_USER.avatarUrl); + assert.strictEqual(wrapper.find('.github-Review-avatar').at(1).prop('alt'), GHOST_USER.login); + }); + it('displays an author association badge for review summaries', function() { const {summaries, commentThreads} = aggregatedReviewsBuilder() .addReviewSummary(r => r.id(0).authorAssociation('MEMBER')) @@ -126,7 +154,6 @@ describe('ReviewsView', function() { const wrapper = shallow(buildApp({summaries, commentThreads})); - const reviews = wrapper.find('.github-ReviewSummary'); assert.lengthOf(reviews, 7); assert.strictEqual(reviews.at(0).find('.github-Review-authorAssociationBadge').text(), 'Member'); diff --git a/test/views/timeline-items/commit-comment-view.test.js b/test/views/timeline-items/commit-comment-view.test.js index 72860039bb..f45f4fccc6 100644 --- a/test/views/timeline-items/commit-comment-view.test.js +++ b/test/views/timeline-items/commit-comment-view.test.js @@ -3,6 +3,7 @@ import {shallow} from 'enzyme'; import {BareCommitCommentView} from '../../../lib/views/timeline-items/commit-comment-view'; import {createCommitComment} from '../../fixtures/factories/commit-comment-thread-results'; +import {GHOST_USER} from '../../../lib/helpers'; describe('CommitCommentView', function() { function buildApp(opts, overloadProps = {}) { @@ -39,6 +40,14 @@ describe('CommitCommentView', function() { assert.strictEqual(wrapper.find('GithubDotcomMarkdown').prop('html'), '

text here

'); }); + it('shows ghost user when author is null', function() { + const wrapper = shallow(buildApp({includeAuthor: false})); + + assert.match(wrapper.find('.comment-message-header').text(), new RegExp(`^${GHOST_USER.login}`)); + assert.strictEqual(wrapper.find('.author-avatar').prop('src'), GHOST_USER.avatarUrl); + assert.strictEqual(wrapper.find('.author-avatar').prop('alt'), GHOST_USER.login); + }); + it('renders a reply comment', function() { const wrapper = shallow(buildApp({ authorLogin: 'me', diff --git a/test/views/timeline-items/issue-comment-view.test.js b/test/views/timeline-items/issue-comment-view.test.js index 4c8a344ddc..ed4e68f1da 100644 --- a/test/views/timeline-items/issue-comment-view.test.js +++ b/test/views/timeline-items/issue-comment-view.test.js @@ -2,6 +2,7 @@ import React from 'react'; import {shallow} from 'enzyme'; import {BareIssueCommentView} from '../../../lib/views/timeline-items/issue-comment-view'; +import {GHOST_USER} from '../../../lib/helpers'; describe('IssueCommentView', function() { function buildApp(opts, overrideProps = {}) { @@ -19,6 +20,7 @@ describe('IssueCommentView', function() { bodyHTML: o.bodyHTML, createdAt: o.createdAt, url: 'https://github.com/aaa/bbb/issues/123', + author: null, }, switchToIssueish: () => {}, ...overrideProps, @@ -49,10 +51,11 @@ describe('IssueCommentView', function() { assert.strictEqual(wrapper.find('GithubDotcomMarkdown').prop('html'), '

body

'); }); - it('renders when no author is provided', function() { + it('renders ghost author info when no author is provided', function() { const wrapper = shallow(buildApp({includeAuthor: false})); - assert.isFalse(wrapper.find('img.author-avatar').exists()); - assert.match(wrapper.find('.comment-message-header').text(), /^someone commented/); + const avatarImg = wrapper.find('img.author-avatar'); + assert.strictEqual(avatarImg.prop('src'), GHOST_USER.avatarUrl); + assert.match(wrapper.find('.comment-message-header').text(), new RegExp(`^${GHOST_USER.login} commented`)); }); });