diff --git a/server/im_http.go b/server/im_http.go index b66c934..73e8372 100644 --- a/server/im_http.go +++ b/server/im_http.go @@ -6064,8 +6064,7 @@ func groupMemberSettingsPayload(sub *types.Subscription) map[string]any { func groupMemberPayload(sub types.Subscription, mentionable bool) map[string]any { access := sub.ModeGiven & sub.ModeWant - userID := types.ParseUserId(sub.User) - user := &types.User{ObjHeader: types.ObjHeader{Id: userID.String()}, Public: sub.GetPublic(), Trusted: sub.GetTrusted()} + user := &types.User{ObjHeader: types.ObjHeader{Id: sub.User}, Public: sub.GetPublic(), Trusted: sub.GetTrusted()} data := userSummaryPayload(user, "") if private := groupPrivateMap(sub.Private); stringFromAny(private["nickname"]) != "" { data["group_nickname"] = stringFromAny(private["nickname"]) diff --git a/server/im_http_test.go b/server/im_http_test.go index 304307b..55320ee 100644 --- a/server/im_http_test.go +++ b/server/im_http_test.go @@ -2881,6 +2881,28 @@ func TestServeIMGroupMembers(t *testing.T) { } } +func TestGroupMemberPayloadUserIDFormats(t *testing.T) { + raw := types.Uid(101) + fromRaw := groupMemberPayload(types.Subscription{ + User: raw.String(), + ModeWant: types.ModeJoin, + ModeGiven: types.ModeJoin, + }, true) + if fromRaw["user_id"] != raw.UserId() { + t.Fatalf("raw uid user_id: got %#v, want %s", fromRaw["user_id"], raw.UserId()) + } + + prefixed := types.Uid(102) + fromPrefixed := groupMemberPayload(types.Subscription{ + User: prefixed.UserId(), + ModeWant: types.ModeJoin, + ModeGiven: types.ModeJoin, + }, true) + if fromPrefixed["user_id"] != prefixed.UserId() { + t.Fatalf("prefixed uid user_id: got %#v, want %s", fromPrefixed["user_id"], prefixed.UserId()) + } +} + func TestServeIMGroupMemberProfile(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish()