Skip to content

Commit df93c0e

Browse files
authored
Change labels to only consider reviews from users with push access (#23)
* change approved label to only consider reviews from users with push access * all non-push reviews are ignored by labels
1 parent 37d1234 commit df93c0e

File tree

1 file changed

+27
-12
lines changed

1 file changed

+27
-12
lines changed

src/classes/PullRequest.ts

+27-12
Original file line numberDiff line numberDiff line change
@@ -124,34 +124,45 @@ export default class PullRequest {
124124

125125
if (reviews.length < 1) return 'readyForReview';
126126

127-
const latestReviewsObj: { [key: number]: { state: string; time: number } } =
128-
{};
127+
const pushUsers = (
128+
await this.octokit.repos.listCollaborators({
129+
owner: this.owner,
130+
repo: this.repo,
131+
permission: 'push',
132+
})
133+
).data.map(u => u.id);
134+
135+
const latestReviewsObj: {
136+
[key: number]: { state: string; time: number };
137+
} = {};
129138

130139
for (const r of reviews) {
131140
if (!r?.user?.id || !r.submitted_at) continue;
132141

133142
const user = r.user.id;
134143
const time = new Date(r.submitted_at).getTime();
135144

136-
if (!latestReviewsObj[user]) {
137-
latestReviewsObj[user] = {
138-
state: r.state,
139-
time,
140-
};
145+
if (!pushUsers.includes(user)) continue;
141146

147+
const review = {
148+
state: r.state,
149+
time,
150+
};
151+
152+
if (!latestReviewsObj[user]) {
153+
latestReviewsObj[user] = review;
142154
continue;
143155
}
144156

145157
if (latestReviewsObj[user].time < time) {
146-
latestReviewsObj[user] = {
147-
state: r.state,
148-
time,
149-
};
158+
latestReviewsObj[user] = review;
150159
}
151160
}
152161

153162
const latestReviews = Object.values(latestReviewsObj);
154163

164+
if (!latestReviews.length) return 'readyForReview';
165+
155166
if (latestReviews.filter(r => r.state === 'CHANGES_REQUESTED').length > 0) {
156167
return 'changesRequested';
157168
}
@@ -165,6 +176,10 @@ export default class PullRequest {
165176
return 'needsMoreApprovals';
166177
}
167178

168-
return 'approved';
179+
if (approvingReviews > 0) {
180+
return 'approved';
181+
}
182+
183+
return 'readyForReview';
169184
}
170185
}

0 commit comments

Comments
 (0)