mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-10 23:53:09 -06:00
Use event NID from types.Event
This commit is contained in:
parent
b51bf0be43
commit
1dfef59306
|
|
@ -22,7 +22,7 @@ import (
|
|||
// Move these to a more sensible place.
|
||||
|
||||
func UpdateToInviteMembership(
|
||||
mu *shared.MembershipUpdater, add *gomatrixserverlib.Event, updates []api.OutputEvent,
|
||||
mu *shared.MembershipUpdater, add *types.Event, updates []api.OutputEvent,
|
||||
roomVersion gomatrixserverlib.RoomVersion,
|
||||
) ([]api.OutputEvent, error) {
|
||||
// We may have already sent the invite to the user, either because we are
|
||||
|
|
|
|||
|
|
@ -61,20 +61,14 @@ func (r *Inputer) updateMemberships(
|
|||
var updates []api.OutputEvent
|
||||
|
||||
for _, change := range changes {
|
||||
var ae *gomatrixserverlib.Event
|
||||
var re *gomatrixserverlib.Event
|
||||
var ae *types.Event
|
||||
var re *types.Event
|
||||
targetUserNID := change.EventStateKeyNID
|
||||
if change.removedEventNID != 0 {
|
||||
ev, _ := helpers.EventMap(events).Lookup(change.removedEventNID)
|
||||
if ev != nil {
|
||||
re = ev.Event
|
||||
}
|
||||
re, _ = helpers.EventMap(events).Lookup(change.removedEventNID)
|
||||
}
|
||||
if change.addedEventNID != 0 {
|
||||
ev, _ := helpers.EventMap(events).Lookup(change.addedEventNID)
|
||||
if ev != nil {
|
||||
ae = ev.Event
|
||||
}
|
||||
ae, _ = helpers.EventMap(events).Lookup(change.addedEventNID)
|
||||
}
|
||||
if updates, err = r.updateMembership(updater, targetUserNID, re, ae, updates); err != nil {
|
||||
return nil, err
|
||||
|
|
@ -86,7 +80,7 @@ func (r *Inputer) updateMemberships(
|
|||
func (r *Inputer) updateMembership(
|
||||
updater *shared.RoomUpdater,
|
||||
targetUserNID types.EventStateKeyNID,
|
||||
remove, add *gomatrixserverlib.Event,
|
||||
remove, add *types.Event, // *gomatrixserverlib.Event,
|
||||
updates []api.OutputEvent,
|
||||
) ([]api.OutputEvent, error) {
|
||||
var err error
|
||||
|
|
@ -140,7 +134,7 @@ func (r *Inputer) updateMembership(
|
|||
}
|
||||
}
|
||||
|
||||
func (r *Inputer) isLocalTarget(event *gomatrixserverlib.Event) bool {
|
||||
func (r *Inputer) isLocalTarget(event *types.Event) bool {
|
||||
isTargetLocalUser := false
|
||||
if statekey := event.StateKey(); statekey != nil {
|
||||
_, domain, _ := gomatrixserverlib.SplitID('@', *statekey)
|
||||
|
|
@ -150,7 +144,7 @@ func (r *Inputer) isLocalTarget(event *gomatrixserverlib.Event) bool {
|
|||
}
|
||||
|
||||
func updateToJoinMembership(
|
||||
mu *shared.MembershipUpdater, add *gomatrixserverlib.Event, updates []api.OutputEvent,
|
||||
mu *shared.MembershipUpdater, add *types.Event, updates []api.OutputEvent,
|
||||
) ([]api.OutputEvent, error) {
|
||||
// When we mark a user as being joined we will invalidate any invites that
|
||||
// are active for that user. We notify the consumers that the invites have
|
||||
|
|
@ -175,7 +169,7 @@ func updateToJoinMembership(
|
|||
}
|
||||
|
||||
func updateToLeaveMembership(
|
||||
mu *shared.MembershipUpdater, add *gomatrixserverlib.Event,
|
||||
mu *shared.MembershipUpdater, add *types.Event,
|
||||
newMembership string, updates []api.OutputEvent,
|
||||
) ([]api.OutputEvent, error) {
|
||||
// When we mark a user as having left we will invalidate any invites that
|
||||
|
|
@ -201,7 +195,7 @@ func updateToLeaveMembership(
|
|||
}
|
||||
|
||||
func updateToKnockMembership(
|
||||
mu *shared.MembershipUpdater, add *gomatrixserverlib.Event, updates []api.OutputEvent,
|
||||
mu *shared.MembershipUpdater, add *types.Event, updates []api.OutputEvent,
|
||||
) ([]api.OutputEvent, error) {
|
||||
if _, _, err := mu.Update(tables.MembershipStateKnock, add); err != nil {
|
||||
return nil, err
|
||||
|
|
|
|||
|
|
@ -145,7 +145,11 @@ func (r *Inviter) PerformInvite(
|
|||
if err != nil {
|
||||
return nil, fmt.Errorf("r.DB.MembershipUpdater: %w", err)
|
||||
}
|
||||
outputUpdates, err = helpers.UpdateToInviteMembership(updater, event.Unwrap(), outputUpdates, req.Event.RoomVersion)
|
||||
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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ 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 {
|
||||
|
|
@ -94,7 +95,7 @@ func (u *MembershipUpdater) Delete() error {
|
|||
return u.d.MembershipTable.DeleteMembership(u.ctx, u.txn, u.roomNID, u.targetUserNID)
|
||||
}
|
||||
|
||||
func (u *MembershipUpdater) Update(newMembership tables.MembershipState, event *gomatrixserverlib.Event) (bool, []string, error) {
|
||||
func (u *MembershipUpdater) Update(newMembership tables.MembershipState, event *types.Event) (bool, []string, error) {
|
||||
var inserted bool // Did the query result in a membership change?
|
||||
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 {
|
||||
|
|
@ -102,15 +103,13 @@ func (u *MembershipUpdater) Update(newMembership tables.MembershipState, event *
|
|||
if err != nil {
|
||||
return fmt.Errorf("u.d.AssignStateKeyNID: %w", err)
|
||||
}
|
||||
eventID := event.EventID()
|
||||
// It's possible the event isn't persisted, i.e. in the case of invites,
|
||||
// so don't error if we can't find the event NID.
|
||||
eventNIDs, _ := u.d.eventNIDs(u.ctx, u.txn, []string{eventID}, false)
|
||||
inserted, err = u.d.MembershipTable.UpdateMembership(u.ctx, u.txn, u.roomNID, u.targetUserNID, senderUserNID, newMembership, eventNIDs[eventID], false)
|
||||
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 {
|
||||
|
|
|
|||
Loading…
Reference in a new issue