diff --git a/appservice/consumers/roomserver.go b/appservice/consumers/roomserver.go index 862dde49..cb353c90 100644 --- a/appservice/consumers/roomserver.go +++ b/appservice/consumers/roomserver.go @@ -111,7 +111,7 @@ func (s *OutputRoomEventConsumer) onMessage( for _, msg := range msgs { // Only handle events we care about receivedType := api.OutputType(msg.Header.Get(jetstream.RoomEventType)) - if receivedType != api.OutputTypeNewRoomEvent && receivedType != api.OutputTypeNewInviteEvent { + if receivedType != api.OutputTypeNewRoomEvent && receivedType != api.OutputTypeNewInviteEvent && receivedType != api.OutputTypeRedactedEvent { continue } // Parse out the event JSON @@ -147,7 +147,11 @@ func (s *OutputRoomEventConsumer) onMessage( events = append(events, eventsRes.Events...) } } - + case api.OutputTypeRedactedEvent: + if output.RedactedEvent == nil || !s.appserviceIsInterestedInEvent(ctx, output.RedactedEvent.RedactedBecause, state.ApplicationService) { + continue + } + events = append(events, output.RedactedEvent.RedactedBecause) default: continue } diff --git a/syncapi/consumers/roomserver.go b/syncapi/consumers/roomserver.go index 75afa1c9..b3d3a7ae 100644 --- a/syncapi/consumers/roomserver.go +++ b/syncapi/consumers/roomserver.go @@ -132,6 +132,11 @@ func (s *OutputRoomEventConsumer) onMessage(ctx context.Context, msgs []*nats.Ms s.onRetirePeek(s.ctx, *output.RetirePeek) case api.OutputTypeRedactedEvent: err = s.onRedactEvent(s.ctx, *output.RedactedEvent) + if err == nil && s.asProducer != nil { + if err = s.asProducer.ProduceRoomEvents(msg); err != nil { + log.WithError(err).Warn("failed to produce OutputAppserviceEvent") + } + } case api.OutputTypePurgeRoom: err = s.onPurgeRoom(s.ctx, *output.PurgeRoom) if err != nil {