diff --git a/cmd/mautrix-gmessages/legacyprovision.go b/cmd/mautrix-gmessages/legacyprovision.go index eec3ced..b527470 100644 --- a/cmd/mautrix-gmessages/legacyprovision.go +++ b/cmd/mautrix-gmessages/legacyprovision.go @@ -66,7 +66,7 @@ type Response struct { func legacyProvDeleteSession(w http.ResponseWriter, r *http.Request) { user := m.Matrix.Provisioning.GetUser(r) - logins := user.GetCachedUserLogins() + logins := user.GetUserLogins() if len(logins) == 0 { jsonResponse(w, http.StatusNotFound, Error{ Error: "Nothing to purge: no session information stored and no active connection.", @@ -204,7 +204,7 @@ func jsonResponse(w http.ResponseWriter, status int, response interface{}) { func legacyProvLogout(w http.ResponseWriter, r *http.Request) { user := m.Matrix.Provisioning.GetUser(r) - allLogins := user.GetCachedUserLogins() + allLogins := user.GetUserLogins() if len(allLogins) == 0 { jsonResponse(w, http.StatusOK, Error{ Error: "You're not logged in", @@ -496,7 +496,7 @@ func legacyProvQRLogin(w http.ResponseWriter, r *http.Request) { } func handleLoginComplete(ctx context.Context, user *bridgev2.User, newLogin *bridgev2.UserLogin) { - allLogins := user.GetCachedUserLogins() + allLogins := user.GetUserLogins() for _, login := range allLogins { if login.ID != newLogin.ID { login.Delete(ctx, status.BridgeState{StateEvent: status.StateLoggedOut, Reason: "LOGIN_OVERRIDDEN"}, bridgev2.DeleteOpts{}) diff --git a/go.mod b/go.mod index e92fd66..96172a4 100644 --- a/go.mod +++ b/go.mod @@ -12,10 +12,11 @@ require ( golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v3 v3.0.1 - maunium.net/go/mautrix v0.20.1-0.20240820132941-4b7fa711cedb + maunium.net/go/mautrix v0.20.1-0.20240824231714-649a637350a0 ) require ( + filippo.io/edwards25519 v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/gorilla/mux v1.8.0 // indirect diff --git a/go.sum b/go.sum index 33bbdca..ef5e70b 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= @@ -90,5 +92,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= maunium.net/go/mauflag v1.0.0 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M= maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA= -maunium.net/go/mautrix v0.20.1-0.20240820132941-4b7fa711cedb h1:igH5z8eHJ+C3XsuF12gVfUg+HVcZYFnWd1seojJYB7c= -maunium.net/go/mautrix v0.20.1-0.20240820132941-4b7fa711cedb/go.mod h1:NhWZ4jpQ2CW+t6TmGrnydAIL0htdoXmGiNTdHb2PzL4= +maunium.net/go/mautrix v0.20.1-0.20240824231714-649a637350a0 h1:pIpgiOZw7TKae1TEtdu5vC9SX+I+ES1aB07DJo3sACg= +maunium.net/go/mautrix v0.20.1-0.20240824231714-649a637350a0/go.mod h1:gjaQwhKXiw0MDWmGpYvbBbIkmI5bUC7PVgrvn1DgYjI= diff --git a/pkg/connector/chatinfo.go b/pkg/connector/chatinfo.go index 565414a..45e6381 100644 --- a/pkg/connector/chatinfo.go +++ b/pkg/connector/chatinfo.go @@ -80,9 +80,9 @@ func (gc *GMClient) wrapChatInfo(ctx context.Context, conv *gmproto.Conversation } members := &bridgev2.ChatMemberList{ IsFull: true, - Members: []bridgev2.ChatMember{{ - EventSender: bridgev2.EventSender{IsFromMe: true}, - }}, + MemberMap: map[networkid.UserID]bridgev2.ChatMember{ + "": {EventSender: bridgev2.EventSender{IsFromMe: true}}, + }, PowerLevels: &bridgev2.PowerLevelOverrides{ Events: map[event.Type]int{ event.StateRoomName: 0, @@ -110,11 +110,12 @@ func (gc *GMClient) wrapChatInfo(ctx context.Context, conv *gmproto.Conversation } else if !pcp.IsVisible { log.Debug().Any("participant", pcp).Msg("Ignoring fake participant") } else { - members.Members = append(members.Members, bridgev2.ChatMember{ + userID := gc.MakeUserID(pcp.ID.ParticipantID) + members.MemberMap[userID] = bridgev2.ChatMember{ EventSender: bridgev2.EventSender{Sender: gc.MakeUserID(pcp.ID.ParticipantID)}, UserInfo: gc.wrapParticipantInfo(pcp), PowerLevel: ptr.Ptr(50), - }) + } } } if userLoginChanged {