From cc8611c294127eba8c2cee56405235e157a0a377 Mon Sep 17 00:00:00 2001 From: Toliver Jue Date: Tue, 27 Jul 2021 22:04:00 +0900 Subject: [PATCH 1/4] use review decision --- src/components/PullRequestStatus.tsx | 35 ++++++++++++++++++++-------- src/filtering/status.ts | 8 ++++++- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/components/PullRequestStatus.tsx b/src/components/PullRequestStatus.tsx index 9e493c61..ed01636c 100644 --- a/src/components/PullRequestStatus.tsx +++ b/src/components/PullRequestStatus.tsx @@ -48,12 +48,18 @@ const MERGEABLE = ( ); -const APPROVED_BY_EVERONE = ( +const APPROVED_BY_EVERYONE = ( Approved by everyone ); +const APPROVED = ( + + Approved + +); + const CHECK_STATUS_PASSED = ( Checks Pass @@ -146,6 +152,7 @@ function getIncomingStateBadges(state: IncomingState): JSX.Element[] { if (state.newCommit) { badges.push(NEW_COMMIT); } + return badges; } @@ -156,15 +163,23 @@ function getOutgoingStateBadges(state: OutgoingState): JSX.Element[] { if (state.mergeable) { badges.push(MERGEABLE); } - if (state.approvedByEveryone) { - badges.push(APPROVED_BY_EVERONE); - } else if (state.changesRequested) { - badges.push(CHANGES_REQUESTED); - } else { - badges.push(WAITING_FOR_REVIEW); - if (state.noReviewers) { - badges.push(NO_REVIEWER_ASSIGNED); - } + + switch (state.reviewDecision) { + case "APPROVED": + badges.push(APPROVED); + if (state.approvedByEveryone) { + badges.push(APPROVED_BY_EVERYONE); + } + break; + case "CHANGES_REQUESTED": + badges.push(CHANGES_REQUESTED); + break; + case "REVIEW_REQUIRED": + badges.push(WAITING_FOR_REVIEW); + if (state.noReviewers) { + badges.push(NO_REVIEWER_ASSIGNED); + } + break; } return badges; diff --git a/src/filtering/status.ts b/src/filtering/status.ts index a3c22ed1..ba905b57 100644 --- a/src/filtering/status.ts +++ b/src/filtering/status.ts @@ -1,4 +1,4 @@ -import { CheckStatus } from "../github-api/api"; +import { CheckStatus, ReviewDecision } from "../github-api/api"; import { PullRequest, ReviewState } from "../storage/loaded-state"; import { userPreviouslyReviewed } from "./reviewed"; import { @@ -113,6 +113,7 @@ function outgoingPullRequestState( mergeable: pr.mergeable === true, approvedByEveryone: states.has("APPROVED") && states.size === 1, checkStatus: pr.checkStatus, + reviewDecision: pr.reviewDecision, }; } @@ -213,6 +214,11 @@ export interface OutgoingState { * Current check status of tests. */ checkStatus?: CheckStatus; + + /** + * FIXME + */ + reviewDecision: ReviewDecision; } export function isReviewRequired( From 977a17006b0010887867275b95282ad6c2e3522a Mon Sep 17 00:00:00 2001 From: Toliver Jue Date: Wed, 11 Aug 2021 11:31:28 +0900 Subject: [PATCH 2/4] get review decision visible --- src/components/PullRequestStatus.tsx | 16 +++++++++++++++- src/filtering/status.ts | 6 ++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/components/PullRequestStatus.tsx b/src/components/PullRequestStatus.tsx index ed01636c..d3bf42ff 100644 --- a/src/components/PullRequestStatus.tsx +++ b/src/components/PullRequestStatus.tsx @@ -8,7 +8,7 @@ import { OutgoingState, PullRequestState, } from "../filtering/status"; -import { CheckStatus } from "../github-api/api"; +import { CheckStatus, ReviewDecision } from "../github-api/api"; const StateBox = styled.div` padding: 0 8px; @@ -137,9 +137,23 @@ function getCheckStatusBadge(checkStatus?: CheckStatus): JSX.Element[] { } } +function getReviewDecisionBadge(reviewDecision: ReviewDecision): JSX.Element[] { + switch (reviewDecision) { + case "APPROVED": + return [APPROVED]; + case "CHANGES_REQUESTED": + return [CHANGES_REQUESTED]; + case "REVIEW_REQUIRED": + return [WAITING_FOR_REVIEW] + } + + return [] +} + function getIncomingStateBadges(state: IncomingState): JSX.Element[] { const badges: JSX.Element[] = []; badges.push(...getCheckStatusBadge(state.checkStatus)); + badges.push(...getReviewDecisionBadge(state.reviewDecision)); if (state.newReviewRequested) { badges.push(UNREVIEWED); diff --git a/src/filtering/status.ts b/src/filtering/status.ts index ba905b57..932a1d89 100644 --- a/src/filtering/status.ts +++ b/src/filtering/status.ts @@ -48,6 +48,7 @@ function incomingPullRequestState( directlyAdded: (pr.requestedReviewers || []).includes(currentUserLogin), teams: pr.requestedTeams || [], checkStatus: pr.checkStatus, + reviewDecision: pr.reviewDecision, }; } @@ -163,6 +164,11 @@ export interface IncomingState { * Current check status of tests. */ checkStatus?: CheckStatus; + + /** + * FIXME + */ + reviewDecision: ReviewDecision; } /** From 86b145355010d8b48022ce9894f1de7653ae3d7f Mon Sep 17 00:00:00 2001 From: Toliver Jue Date: Sat, 19 Mar 2022 02:54:12 -0700 Subject: [PATCH 3/4] rm fixme --- src/filtering/status.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/filtering/status.ts b/src/filtering/status.ts index 932a1d89..c3239271 100644 --- a/src/filtering/status.ts +++ b/src/filtering/status.ts @@ -166,7 +166,7 @@ export interface IncomingState { checkStatus?: CheckStatus; /** - * FIXME + * Current review decision. */ reviewDecision: ReviewDecision; } @@ -222,7 +222,7 @@ export interface OutgoingState { checkStatus?: CheckStatus; /** - * FIXME + * Current review decision. */ reviewDecision: ReviewDecision; } From f44160b865af7c14cad991c4d425dcf3ffd23dab Mon Sep 17 00:00:00 2001 From: Toliver Jue Date: Sat, 19 Mar 2022 03:05:37 -0700 Subject: [PATCH 4/4] fix tests --- src/filtering/status.spec.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/filtering/status.spec.ts b/src/filtering/status.spec.ts index 31843cae..40985631 100644 --- a/src/filtering/status.spec.ts +++ b/src/filtering/status.spec.ts @@ -19,6 +19,7 @@ describe("pullRequestState", () => { newCommit: false, authorResponded: false, directlyAdded: true, + reviewDecision: "REVIEW_REQUIRED", teams: [], }); @@ -42,6 +43,7 @@ describe("pullRequestState", () => { newCommit: false, authorResponded: false, directlyAdded: false, + reviewDecision: "REVIEW_REQUIRED", teams: ["team"], }); @@ -62,6 +64,7 @@ describe("pullRequestState", () => { newCommit: false, authorResponded: true, directlyAdded: false, + reviewDecision: "REVIEW_REQUIRED", teams: [], }); @@ -82,6 +85,7 @@ describe("pullRequestState", () => { newCommit: true, authorResponded: false, directlyAdded: false, + reviewDecision: "REVIEW_REQUIRED", teams: [], }); @@ -103,6 +107,7 @@ describe("pullRequestState", () => { newCommit: true, authorResponded: true, directlyAdded: false, + reviewDecision: "REVIEW_REQUIRED", teams: [], }); @@ -122,6 +127,7 @@ describe("pullRequestState", () => { newCommit: false, authorResponded: false, directlyAdded: false, + reviewDecision: "REVIEW_REQUIRED", teams: [], }); @@ -141,6 +147,7 @@ describe("pullRequestState", () => { newCommit: false, authorResponded: false, directlyAdded: false, + reviewDecision: "REVIEW_REQUIRED", teams: [], }); }); @@ -192,6 +199,7 @@ describe("pullRequestState", () => { changesRequested: false, mergeable: false, approvedByEveryone: false, + reviewDecision: "REVIEW_REQUIRED", }); expect( @@ -206,6 +214,7 @@ describe("pullRequestState", () => { changesRequested: false, mergeable: false, approvedByEveryone: false, + reviewDecision: "REVIEW_REQUIRED", }); expect( @@ -224,6 +233,7 @@ describe("pullRequestState", () => { changesRequested: false, mergeable: false, approvedByEveryone: false, + reviewDecision: "REVIEW_REQUIRED", }); expect( @@ -246,6 +256,7 @@ describe("pullRequestState", () => { changesRequested: false, mergeable: true, approvedByEveryone: false, + reviewDecision: "REVIEW_REQUIRED", }); expect( @@ -268,6 +279,7 @@ describe("pullRequestState", () => { changesRequested: false, mergeable: false, approvedByEveryone: true, + reviewDecision: "REVIEW_REQUIRED", }); expect( @@ -290,6 +302,7 @@ describe("pullRequestState", () => { changesRequested: false, mergeable: false, approvedByEveryone: false, + reviewDecision: "REVIEW_REQUIRED", }); expect( @@ -312,6 +325,7 @@ describe("pullRequestState", () => { changesRequested: false, mergeable: false, approvedByEveryone: false, + reviewDecision: "REVIEW_REQUIRED", }); }); });