mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-25 07:43:10 -06:00
Generate old output events
This commit is contained in:
parent
59ed41a83f
commit
93d3b2f243
|
|
@ -24,6 +24,8 @@ type OutputType string
|
||||||
const (
|
const (
|
||||||
// OutputTypeNewRoomEvent indicates that the event is an OutputNewRoomEvent
|
// OutputTypeNewRoomEvent indicates that the event is an OutputNewRoomEvent
|
||||||
OutputTypeNewRoomEvent OutputType = "new_room_event"
|
OutputTypeNewRoomEvent OutputType = "new_room_event"
|
||||||
|
// OutputTypeOldRoomEvent indicates that the event is an OutputOldRoomEvent
|
||||||
|
OutputTypeOldRoomEvent OutputType = "old_room_event"
|
||||||
// OutputTypeNewInviteEvent indicates that the event is an OutputNewInviteEvent
|
// OutputTypeNewInviteEvent indicates that the event is an OutputNewInviteEvent
|
||||||
OutputTypeNewInviteEvent OutputType = "new_invite_event"
|
OutputTypeNewInviteEvent OutputType = "new_invite_event"
|
||||||
// OutputTypeRetireInviteEvent indicates that the event is an OutputRetireInviteEvent
|
// OutputTypeRetireInviteEvent indicates that the event is an OutputRetireInviteEvent
|
||||||
|
|
@ -58,6 +60,8 @@ type OutputEvent struct {
|
||||||
Type OutputType `json:"type"`
|
Type OutputType `json:"type"`
|
||||||
// The content of event with type OutputTypeNewRoomEvent
|
// The content of event with type OutputTypeNewRoomEvent
|
||||||
NewRoomEvent *OutputNewRoomEvent `json:"new_room_event,omitempty"`
|
NewRoomEvent *OutputNewRoomEvent `json:"new_room_event,omitempty"`
|
||||||
|
// The content of event with type OutputTypeOldRoomEvent
|
||||||
|
OldRoomEvent *OutputOldRoomEvent `json:"old_room_event,omitempty"`
|
||||||
// The content of event with type OutputTypeNewInviteEvent
|
// The content of event with type OutputTypeNewInviteEvent
|
||||||
NewInviteEvent *OutputNewInviteEvent `json:"new_invite_event,omitempty"`
|
NewInviteEvent *OutputNewInviteEvent `json:"new_invite_event,omitempty"`
|
||||||
// The content of event with type OutputTypeRetireInviteEvent
|
// The content of event with type OutputTypeRetireInviteEvent
|
||||||
|
|
@ -178,6 +182,14 @@ func (ore *OutputNewRoomEvent) AddsState() []gomatrixserverlib.HeaderedEvent {
|
||||||
return append(ore.AddStateEvents, ore.Event)
|
return append(ore.AddStateEvents, ore.Event)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// An OutputOldRoomEvent is written when the roomserver receives an old event.
|
||||||
|
// Old events do not update forward extremities or the current room state,
|
||||||
|
// therefore they must not be treated as if they do.
|
||||||
|
type OutputOldRoomEvent struct {
|
||||||
|
// The Event.
|
||||||
|
Event gomatrixserverlib.HeaderedEvent `json:"event"`
|
||||||
|
}
|
||||||
|
|
||||||
// An OutputNewInviteEvent is written whenever an invite becomes active.
|
// An OutputNewInviteEvent is written whenever an invite becomes active.
|
||||||
// Invite events can be received outside of an existing room so have to be
|
// Invite events can be received outside of an existing room so have to be
|
||||||
// tracked separately from the room events themselves.
|
// tracked separately from the room events themselves.
|
||||||
|
|
|
||||||
|
|
@ -136,7 +136,8 @@ func (r *Inputer) processRoomEvent(
|
||||||
return event.EventID(), rejectionErr
|
return event.EventID(), rejectionErr
|
||||||
}
|
}
|
||||||
|
|
||||||
if input.Kind == api.KindNew {
|
switch input.Kind {
|
||||||
|
case api.KindNew:
|
||||||
if err = r.updateLatestEvents(
|
if err = r.updateLatestEvents(
|
||||||
ctx, // context
|
ctx, // context
|
||||||
roomInfo, // room info for the room being updated
|
roomInfo, // room info for the room being updated
|
||||||
|
|
@ -148,6 +149,18 @@ func (r *Inputer) processRoomEvent(
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return "", fmt.Errorf("r.updateLatestEvents: %w", err)
|
return "", fmt.Errorf("r.updateLatestEvents: %w", err)
|
||||||
}
|
}
|
||||||
|
case api.KindOld:
|
||||||
|
err = r.WriteOutputEvents(event.RoomID(), []api.OutputEvent{
|
||||||
|
{
|
||||||
|
Type: api.OutputTypeOldRoomEvent,
|
||||||
|
OldRoomEvent: &api.OutputOldRoomEvent{
|
||||||
|
Event: headered,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("r.WriteOutputEvents (old): %w", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// processing this event resulted in an event (which may not be the one we're processing)
|
// processing this event resulted in an event (which may not be the one we're processing)
|
||||||
|
|
@ -165,7 +178,7 @@ func (r *Inputer) processRoomEvent(
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("r.WriteOutputEvents: %w", err)
|
return "", fmt.Errorf("r.WriteOutputEvents (redactions): %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue