aboutsummaryrefslogtreecommitdiff
path: root/clientapi/routing/profile.go
diff options
context:
space:
mode:
Diffstat (limited to 'clientapi/routing/profile.go')
-rw-r--r--clientapi/routing/profile.go21
1 files changed, 15 insertions, 6 deletions
diff --git a/clientapi/routing/profile.go b/clientapi/routing/profile.go
index 66b58507..564cd588 100644
--- a/clientapi/routing/profile.go
+++ b/clientapi/routing/profile.go
@@ -251,11 +251,15 @@ func updateProfile(
profile *authtypes.Profile,
userID string, evTime time.Time,
) (util.JSONResponse, error) {
- var res api.QueryRoomsForUserResponse
- err := rsAPI.QueryRoomsForUser(ctx, &api.QueryRoomsForUserRequest{
- UserID: device.UserID,
- WantMembership: "join",
- }, &res)
+ deviceUserID, err := spec.NewUserID(device.UserID, true)
+ if err != nil {
+ return util.JSONResponse{
+ Code: http.StatusInternalServerError,
+ JSON: spec.Unknown("internal server error"),
+ }, err
+ }
+
+ rooms, err := rsAPI.QueryRoomsForUser(ctx, *deviceUserID, "join")
if err != nil {
util.GetLogger(ctx).WithError(err).Error("QueryRoomsForUser failed")
return util.JSONResponse{
@@ -264,6 +268,11 @@ func updateProfile(
}, err
}
+ roomIDStrs := make([]string, len(rooms))
+ for i, room := range rooms {
+ roomIDStrs[i] = room.String()
+ }
+
_, domain, err := gomatrixserverlib.SplitID('@', userID)
if err != nil {
util.GetLogger(ctx).WithError(err).Error("gomatrixserverlib.SplitID failed")
@@ -274,7 +283,7 @@ func updateProfile(
}
events, err := buildMembershipEvents(
- ctx, res.RoomIDs, *profile, userID, evTime, rsAPI,
+ ctx, roomIDStrs, *profile, userID, evTime, rsAPI,
)
switch e := err.(type) {
case nil: