Skip to content

Commit 222e2bd

Browse files
authored
Support for multi-assignees (#33)
1 parent 9c315d1 commit 222e2bd

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

src/GitlabApi.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,19 @@ export enum MergeState {
2121
Merged = 'merged',
2222
}
2323

24+
interface MergeRequestAssignee {
25+
id: number;
26+
}
27+
2428
export interface MergeRequest {
2529
id: number;
2630
iid: number;
2731
title: string;
2832
author: {
2933
id: number;
3034
};
31-
assignee: {
32-
id: number;
33-
} | null;
35+
assignee: MergeRequestAssignee | null;
36+
assignees: MergeRequestAssignee[];
3437
project_id: number;
3538
merge_status: MergeStatus;
3639
web_url: string;

src/MergeRequestAcceptor.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ export enum BotLabels {
8585
}
8686

8787
const containsLabel = (labels: string[], label: BotLabels) => labels.includes(label);
88+
const containsAssignedUser = (mergeRequest: MergeRequest, user: User) => {
89+
const userIds = mergeRequest.assignees.map((assignee) => assignee.id);
90+
return userIds.includes(user.id);
91+
};
8892
const defaultPipelineValidationRetries = 5;
8993

9094
export const filterBotLabels = (labels: BotLabels[]) => {
@@ -101,7 +105,7 @@ export const acceptMergeRequest = async (gitlabApi: GitlabApi, mergeRequest: Mer
101105
const tasks: Array<Promise<any>> = [sleep(options.ciInterval)];
102106
mergeRequestInfo = await gitlabApi.getMergeRequestInfo(mergeRequest.project_id, mergeRequest.iid);
103107

104-
if (mergeRequestInfo.assignee !== null && mergeRequestInfo.assignee.id !== user.id) {
108+
if (!containsAssignedUser(mergeRequestInfo, user)) {
105109
return {
106110
kind: AcceptMergeRequestResultKind.ReassignedMergeRequest,
107111
mergeRequestInfo,

0 commit comments

Comments
 (0)