mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-07 23:13:11 -06:00
Fix notifications on invites
This commit is contained in:
parent
db83789654
commit
b6affa2e37
|
|
@ -92,16 +92,34 @@ func (s *OutputRoomEventConsumer) Start() error {
|
||||||
func (s *OutputRoomEventConsumer) onMessage(ctx context.Context, msgs []*nats.Msg) bool {
|
func (s *OutputRoomEventConsumer) onMessage(ctx context.Context, msgs []*nats.Msg) bool {
|
||||||
msg := msgs[0] // Guaranteed to exist if onMessage is called
|
msg := msgs[0] // Guaranteed to exist if onMessage is called
|
||||||
// Only handle events we care about
|
// Only handle events we care about
|
||||||
if rsapi.OutputType(msg.Header.Get(jetstream.RoomEventType)) != rsapi.OutputTypeNewRoomEvent {
|
|
||||||
|
var event *rstypes.HeaderedEvent
|
||||||
|
var isNewRoomEvent bool
|
||||||
|
switch rsapi.OutputType(msg.Header.Get(jetstream.RoomEventType)) {
|
||||||
|
case rsapi.OutputTypeNewRoomEvent:
|
||||||
|
isNewRoomEvent = true
|
||||||
|
fallthrough
|
||||||
|
case rsapi.OutputTypeNewInviteEvent:
|
||||||
|
var output rsapi.OutputEvent
|
||||||
|
if err := json.Unmarshal(msg.Data, &output); err != nil {
|
||||||
|
// If the message was invalid, log it and move on to the next message in the stream
|
||||||
|
log.WithError(err).Errorf("roomserver output log: message parse failure")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if isNewRoomEvent {
|
||||||
|
event = output.NewRoomEvent.Event
|
||||||
|
} else {
|
||||||
|
event = output.NewInviteEvent.Event
|
||||||
|
}
|
||||||
|
|
||||||
|
log.WithFields(log.Fields{
|
||||||
|
"event_id": event.EventID(),
|
||||||
|
"event_type": event.Type(),
|
||||||
|
}).Tracef("Received message from roomserver: %#v", output)
|
||||||
|
default:
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
var output rsapi.OutputEvent
|
|
||||||
if err := json.Unmarshal(msg.Data, &output); err != nil {
|
|
||||||
// If the message was invalid, log it and move on to the next message in the stream
|
|
||||||
log.WithError(err).Errorf("roomserver output log: message parse failure")
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
event := output.NewRoomEvent.Event
|
|
||||||
if event == nil {
|
if event == nil {
|
||||||
log.Errorf("userapi consumer: expected event")
|
log.Errorf("userapi consumer: expected event")
|
||||||
return true
|
return true
|
||||||
|
|
@ -111,11 +129,6 @@ func (s *OutputRoomEventConsumer) onMessage(ctx context.Context, msgs []*nats.Ms
|
||||||
go s.storeMessageStats(ctx, event.Type(), string(event.SenderID()), event.RoomID().String())
|
go s.storeMessageStats(ctx, event.Type(), string(event.SenderID()), event.RoomID().String())
|
||||||
}
|
}
|
||||||
|
|
||||||
log.WithFields(log.Fields{
|
|
||||||
"event_id": event.EventID(),
|
|
||||||
"event_type": event.Type(),
|
|
||||||
}).Tracef("Received message from roomserver: %#v", output)
|
|
||||||
|
|
||||||
metadata, err := msg.Metadata()
|
metadata, err := msg.Metadata()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return true
|
return true
|
||||||
|
|
@ -448,6 +461,18 @@ func (s *OutputRoomEventConsumer) roomName(ctx context.Context, event *rstypes.H
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Special case for invites, as we don't store any "current state" for these events,
|
||||||
|
// we need to make sure that, if present, the m.room.name is sent as well.
|
||||||
|
if event.Type() == spec.MRoomMember {
|
||||||
|
invState := gjson.GetBytes(event.JSON(), "unsigned.invite_room_state")
|
||||||
|
for _, ev := range invState.Array() {
|
||||||
|
if ev.Get("type").Str == spec.MRoomName {
|
||||||
|
name := ev.Get("content.name").Str
|
||||||
|
return name, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
req := &rsapi.QueryCurrentStateRequest{
|
req := &rsapi.QueryCurrentStateRequest{
|
||||||
RoomID: event.RoomID().String(),
|
RoomID: event.RoomID().String(),
|
||||||
StateTuples: []gomatrixserverlib.StateKeyTuple{roomNameTuple, canonicalAliasTuple},
|
StateTuples: []gomatrixserverlib.StateKeyTuple{roomNameTuple, canonicalAliasTuple},
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue