mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-07-31 13:22:46 +00:00
Add MXIDMapping
for pseudoID rooms (#3112)
Add `MXIDMapping` on membership events when creating/joining rooms.
This commit is contained in:
parent
4722f12fab
commit
23cd7877a1
41 changed files with 593 additions and 177 deletions
|
@ -343,9 +343,9 @@ func (s *currentRoomStateStatements) UpsertRoomState(
|
|||
event.RoomID(),
|
||||
event.EventID(),
|
||||
event.Type(),
|
||||
event.SenderID(),
|
||||
event.UserID.String(),
|
||||
containsURL,
|
||||
*event.StateKey(),
|
||||
*event.StateKeyResolved,
|
||||
headeredJSON,
|
||||
membership,
|
||||
addedAt,
|
||||
|
|
|
@ -101,7 +101,7 @@ func (s *inviteEventsStatements) InsertInviteEvent(
|
|||
ctx,
|
||||
inviteEvent.RoomID(),
|
||||
inviteEvent.EventID(),
|
||||
*inviteEvent.StateKey(),
|
||||
inviteEvent.UserID.String(),
|
||||
headeredJSON,
|
||||
).Scan(&streamPos)
|
||||
return
|
||||
|
|
|
@ -109,7 +109,7 @@ func (s *membershipsStatements) UpsertMembership(
|
|||
_, err = sqlutil.TxStmt(txn, s.upsertMembershipStmt).ExecContext(
|
||||
ctx,
|
||||
event.RoomID(),
|
||||
*event.StateKey(),
|
||||
event.StateKeyResolved,
|
||||
membership,
|
||||
event.EventID(),
|
||||
streamPos,
|
||||
|
|
|
@ -407,7 +407,7 @@ func (s *outputRoomEventsStatements) InsertEvent(
|
|||
event.EventID(),
|
||||
headeredJSON,
|
||||
event.Type(),
|
||||
event.SenderID(),
|
||||
event.UserID.String(),
|
||||
containsURL,
|
||||
pq.StringArray(addState),
|
||||
pq.StringArray(removeState),
|
||||
|
|
|
@ -342,9 +342,9 @@ func (s *currentRoomStateStatements) UpsertRoomState(
|
|||
event.RoomID(),
|
||||
event.EventID(),
|
||||
event.Type(),
|
||||
event.SenderID(),
|
||||
event.UserID.String(),
|
||||
containsURL,
|
||||
*event.StateKey(),
|
||||
*event.StateKeyResolved,
|
||||
headeredJSON,
|
||||
membership,
|
||||
addedAt,
|
||||
|
|
|
@ -108,7 +108,7 @@ func (s *inviteEventsStatements) InsertInviteEvent(
|
|||
streamPos,
|
||||
inviteEvent.RoomID(),
|
||||
inviteEvent.EventID(),
|
||||
*inviteEvent.StateKey(),
|
||||
inviteEvent.UserID.String(),
|
||||
headeredJSON,
|
||||
)
|
||||
return
|
||||
|
|
|
@ -112,7 +112,7 @@ func (s *membershipsStatements) UpsertMembership(
|
|||
_, err = sqlutil.TxStmt(txn, s.upsertMembershipStmt).ExecContext(
|
||||
ctx,
|
||||
event.RoomID(),
|
||||
*event.StateKey(),
|
||||
event.StateKeyResolved,
|
||||
membership,
|
||||
event.EventID(),
|
||||
streamPos,
|
||||
|
|
|
@ -348,7 +348,7 @@ func (s *outputRoomEventsStatements) InsertEvent(
|
|||
event.EventID(),
|
||||
headeredJSON,
|
||||
event.Type(),
|
||||
event.SenderID(),
|
||||
event.UserID.String(),
|
||||
containsURL,
|
||||
string(addStateJSON),
|
||||
string(removeStateJSON),
|
||||
|
|
|
@ -43,6 +43,7 @@ func MustWriteEvents(t *testing.T, db storage.Database, events []*rstypes.Header
|
|||
var addStateEventIDs []string
|
||||
var removeStateEventIDs []string
|
||||
if ev.StateKey() != nil {
|
||||
ev.StateKeyResolved = ev.StateKey()
|
||||
addStateEvents = append(addStateEvents, ev)
|
||||
addStateEventIDs = append(addStateEventIDs, ev.EventID())
|
||||
}
|
||||
|
|
|
@ -54,7 +54,13 @@ func TestCurrentRoomStateTable(t *testing.T) {
|
|||
events := room.CurrentState()
|
||||
err := sqlutil.WithTransaction(db, func(txn *sql.Tx) error {
|
||||
for i, ev := range events {
|
||||
err := tab.UpsertRoomState(ctx, txn, ev, nil, types.StreamPosition(i))
|
||||
ev.StateKeyResolved = ev.StateKey()
|
||||
userID, err := spec.NewUserID(string(ev.SenderID()), true)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ev.UserID = *userID
|
||||
err = tab.UpsertRoomState(ctx, txn, ev, nil, types.StreamPosition(i))
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to UpsertRoomState: %w", err)
|
||||
}
|
||||
|
|
|
@ -80,6 +80,7 @@ func TestMembershipsTable(t *testing.T) {
|
|||
defer cancel()
|
||||
|
||||
for _, ev := range userEvents {
|
||||
ev.StateKeyResolved = ev.StateKey()
|
||||
if err := table.UpsertMembership(ctx, nil, ev, types.StreamPosition(ev.Depth()), 1); err != nil {
|
||||
t.Fatalf("failed to upsert membership: %s", err)
|
||||
}
|
||||
|
@ -134,6 +135,7 @@ func testUpsert(t *testing.T, ctx context.Context, table tables.Memberships, mem
|
|||
ev := room.CreateAndInsert(t, user, spec.MRoomMember, map[string]interface{}{
|
||||
"membership": spec.Join,
|
||||
}, test.WithStateKey(user.ID))
|
||||
ev.StateKeyResolved = ev.StateKey()
|
||||
// Insert the same event again, but with different positions, which should get updated
|
||||
if err = table.UpsertMembership(ctx, nil, ev, 2, 2); err != nil {
|
||||
t.Fatalf("failed to upsert membership: %s", err)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue