mirror of
https://github.com/matrix-org/matrix-hookshot.git
synced 2025-03-10 13:17:08 +00:00
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:
parent
6b039c94bf
commit
e5705e74c0
1
changelog.d/935.feature
Normal file
1
changelog.d/935.feature
Normal file
@ -0,0 +1 @@
|
|||||||
|
Add support for reopened GitLab MR.
|
@ -46,6 +46,7 @@ the events marked as default below will be enabled. Otherwise, this is ignored.
|
|||||||
- merge_request.close *
|
- merge_request.close *
|
||||||
- merge_request.merge *
|
- merge_request.merge *
|
||||||
- merge_request.open *
|
- merge_request.open *
|
||||||
|
- merge_request.reopen *
|
||||||
- merge_request.review.comments *
|
- merge_request.review.comments *
|
||||||
- merge_request.review *
|
- merge_request.review *
|
||||||
- merge_request.review.individual
|
- merge_request.review.individual
|
||||||
|
@ -344,6 +344,12 @@ export class Bridge {
|
|||||||
(c, data) => c.onMergeRequestOpened(data),
|
(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>(
|
this.bindHandlerToQueue<IGitLabWebhookMREvent, GitLabRepoConnection>(
|
||||||
"gitlab.merge_request.close",
|
"gitlab.merge_request.close",
|
||||||
(data) => connManager.getConnectionsForGitLabRepo(data.project.path_with_namespace),
|
(data) => connManager.getConnectionsForGitLabRepo(data.project.path_with_namespace),
|
||||||
|
@ -63,6 +63,7 @@ export type GitLabRepoResponseItem = GetConnectionsResponseItem<GitLabRepoConnec
|
|||||||
|
|
||||||
type AllowedEventsNames =
|
type AllowedEventsNames =
|
||||||
"merge_request.open" |
|
"merge_request.open" |
|
||||||
|
"merge_request.reopen" |
|
||||||
"merge_request.close" |
|
"merge_request.close" |
|
||||||
"merge_request.merge" |
|
"merge_request.merge" |
|
||||||
"merge_request.review" |
|
"merge_request.review" |
|
||||||
@ -80,6 +81,7 @@ type AllowedEventsNames =
|
|||||||
|
|
||||||
const AllowedEvents: AllowedEventsNames[] = [
|
const AllowedEvents: AllowedEventsNames[] = [
|
||||||
"merge_request.open",
|
"merge_request.open",
|
||||||
|
"merge_request.reopen",
|
||||||
"merge_request.close",
|
"merge_request.close",
|
||||||
"merge_request.merge",
|
"merge_request.merge",
|
||||||
"merge_request.review",
|
"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) {
|
public async onMergeRequestClosed(event: IGitLabWebhookMREvent) {
|
||||||
if (this.hookFilter.shouldSkip('merge_request', 'merge_request.close') || !this.matchesLabelFilter(event)) {
|
if (this.hookFilter.shouldSkip('merge_request', 'merge_request.close') || !this.matchesLabelFilter(event)) {
|
||||||
return;
|
return;
|
||||||
|
@ -97,6 +97,7 @@ describe("GitLabRepoConnection", () => {
|
|||||||
path: "bar/baz",
|
path: "bar/baz",
|
||||||
enableHooks: [
|
enableHooks: [
|
||||||
"merge_request.open",
|
"merge_request.open",
|
||||||
|
"merge_request.reopen",
|
||||||
"merge_request.close",
|
"merge_request.close",
|
||||||
"merge_request.merge",
|
"merge_request.merge",
|
||||||
"merge_request.review",
|
"merge_request.review",
|
||||||
|
@ -97,6 +97,7 @@ const ConnectionConfiguration: FunctionComponent<ConnectionConfigurationProps<ne
|
|||||||
<EventHookCheckbox enabledHooks={enabledHooks} hookEventName="merge_request" onChange={toggleEnabledHook}>Merge requests</EventHookCheckbox>
|
<EventHookCheckbox enabledHooks={enabledHooks} hookEventName="merge_request" onChange={toggleEnabledHook}>Merge requests</EventHookCheckbox>
|
||||||
<ul>
|
<ul>
|
||||||
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.open" onChange={toggleEnabledHook}>Opened</EventHookCheckbox>
|
<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.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.merge" onChange={toggleEnabledHook}>Merged</EventHookCheckbox>
|
||||||
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.review" onChange={toggleEnabledHook}>Completed review</EventHookCheckbox>
|
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.review" onChange={toggleEnabledHook}>Completed review</EventHookCheckbox>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user