This commit is contained in:
Neil Alexander 2022-07-21 10:44:29 +01:00
parent 1dfef59306
commit 40edc1db3b
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
3 changed files with 19 additions and 22 deletions

View file

@ -80,7 +80,7 @@ func (r *Inputer) updateMemberships(
func (r *Inputer) updateMembership(
updater *shared.RoomUpdater,
targetUserNID types.EventStateKeyNID,
remove, add *types.Event, // *gomatrixserverlib.Event,
remove, add *types.Event,
updates []api.OutputEvent,
) ([]api.OutputEvent, error) {
var err error

View file

@ -140,24 +140,6 @@ func (r *Inviter) PerformInvite(
return nil, nil
}
// Update the membership table for the invite.
updater, err := r.DB.MembershipUpdater(ctx, roomID, targetUserID, isTargetLocal, req.RoomVersion)
if err != nil {
return nil, fmt.Errorf("r.DB.MembershipUpdater: %w", err)
}
ev := &types.Event{
EventNID: 0,
Event: event.Unwrap(),
}
outputUpdates, err = helpers.UpdateToInviteMembership(updater, ev, outputUpdates, req.Event.RoomVersion)
if err != nil {
return nil, fmt.Errorf("updateToInviteMembership: %w", err)
}
if err = updater.Commit(); err != nil {
return nil, fmt.Errorf("updater.Commit: %w", err)
}
logger.Debugf("updated membership to invite and sending invite OutputEvent")
// If the invite originated remotely then we can't send an
// InputRoomEvent for the invite as it will never pass auth checks
// due to lacking room state, but we still need to tell the client
@ -183,6 +165,24 @@ func (r *Inviter) PerformInvite(
return nil, nil
}
// Update the membership table for the invite.
updater, err := r.DB.MembershipUpdater(ctx, roomID, targetUserID, isTargetLocal, req.RoomVersion)
if err != nil {
return nil, fmt.Errorf("r.DB.MembershipUpdater: %w", err)
}
ev := &types.Event{
EventNID: 0,
Event: event.Unwrap(),
}
outputUpdates, err = helpers.UpdateToInviteMembership(updater, ev, outputUpdates, req.Event.RoomVersion)
if err != nil {
return nil, fmt.Errorf("updateToInviteMembership: %w", err)
}
if err = updater.Commit(); err != nil {
return nil, fmt.Errorf("updater.Commit: %w", err)
}
logger.Debugf("updated membership to invite and sending invite OutputEvent")
// If the invite originated from us and the target isn't local then we
// should try and send the invite over federation first. It might be
// that the remote user doesn't exist, in which case we can give up

View file

@ -8,7 +8,6 @@ import (
"github.com/matrix-org/dendrite/roomserver/storage/tables"
"github.com/matrix-org/dendrite/roomserver/types"
"github.com/matrix-org/gomatrixserverlib"
"github.com/sirupsen/logrus"
)
type MembershipUpdater struct {
@ -104,12 +103,10 @@ func (u *MembershipUpdater) Update(newMembership tables.MembershipState, event *
return fmt.Errorf("u.d.AssignStateKeyNID: %w", err)
}
inserted, err = u.d.MembershipTable.UpdateMembership(u.ctx, u.txn, u.roomNID, u.targetUserNID, senderUserNID, newMembership, event.EventNID, false)
logrus.Infof("XXX: Updating membership table room %d user %d membership %d event %d", u.roomNID, u.targetUserNID, newMembership, event.EventNID)
if err != nil {
return fmt.Errorf("u.d.MembershipTable.UpdateMembership: %w", err)
}
if !inserted {
logrus.Info("XXX: No change")
return nil
}
switch {