mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-07-31 21:32:46 +00:00
Don't send adds_state_events
in roomserver output events anymore (#2258)
* Don't send `adds_state_events` in roomserver output events anymore * Set `omitempty` on some output fields that aren't always set * Add `AddsState` helper function * No-op if no added state event IDs * Revert "No-op if no added state event IDs" This reverts commit 71a0ef3df10e0d94234d916246c30b0a4e82b26e. * Revert "Add `AddsState` helper function" This reverts commit c9fbe45475eb12ae44d2a8da7c0fc3a002ad9819.
This commit is contained in:
parent
05fa66c9c8
commit
67de4dbd0c
5 changed files with 79 additions and 80 deletions
|
@ -105,7 +105,7 @@ type OutputNewRoomEvent struct {
|
|||
Event *gomatrixserverlib.HeaderedEvent `json:"event"`
|
||||
// Does the event completely rewrite the room state? If so, then AddsStateEventIDs
|
||||
// will contain the entire room state.
|
||||
RewritesState bool `json:"rewrites_state"`
|
||||
RewritesState bool `json:"rewrites_state,omitempty"`
|
||||
// The latest events in the room after this event.
|
||||
// This can be used to set the prev events for new events in the room.
|
||||
// This also can be used to get the full current state after this event.
|
||||
|
@ -113,16 +113,9 @@ type OutputNewRoomEvent struct {
|
|||
// The state event IDs that were added to the state of the room by this event.
|
||||
// Together with RemovesStateEventIDs this allows the receiver to keep an up to date
|
||||
// view of the current state of the room.
|
||||
AddsStateEventIDs []string `json:"adds_state_event_ids"`
|
||||
// All extra newly added state events. This is only set if there are *extra* events
|
||||
// other than `Event`. This can happen when forks get merged because state resolution
|
||||
// may decide a bunch of state events on one branch are now valid, so they will be
|
||||
// present in this list. This is useful when trying to maintain the current state of a room
|
||||
// as to do so you need to include both these events and `Event`.
|
||||
AddStateEvents []*gomatrixserverlib.HeaderedEvent `json:"adds_state_events"`
|
||||
|
||||
AddsStateEventIDs []string `json:"adds_state_event_ids,omitempty"`
|
||||
// The state event IDs that were removed from the state of the room by this event.
|
||||
RemovesStateEventIDs []string `json:"removes_state_event_ids"`
|
||||
RemovesStateEventIDs []string `json:"removes_state_event_ids,omitempty"`
|
||||
// The ID of the event that was output before this event.
|
||||
// Or the empty string if this is the first event output for this room.
|
||||
// This is used by consumers to check if they can safely update their
|
||||
|
@ -145,10 +138,10 @@ type OutputNewRoomEvent struct {
|
|||
//
|
||||
// The state is given as a delta against the current state because they are
|
||||
// usually either the same state, or differ by just a couple of events.
|
||||
StateBeforeAddsEventIDs []string `json:"state_before_adds_event_ids"`
|
||||
StateBeforeAddsEventIDs []string `json:"state_before_adds_event_ids,omitempty"`
|
||||
// The state event IDs that are part of the current state, but not part
|
||||
// of the state at the event.
|
||||
StateBeforeRemovesEventIDs []string `json:"state_before_removes_event_ids"`
|
||||
StateBeforeRemovesEventIDs []string `json:"state_before_removes_event_ids,omitempty"`
|
||||
// The server name to use to push this event to other servers.
|
||||
// Or empty if this event shouldn't be pushed to other servers.
|
||||
//
|
||||
|
@ -167,27 +160,7 @@ type OutputNewRoomEvent struct {
|
|||
SendAsServer string `json:"send_as_server"`
|
||||
// The transaction ID of the send request if sent by a local user and one
|
||||
// was specified
|
||||
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)
|
||||
TransactionID *TransactionID `json:"transaction_id,omitempty"`
|
||||
}
|
||||
|
||||
// An OutputOldRoomEvent is written when the roomserver receives an old event.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue