mirror of
https://github.com/matrix-org/matrix-hookshot.git
synced 2025-03-10 13:17:08 +00:00
Add support for Gitlab individual review notifications (#736)
* Add support for individual reviews * Document support + add frontend support * changelog * Remove redundant checks
This commit is contained in:
parent
fc79246206
commit
d4ecded905
1
changelog.d/736.feature
Normal file
1
changelog.d/736.feature
Normal file
@ -0,0 +1 @@
|
||||
Add support for notifying when a GitLab MR has a single review (rather than completed review).
|
@ -48,6 +48,7 @@ the events marked as default below will be enabled. Otherwise, this is ignored.
|
||||
- merge_request.open *
|
||||
- merge_request.review.comments *
|
||||
- merge_request.review *
|
||||
- merge_request.review.individual
|
||||
- push *
|
||||
- release *
|
||||
- release.created *
|
||||
|
@ -367,6 +367,18 @@ export class Bridge {
|
||||
(c, data) => c.onMergeRequestReviewed(data),
|
||||
);
|
||||
|
||||
this.bindHandlerToQueue<IGitLabWebhookMREvent, GitLabRepoConnection>(
|
||||
"gitlab.merge_request.approval",
|
||||
(data) => connManager.getConnectionsForGitLabRepo(data.project.path_with_namespace),
|
||||
(c, data) => c.onMergeRequestIndividualReview(data),
|
||||
);
|
||||
|
||||
this.bindHandlerToQueue<IGitLabWebhookMREvent, GitLabRepoConnection>(
|
||||
"gitlab.merge_request.unapproval",
|
||||
(data) => connManager.getConnectionsForGitLabRepo(data.project.path_with_namespace),
|
||||
(c, data) => c.onMergeRequestIndividualReview(data),
|
||||
);
|
||||
|
||||
this.bindHandlerToQueue<IGitLabWebhookMREvent, GitLabRepoConnection>(
|
||||
"gitlab.merge_request.update",
|
||||
(data) => connManager.getConnectionsForGitLabRepo(data.project.path_with_namespace),
|
||||
|
@ -70,6 +70,7 @@ type AllowedEventsNames =
|
||||
"merge_request.close" |
|
||||
"merge_request.merge" |
|
||||
"merge_request.review" |
|
||||
"merge_request.review.individual" |
|
||||
"merge_request.ready_for_review" |
|
||||
"merge_request.review.comments" |
|
||||
`merge_request.${string}` |
|
||||
@ -86,6 +87,7 @@ const AllowedEvents: AllowedEventsNames[] = [
|
||||
"merge_request.close",
|
||||
"merge_request.merge",
|
||||
"merge_request.review",
|
||||
"merge_request.review.individual",
|
||||
"merge_request.ready_for_review",
|
||||
"merge_request.review.comments",
|
||||
"merge_request",
|
||||
@ -806,10 +808,26 @@ ${data.description}`;
|
||||
}
|
||||
log.info(`onMergeRequestReviewed ${this.roomId} ${this.instance}/${this.path} ${event.object_attributes.iid}`);
|
||||
this.validateMREvent(event);
|
||||
if (event.object_attributes.action !== "approved" && event.object_attributes.action !== "unapproved") {
|
||||
// Not interested.
|
||||
this.debounceMergeRequestReview(
|
||||
event.user,
|
||||
event.object_attributes,
|
||||
event.project,
|
||||
{
|
||||
commentCount: 0,
|
||||
approved: "approved" === event.object_attributes.action,
|
||||
skip: false,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
public async onMergeRequestIndividualReview(event: IGitLabWebhookMREvent) {
|
||||
if (this.hookFilter.shouldSkip('merge_request', 'merge_request.review.individual') || !this.matchesLabelFilter(event)) {
|
||||
return;
|
||||
}
|
||||
|
||||
log.info(`onMergeRequestReviewed ${this.roomId} ${this.instance}/${this.path} ${event.object_attributes.iid}`);
|
||||
this.validateMREvent(event);
|
||||
this.debounceMergeRequestReview(
|
||||
event.user,
|
||||
event.object_attributes,
|
||||
|
@ -97,7 +97,8 @@ const ConnectionConfiguration: FunctionComponent<ConnectionConfigurationProps<ne
|
||||
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.open" onChange={toggleEnabledHook}>Opened</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}>Reviewed</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.individual" onChange={toggleEnabledHook}>Single review</EventHookCheckbox>
|
||||
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.ready_for_review" onChange={toggleEnabledHook}>Ready for review</EventHookCheckbox>
|
||||
</ul>
|
||||
<EventHookCheckbox enabledHooks={enabledHooks} hookEventName="push" onChange={toggleEnabledHook}>Pushes</EventHookCheckbox>
|
||||
|
Loading…
x
Reference in New Issue
Block a user