mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-12 17:33:09 -06:00
Move membership update to roomserver consumer
This commit is contained in:
parent
40a806ce78
commit
f8cb14678c
|
|
@ -39,8 +39,10 @@ CREATE TABLE IF NOT EXISTS memberships (
|
||||||
CREATE UNIQUE INDEX IF NOT EXISTS membership_event_id ON memberships(event_id);
|
CREATE UNIQUE INDEX IF NOT EXISTS membership_event_id ON memberships(event_id);
|
||||||
`
|
`
|
||||||
|
|
||||||
const insertMembershipSQL = "" +
|
const insertMembershipSQL = `
|
||||||
"INSERT INTO memberships(localpart, room_id, event_id) VALUES ($1, $2, $3)"
|
INSERT INTO memberships(localpart, room_id, event_id) VALUES ($1, $2, $3)
|
||||||
|
ON CONFLICT (localpart, room_id) DO UPDATE SET event_id = EXCLUDED.event_id
|
||||||
|
`
|
||||||
|
|
||||||
const selectMembershipSQL = "" +
|
const selectMembershipSQL = "" +
|
||||||
"SELECT * from memberships WHERE localpart = $1 AND room_id = $2"
|
"SELECT * from memberships WHERE localpart = $1 AND room_id = $2"
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,11 @@ func (s *OutputRoomEvent) lookupStateEvents(
|
||||||
) ([]gomatrixserverlib.Event, error) {
|
) ([]gomatrixserverlib.Event, error) {
|
||||||
// Fast path if there aren't any new state events.
|
// Fast path if there aren't any new state events.
|
||||||
if len(addsStateEventIDs) == 0 {
|
if len(addsStateEventIDs) == 0 {
|
||||||
|
// If the event is a membership update (e.g. for a profile update), it won't
|
||||||
|
// show up in AddsStateEventIDs, so we need to add it manually
|
||||||
|
if event.Type() == "m.room.member" {
|
||||||
|
return []gomatrixserverlib.Event{event}, nil
|
||||||
|
}
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -314,12 +314,7 @@ func buildMembershipEvents(
|
||||||
}
|
}
|
||||||
builder.AuthEvents = refs
|
builder.AuthEvents = refs
|
||||||
|
|
||||||
// Generate a new event ID and set it in the database
|
|
||||||
eventID := fmt.Sprintf("$%s:%s", util.RandomString(16), cfg.Matrix.ServerName)
|
eventID := fmt.Sprintf("$%s:%s", util.RandomString(16), cfg.Matrix.ServerName)
|
||||||
if err = db.UpdateMembership(membership.EventID, eventID); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
event, err := builder.Build(eventID, now, cfg.Matrix.ServerName, cfg.Matrix.KeyID, cfg.Matrix.PrivateKey)
|
event, err := builder.Build(eventID, now, cfg.Matrix.ServerName, cfg.Matrix.KeyID, cfg.Matrix.PrivateKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue