mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-06 22:43:10 -06:00
Convert pseudoIDs for sync response invites
This commit is contained in:
parent
a10f103d55
commit
fb5c9666c0
|
|
@ -153,12 +153,10 @@ func ToClientEvent(se gomatrixserverlib.PDU, format ClientEventFormat, userIDFor
|
|||
// TODO: Set Signatures & Hashes fields
|
||||
}
|
||||
|
||||
if format != FormatSyncFederation {
|
||||
if se.Version() == gomatrixserverlib.RoomVersionPseudoIDs {
|
||||
err := updatePseudoIDs(&ce, se, userIDForSender, format)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if format != FormatSyncFederation && se.Version() == gomatrixserverlib.RoomVersionPseudoIDs {
|
||||
err := updatePseudoIDs(&ce, se, userIDForSender, format)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -282,7 +280,7 @@ func updateInviteEvent(userIDForSender spec.UserIDForSender, ev gomatrixserverli
|
|||
return nil, err
|
||||
}
|
||||
|
||||
newState, err := getUpdatedInviteRoomState(userIDForSender, inviteRoomState, ev, *validRoomID, eventFormat)
|
||||
newState, err := GetUpdatedInviteRoomState(userIDForSender, inviteRoomState, ev, *validRoomID, eventFormat)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -306,7 +304,7 @@ type InviteRoomStateEvent struct {
|
|||
Type string `json:"type"`
|
||||
}
|
||||
|
||||
func getUpdatedInviteRoomState(userIDForSender spec.UserIDForSender, inviteRoomState gjson.Result, event gomatrixserverlib.PDU, roomID spec.RoomID, eventFormat ClientEventFormat) (spec.RawJSON, error) {
|
||||
func GetUpdatedInviteRoomState(userIDForSender spec.UserIDForSender, inviteRoomState gjson.Result, event gomatrixserverlib.PDU, roomID spec.RoomID, eventFormat ClientEventFormat) (spec.RawJSON, error) {
|
||||
var res spec.RawJSON
|
||||
inviteStateEvents := []InviteRoomStateEvent{}
|
||||
err := json.Unmarshal([]byte(inviteRoomState.Raw), &inviteStateEvents)
|
||||
|
|
|
|||
|
|
@ -541,7 +541,22 @@ func NewInviteResponse(ctx context.Context, rsAPI api.QuerySenderIDAPI, event *t
|
|||
// If there is then unmarshal it into the response. This will contain the
|
||||
// partial room state such as join rules, room name etc.
|
||||
if inviteRoomState := gjson.GetBytes(event.Unsigned(), "invite_room_state"); inviteRoomState.Exists() {
|
||||
_ = json.Unmarshal([]byte(inviteRoomState.Raw), &res.InviteState.Events)
|
||||
if event.Version() == gomatrixserverlib.RoomVersionPseudoIDs && eventFormat != synctypes.FormatSyncFederation {
|
||||
roomID, err := spec.NewRoomID(event.RoomID())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
updatedInvite, err := synctypes.GetUpdatedInviteRoomState(func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
|
||||
return rsAPI.QueryUserIDForSender(ctx, roomID, senderID)
|
||||
}, inviteRoomState, event.PDU, *roomID, eventFormat)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
_ = json.Unmarshal(updatedInvite, &res.InviteState.Events)
|
||||
} else {
|
||||
_ = json.Unmarshal([]byte(inviteRoomState.Raw), &res.InviteState.Events)
|
||||
}
|
||||
}
|
||||
|
||||
// Clear unsigned so it doesn't have pseudoIDs converted during ToClientEvent
|
||||
|
|
|
|||
Loading…
Reference in a new issue