Add support for reopened GitLab MR (#935)

* Add support for reopened GitLab MR

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>

* Add changelog

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>

---------

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
This commit is contained in:
Kévin Commaille 2024-05-22 13:05:14 +02:00 committed by GitHub
parent 6b039c94bf
commit e5705e74c0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 28 additions and 0 deletions

1
changelog.d/935.feature Normal file
View File

@ -0,0 +1 @@
Add support for reopened GitLab MR.

View File

@ -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

View File

@ -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),

View File

@ -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" |
@ -80,6 +81,7 @@ type AllowedEventsNames =
const AllowedEvents: AllowedEventsNames[] = [
"merge_request.open",
"merge_request.reopen",
"merge_request.close",
"merge_request.merge",
"merge_request.review",
@ -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;

View File

@ -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",

View File

@ -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>