mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-08-01 22:02:46 +00:00
Roomserver API changes (#1118)
* s/QueryBackfill/PerformBackfill/g * OutputEvent now includes AddStateEvents which contain the full event of extra state events * Only include adds not the current event * Get adding state right
This commit is contained in:
parent
25cd2dd1c9
commit
ec7718e7f8
17 changed files with 152 additions and 287 deletions
|
@ -63,6 +63,13 @@ type OutputNewRoomEvent struct {
|
|||
// 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"`
|
||||
|
||||
// The state event IDs that were removed from the state of the room by this event.
|
||||
RemovesStateEventIDs []string `json:"removes_state_event_ids"`
|
||||
// The ID of the event that was output before this event.
|
||||
|
@ -112,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.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue