Skip to content

Commit

Permalink
Add support for reopened GitLab MR (matrix-org#935)
Browse files Browse the repository at this point in the history
* 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]>
  • Loading branch information
zecakeh authored May 22, 2024
1 parent 6b039c9 commit e5705e7
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 0 deletions.
1 change: 1 addition & 0 deletions changelog.d/935.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add support for reopened GitLab MR.
1 change: 1 addition & 0 deletions docs/usage/room_configuration/gitlab_project.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ the events marked as default below will be enabled. Otherwise, this is ignored.
- merge_request.close *
- merge_request.merge *
- merge_request.open *
- merge_request.reopen *
- merge_request.review.comments *
- merge_request.review *
- merge_request.review.individual
Expand Down
6 changes: 6 additions & 0 deletions src/Bridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,12 @@ export class Bridge {
(c, data) => c.onMergeRequestOpened(data),
);

this.bindHandlerToQueue<IGitLabWebhookMREvent, GitLabRepoConnection>(
"gitlab.merge_request.reopen",
(data) => connManager.getConnectionsForGitLabRepo(data.project.path_with_namespace),
(c, data) => c.onMergeRequestReopened(data),
);

this.bindHandlerToQueue<IGitLabWebhookMREvent, GitLabRepoConnection>(
"gitlab.merge_request.close",
(data) => connManager.getConnectionsForGitLabRepo(data.project.path_with_namespace),
Expand Down
18 changes: 18 additions & 0 deletions src/Connections/GitlabRepo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ export type GitLabRepoResponseItem = GetConnectionsResponseItem<GitLabRepoConnec

type AllowedEventsNames =
"merge_request.open" |
"merge_request.reopen" |
"merge_request.close" |
"merge_request.merge" |
"merge_request.review" |
Expand All @@ -80,6 +81,7 @@ type AllowedEventsNames =

const AllowedEvents: AllowedEventsNames[] = [
"merge_request.open",
"merge_request.reopen",
"merge_request.close",
"merge_request.merge",
"merge_request.review",
Expand Down Expand Up @@ -565,6 +567,22 @@ export class GitLabRepoConnection extends CommandConnection<GitLabRepoConnection
});
}

public async onMergeRequestReopened(event: IGitLabWebhookMREvent) {
if (this.hookFilter.shouldSkip('merge_request', 'merge_request.reopen') || !this.matchesLabelFilter(event)) {
return;
}
log.info(`onMergeRequestReopened ${this.roomId} ${this.path} #${event.object_attributes.iid}`);
this.validateMREvent(event);
const orgRepoName = event.project.path_with_namespace;
const content = `**${event.user.username}** reopened MR [${orgRepoName}#${event.object_attributes.iid}](${event.object_attributes.url}): "${event.object_attributes.title}"`;
await this.intent.sendEvent(this.roomId, {
msgtype: "m.notice",
body: content,
formatted_body: md.renderInline(content),
format: "org.matrix.custom.html",
});
}

public async onMergeRequestClosed(event: IGitLabWebhookMREvent) {
if (this.hookFilter.shouldSkip('merge_request', 'merge_request.close') || !this.matchesLabelFilter(event)) {
return;
Expand Down
1 change: 1 addition & 0 deletions tests/connections/GitlabRepoTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ describe("GitLabRepoConnection", () => {
path: "bar/baz",
enableHooks: [
"merge_request.open",
"merge_request.reopen",
"merge_request.close",
"merge_request.merge",
"merge_request.review",
Expand Down
1 change: 1 addition & 0 deletions web/components/roomConfig/GitlabRepoConfig.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ const ConnectionConfiguration: FunctionComponent<ConnectionConfigurationProps<ne
<EventHookCheckbox enabledHooks={enabledHooks} hookEventName="merge_request" onChange={toggleEnabledHook}>Merge requests</EventHookCheckbox>
<ul>
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.open" onChange={toggleEnabledHook}>Opened</EventHookCheckbox>
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.reopen" onChange={toggleEnabledHook}>Reopened</EventHookCheckbox>
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.close" onChange={toggleEnabledHook}>Closed</EventHookCheckbox>
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.merge" onChange={toggleEnabledHook}>Merged</EventHookCheckbox>
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.review" onChange={toggleEnabledHook}>Completed review</EventHookCheckbox>
Expand Down

0 comments on commit e5705e7

Please sign in to comment.