mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-20 13:23:22 -06:00
Get adding state right
This commit is contained in:
parent
942491cef4
commit
11d8b10c10
|
|
@ -84,8 +84,9 @@ func (s *OutputRoomEventConsumer) onMessage(msg *sarama.ConsumerMessage) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
events := []gomatrixserverlib.HeaderedEvent{output.NewRoomEvent.Event}
|
||||
events = append(events, output.NewRoomEvent.AddStateEvents...)
|
||||
|
||||
return s.db.UpdateMemberships(context.TODO(), gomatrixserverlib.UnwrapEventHeaders(events), output.NewRoomEvent.RemovesStateEventIDs)
|
||||
return s.db.UpdateMemberships(
|
||||
context.TODO(),
|
||||
gomatrixserverlib.UnwrapEventHeaders(output.NewRoomEvent.AddsState()),
|
||||
output.NewRoomEvent.RemovesStateEventIDs,
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ func (s *OutputRoomEventConsumer) onMessage(msg *sarama.ConsumerMessage) error {
|
|||
// processMessage updates the list of currently joined hosts in the room
|
||||
// and then sends the event to the hosts that were joined before the event.
|
||||
func (s *OutputRoomEventConsumer) processMessage(ore api.OutputNewRoomEvent) error {
|
||||
addsJoinedHosts, err := joinedHostsFromEvents(gomatrixserverlib.UnwrapEventHeaders(ore.AddStateEvents))
|
||||
addsJoinedHosts, err := joinedHostsFromEvents(gomatrixserverlib.UnwrapEventHeaders(ore.AddsState()))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ func (s *OutputRoomEventConsumer) onMessage(msg *sarama.ConsumerMessage) error {
|
|||
}
|
||||
|
||||
var addQueryEvents, remQueryEvents []gomatrixserverlib.Event
|
||||
for _, headeredEvent := range output.NewRoomEvent.AddStateEvents {
|
||||
for _, headeredEvent := range output.NewRoomEvent.AddsState() {
|
||||
addQueryEvents = append(addQueryEvents, headeredEvent.Event)
|
||||
}
|
||||
addQueryEvents = append(addQueryEvents, output.NewRoomEvent.Event.Unwrap())
|
||||
|
|
|
|||
|
|
@ -119,6 +119,26 @@ type OutputNewRoomEvent struct {
|
|||
TransactionID *TransactionID `json:"transaction_id"`
|
||||
}
|
||||
|
||||
// AddsState returns all added state events from this event.
|
||||
//
|
||||
// This function is needed because `AddStateEvents` will not include a copy of
|
||||
// the original event to save space, so you cannot use that slice alone.
|
||||
// Instead, use this function which will add the original event if it is present
|
||||
// in `AddsStateEventIDs`.
|
||||
func (ore *OutputNewRoomEvent) AddsState() []gomatrixserverlib.HeaderedEvent {
|
||||
includeOutputEvent := false
|
||||
for _, id := range ore.AddsStateEventIDs {
|
||||
if id == ore.Event.EventID() {
|
||||
includeOutputEvent = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !includeOutputEvent {
|
||||
return ore.AddStateEvents
|
||||
}
|
||||
return append(ore.AddStateEvents, ore.Event)
|
||||
}
|
||||
|
||||
// An OutputNewInviteEvent is written whenever an invite becomes active.
|
||||
// Invite events can be received outside of an existing room so have to be
|
||||
// tracked separately from the room events themselves.
|
||||
|
|
|
|||
|
|
@ -104,8 +104,7 @@ func (s *OutputRoomEventConsumer) onNewRoomEvent(
|
|||
"room_version": ev.RoomVersion,
|
||||
}).Info("received event from roomserver")
|
||||
|
||||
addsStateEvents := []gomatrixserverlib.HeaderedEvent{ev}
|
||||
addsStateEvents = append(addsStateEvents, msg.AddStateEvents...)
|
||||
addsStateEvents := msg.AddsState()
|
||||
|
||||
ev, err := s.updateStateEvent(ev)
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Reference in a new issue