mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-07-30 21:12:45 +00:00
Fix syncAPI redactions (#3118)
Previously we were setting `redacted_because` to the PDU event, but as per the spec it should really be a client event. This fixes it.
This commit is contained in:
parent
45082d4dce
commit
a5ea928d0f
5 changed files with 67 additions and 6 deletions
|
@ -22,6 +22,7 @@ import (
|
|||
|
||||
"github.com/matrix-org/dendrite/roomserver/api"
|
||||
"github.com/matrix-org/dendrite/roomserver/types"
|
||||
"github.com/matrix-org/dendrite/syncapi/synctypes"
|
||||
"github.com/matrix-org/gomatrixserverlib/fclient"
|
||||
"github.com/matrix-org/gomatrixserverlib/spec"
|
||||
|
||||
|
@ -169,13 +170,22 @@ func truncateAuthAndPrevEvents(auth, prev []string) (
|
|||
|
||||
// RedactEvent redacts the given event and sets the unsigned field appropriately. This should be used by
|
||||
// downstream components to the roomserver when an OutputTypeRedactedEvent occurs.
|
||||
func RedactEvent(redactionEvent, redactedEvent gomatrixserverlib.PDU) error {
|
||||
func RedactEvent(ctx context.Context, redactionEvent, redactedEvent gomatrixserverlib.PDU, querier api.QuerySenderIDAPI) error {
|
||||
// sanity check
|
||||
if redactionEvent.Type() != spec.MRoomRedaction {
|
||||
return fmt.Errorf("RedactEvent: redactionEvent isn't a redaction event, is '%s'", redactionEvent.Type())
|
||||
}
|
||||
redactedEvent.Redact()
|
||||
if err := redactedEvent.SetUnsignedField("redacted_because", redactionEvent); err != nil {
|
||||
validRoomID, err := spec.NewRoomID(redactionEvent.RoomID())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
senderID, err := querier.QueryUserIDForSender(ctx, *validRoomID, redactionEvent.SenderID())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
redactedBecause := synctypes.ToClientEvent(redactionEvent, synctypes.FormatSync, *senderID, redactionEvent.StateKey())
|
||||
if err := redactedEvent.SetUnsignedField("redacted_because", redactedBecause); err != nil {
|
||||
return err
|
||||
}
|
||||
// NOTSPEC: sytest relies on this unspecced field existing :(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue