@@ -20,7 +20,7 @@ import {
20
20
View ,
21
21
Share ,
22
22
UserMembership ,
23
- GroupPermission ,
23
+ GroupMembership ,
24
24
GroupUser ,
25
25
Comment ,
26
26
} from "@server/models" ;
@@ -42,6 +42,7 @@ import {
42
42
presentCollectionGroupMembership ,
43
43
presentComment ,
44
44
} from "@server/presenters" ;
45
+ import presentDocumentGroupMembership from "@server/presenters/documentGroupMembership" ;
45
46
import BaseTask from "@server/queues/tasks/BaseTask" ;
46
47
import {
47
48
CollectionEvent ,
@@ -50,6 +51,7 @@ import {
50
51
CommentEvent ,
51
52
DocumentEvent ,
52
53
DocumentUserEvent ,
54
+ DocumentGroupEvent ,
53
55
Event ,
54
56
FileOperationEvent ,
55
57
GroupEvent ,
@@ -138,6 +140,10 @@ export default class DeliverWebhookTask extends BaseTask<Props> {
138
140
case "documents.remove_user" :
139
141
await this . handleDocumentUserEvent ( subscription , event ) ;
140
142
return ;
143
+ case "documents.add_group" :
144
+ case "documents.remove_group" :
145
+ await this . handleDocumentGroupEvent ( subscription , event ) ;
146
+ return ;
141
147
case "documents.update.delayed" :
142
148
case "documents.update.debounced" :
143
149
// Ignored
@@ -478,7 +484,7 @@ export default class DeliverWebhookTask extends BaseTask<Props> {
478
484
subscription : WebhookSubscription ,
479
485
event : CollectionGroupEvent
480
486
) : Promise < void > {
481
- const model = await GroupPermission . scope ( [
487
+ const model = await GroupMembership . scope ( [
482
488
"withGroup" ,
483
489
"withCollection" ,
484
490
] ) . findOne ( {
@@ -581,6 +587,36 @@ export default class DeliverWebhookTask extends BaseTask<Props> {
581
587
} ) ;
582
588
}
583
589
590
+ private async handleDocumentGroupEvent (
591
+ subscription : WebhookSubscription ,
592
+ event : DocumentGroupEvent
593
+ ) : Promise < void > {
594
+ const model = await GroupMembership . scope ( [
595
+ "withGroup" ,
596
+ "withDocument" ,
597
+ ] ) . findOne ( {
598
+ where : {
599
+ documentId : event . documentId ,
600
+ groupId : event . modelId ,
601
+ } ,
602
+ paranoid : false ,
603
+ } ) ;
604
+
605
+ const document =
606
+ model && ( await presentDocument ( undefined , model . document ! ) ) ;
607
+
608
+ await this . sendWebhook ( {
609
+ event,
610
+ subscription,
611
+ payload : {
612
+ id : event . modelId ,
613
+ model : model && presentDocumentGroupMembership ( model ) ,
614
+ document,
615
+ group : model && presentGroup ( model . group ) ,
616
+ } ,
617
+ } ) ;
618
+ }
619
+
584
620
private async handleRevisionEvent (
585
621
subscription : WebhookSubscription ,
586
622
event : RevisionEvent
0 commit comments