This commit is contained in:
Neil Alexander 2022-06-27 17:14:02 +01:00
parent 9c234b348a
commit 1806fd9e2f
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -95,8 +95,8 @@ func (u *MembershipUpdater) Delete() error {
} }
func (u *MembershipUpdater) Update(newMembership tables.MembershipState, event *gomatrixserverlib.Event) (bool, []string, error) { func (u *MembershipUpdater) Update(newMembership tables.MembershipState, event *gomatrixserverlib.Event) (bool, []string, error) {
var inserted bool var inserted bool // Did the query result in a membership change?
var retired []string var retired []string // Did we retire any updates in the process?
return inserted, retired, u.d.Writer.Do(u.d.DB, u.txn, func(txn *sql.Tx) error { return inserted, retired, u.d.Writer.Do(u.d.DB, u.txn, func(txn *sql.Tx) error {
senderUserNID, err := u.d.assignStateKeyNID(u.ctx, event.Sender()) senderUserNID, err := u.d.assignStateKeyNID(u.ctx, event.Sender())
if err != nil { if err != nil {
@ -115,16 +115,14 @@ func (u *MembershipUpdater) Update(newMembership tables.MembershipState, event *
return nil return nil
} }
switch { switch {
case u.oldMembership == tables.MembershipStateLeaveOrBan && newMembership == tables.MembershipStateInvite: case u.oldMembership != tables.MembershipStateInvite && newMembership == tables.MembershipStateInvite:
// add invite entry
inserted, err = u.d.InvitesTable.InsertInviteEvent( inserted, err = u.d.InvitesTable.InsertInviteEvent(
u.ctx, u.txn, event.EventID(), u.roomNID, u.targetUserNID, senderUserNID, event.JSON(), u.ctx, u.txn, event.EventID(), u.roomNID, u.targetUserNID, senderUserNID, event.JSON(),
) )
if err != nil { if err != nil {
return fmt.Errorf("u.d.InvitesTable.InsertInviteEvent: %w", err) return fmt.Errorf("u.d.InvitesTable.InsertInviteEvent: %w", err)
} }
case u.oldMembership == tables.MembershipStateInvite && newMembership == tables.MembershipStateLeaveOrBan: case u.oldMembership == tables.MembershipStateInvite && newMembership != tables.MembershipStateInvite:
// retire event
retired, err = u.d.InvitesTable.UpdateInviteRetired( retired, err = u.d.InvitesTable.UpdateInviteRetired(
u.ctx, u.txn, u.roomNID, u.targetUserNID, u.ctx, u.txn, u.roomNID, u.targetUserNID,
) )