Skip to content

Commit e5705e7

Browse files
authored
Add support for reopened GitLab MR (matrix-org#935)
* Add support for reopened GitLab MR Signed-off-by: Kévin Commaille <[email protected]> * Add changelog Signed-off-by: Kévin Commaille <[email protected]> --------- Signed-off-by: Kévin Commaille <[email protected]>
1 parent 6b039c9 commit e5705e7

File tree

6 files changed

+28
-0
lines changed

6 files changed

+28
-0
lines changed

changelog.d/935.feature

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add support for reopened GitLab MR.

docs/usage/room_configuration/gitlab_project.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ the events marked as default below will be enabled. Otherwise, this is ignored.
4646
- merge_request.close *
4747
- merge_request.merge *
4848
- merge_request.open *
49+
- merge_request.reopen *
4950
- merge_request.review.comments *
5051
- merge_request.review *
5152
- merge_request.review.individual

src/Bridge.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,12 @@ export class Bridge {
344344
(c, data) => c.onMergeRequestOpened(data),
345345
);
346346

347+
this.bindHandlerToQueue<IGitLabWebhookMREvent, GitLabRepoConnection>(
348+
"gitlab.merge_request.reopen",
349+
(data) => connManager.getConnectionsForGitLabRepo(data.project.path_with_namespace),
350+
(c, data) => c.onMergeRequestReopened(data),
351+
);
352+
347353
this.bindHandlerToQueue<IGitLabWebhookMREvent, GitLabRepoConnection>(
348354
"gitlab.merge_request.close",
349355
(data) => connManager.getConnectionsForGitLabRepo(data.project.path_with_namespace),

src/Connections/GitlabRepo.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ export type GitLabRepoResponseItem = GetConnectionsResponseItem<GitLabRepoConnec
6363

6464
type AllowedEventsNames =
6565
"merge_request.open" |
66+
"merge_request.reopen" |
6667
"merge_request.close" |
6768
"merge_request.merge" |
6869
"merge_request.review" |
@@ -80,6 +81,7 @@ type AllowedEventsNames =
8081

8182
const AllowedEvents: AllowedEventsNames[] = [
8283
"merge_request.open",
84+
"merge_request.reopen",
8385
"merge_request.close",
8486
"merge_request.merge",
8587
"merge_request.review",
@@ -565,6 +567,22 @@ export class GitLabRepoConnection extends CommandConnection<GitLabRepoConnection
565567
});
566568
}
567569

570+
public async onMergeRequestReopened(event: IGitLabWebhookMREvent) {
571+
if (this.hookFilter.shouldSkip('merge_request', 'merge_request.reopen') || !this.matchesLabelFilter(event)) {
572+
return;
573+
}
574+
log.info(`onMergeRequestReopened ${this.roomId} ${this.path} #${event.object_attributes.iid}`);
575+
this.validateMREvent(event);
576+
const orgRepoName = event.project.path_with_namespace;
577+
const content = `**${event.user.username}** reopened MR [${orgRepoName}#${event.object_attributes.iid}](${event.object_attributes.url}): "${event.object_attributes.title}"`;
578+
await this.intent.sendEvent(this.roomId, {
579+
msgtype: "m.notice",
580+
body: content,
581+
formatted_body: md.renderInline(content),
582+
format: "org.matrix.custom.html",
583+
});
584+
}
585+
568586
public async onMergeRequestClosed(event: IGitLabWebhookMREvent) {
569587
if (this.hookFilter.shouldSkip('merge_request', 'merge_request.close') || !this.matchesLabelFilter(event)) {
570588
return;

tests/connections/GitlabRepoTest.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ describe("GitLabRepoConnection", () => {
9797
path: "bar/baz",
9898
enableHooks: [
9999
"merge_request.open",
100+
"merge_request.reopen",
100101
"merge_request.close",
101102
"merge_request.merge",
102103
"merge_request.review",

web/components/roomConfig/GitlabRepoConfig.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ const ConnectionConfiguration: FunctionComponent<ConnectionConfigurationProps<ne
9797
<EventHookCheckbox enabledHooks={enabledHooks} hookEventName="merge_request" onChange={toggleEnabledHook}>Merge requests</EventHookCheckbox>
9898
<ul>
9999
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.open" onChange={toggleEnabledHook}>Opened</EventHookCheckbox>
100+
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.reopen" onChange={toggleEnabledHook}>Reopened</EventHookCheckbox>
100101
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.close" onChange={toggleEnabledHook}>Closed</EventHookCheckbox>
101102
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.merge" onChange={toggleEnabledHook}>Merged</EventHookCheckbox>
102103
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.review" onChange={toggleEnabledHook}>Completed review</EventHookCheckbox>

0 commit comments

Comments
 (0)