|
4 | 4 | "context" |
5 | 5 | "fmt" |
6 | 6 | "io" |
| 7 | + "maps" |
7 | 8 | "slices" |
8 | 9 | "strings" |
9 | 10 | "time" |
@@ -120,12 +121,22 @@ func (gh *Client) InitReviews() error { |
120 | 121 | allReviews = f.Filtered(allReviews, func(review *github.PullRequestReview) bool { |
121 | 122 | return review.User.GetLogin() != gh.PR.User.GetLogin() |
122 | 123 | }) |
| 124 | + // use descending chronological order (default ascending) |
| 125 | + slices.Reverse(allReviews) |
123 | 126 | gh.reviews = allReviews |
124 | 127 | return nil |
125 | 128 | } |
126 | 129 |
|
127 | 130 | func (gh *Client) approvals() []*github.PullRequestReview { |
| 131 | + seen := make(map[string]bool, 0) |
128 | 132 | approvals := f.Filtered(gh.reviews, func(approval *github.PullRequestReview) bool { |
| 133 | + userName := approval.GetUser().GetLogin() |
| 134 | + if _, ok := seen[userName]; ok { |
| 135 | + // we only care about the most recent reviews for each user |
| 136 | + return false |
| 137 | + } else { |
| 138 | + seen[userName] = true |
| 139 | + } |
129 | 140 | return approval.GetState() == "APPROVED" |
130 | 141 | }) |
131 | 142 | return approvals |
@@ -206,15 +217,17 @@ func (gh *Client) GetAlreadyReviewed() ([]string, error) { |
206 | 217 | } |
207 | 218 |
|
208 | 219 | func reviewerAlreadyReviewed(reviews []*github.PullRequestReview, userReviewerMap ghUserReviewerMap) []string { |
209 | | - reviewsReviewers := make([]string, 0, len(reviews)) |
| 220 | + reviewsReviewers := make(map[string]bool, len(reviews)) |
210 | 221 | for _, review := range reviews { |
211 | 222 | reviewingUser := review.GetUser().GetLogin() |
212 | 223 | if reviewers, ok := userReviewerMap[reviewingUser]; ok { |
213 | | - reviewsReviewers = append(reviewsReviewers, reviewers...) |
| 224 | + for _, reviewer := range reviewers { |
| 225 | + reviewsReviewers[reviewer] = true |
| 226 | + } |
214 | 227 | } |
215 | 228 | } |
216 | 229 |
|
217 | | - return reviewsReviewers |
| 230 | + return slices.Collect(maps.Keys(reviewsReviewers)) |
218 | 231 | } |
219 | 232 |
|
220 | 233 | func (gh *Client) GetCurrentlyRequested() ([]string, error) { |
|
0 commit comments