mirror of
https://github.com/matrix-org/matrix-hookshot.git
synced 2025-03-10 21:19:13 +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
698b0c13bb
commit
af90e840e4
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.open *
|
||||||
- merge_request.review.comments *
|
- merge_request.review.comments *
|
||||||
- merge_request.review *
|
- merge_request.review *
|
||||||
|
- merge_request.review.individual
|
||||||
- push *
|
- push *
|
||||||
- release *
|
- release *
|
||||||
- release.created *
|
- release.created *
|
||||||
|
@ -365,6 +365,18 @@ export class Bridge {
|
|||||||
(c, data) => c.onMergeRequestReviewed(data),
|
(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>(
|
this.bindHandlerToQueue<IGitLabWebhookMREvent, GitLabRepoConnection>(
|
||||||
"gitlab.merge_request.update",
|
"gitlab.merge_request.update",
|
||||||
(data) => connManager.getConnectionsForGitLabRepo(data.project.path_with_namespace),
|
(data) => connManager.getConnectionsForGitLabRepo(data.project.path_with_namespace),
|
||||||
|
@ -70,6 +70,7 @@ type AllowedEventsNames =
|
|||||||
"merge_request.close" |
|
"merge_request.close" |
|
||||||
"merge_request.merge" |
|
"merge_request.merge" |
|
||||||
"merge_request.review" |
|
"merge_request.review" |
|
||||||
|
"merge_request.review.individual" |
|
||||||
"merge_request.ready_for_review" |
|
"merge_request.ready_for_review" |
|
||||||
"merge_request.review.comments" |
|
"merge_request.review.comments" |
|
||||||
`merge_request.${string}` |
|
`merge_request.${string}` |
|
||||||
@ -86,6 +87,7 @@ const AllowedEvents: AllowedEventsNames[] = [
|
|||||||
"merge_request.close",
|
"merge_request.close",
|
||||||
"merge_request.merge",
|
"merge_request.merge",
|
||||||
"merge_request.review",
|
"merge_request.review",
|
||||||
|
"merge_request.review.individual",
|
||||||
"merge_request.ready_for_review",
|
"merge_request.ready_for_review",
|
||||||
"merge_request.review.comments",
|
"merge_request.review.comments",
|
||||||
"merge_request",
|
"merge_request",
|
||||||
@ -806,10 +808,26 @@ ${data.description}`;
|
|||||||
}
|
}
|
||||||
log.info(`onMergeRequestReviewed ${this.roomId} ${this.instance}/${this.path} ${event.object_attributes.iid}`);
|
log.info(`onMergeRequestReviewed ${this.roomId} ${this.instance}/${this.path} ${event.object_attributes.iid}`);
|
||||||
this.validateMREvent(event);
|
this.validateMREvent(event);
|
||||||
if (event.object_attributes.action !== "approved" && event.object_attributes.action !== "unapproved") {
|
this.debounceMergeRequestReview(
|
||||||
// Not interested.
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.info(`onMergeRequestReviewed ${this.roomId} ${this.instance}/${this.path} ${event.object_attributes.iid}`);
|
||||||
|
this.validateMREvent(event);
|
||||||
this.debounceMergeRequestReview(
|
this.debounceMergeRequestReview(
|
||||||
event.user,
|
event.user,
|
||||||
event.object_attributes,
|
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.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.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}>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>
|
<EventHookCheckbox enabledHooks={enabledHooks} parentEvent="merge_request" hookEventName="merge_request.ready_for_review" onChange={toggleEnabledHook}>Ready for review</EventHookCheckbox>
|
||||||
</ul>
|
</ul>
|
||||||
<EventHookCheckbox enabledHooks={enabledHooks} hookEventName="push" onChange={toggleEnabledHook}>Pushes</EventHookCheckbox>
|
<EventHookCheckbox enabledHooks={enabledHooks} hookEventName="push" onChange={toggleEnabledHook}>Pushes</EventHookCheckbox>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user