add nickname to group member payloads
This commit is contained in:
@@ -7556,6 +7556,7 @@ func groupMemberPayload(sub types.Subscription, mentionable bool, remark string)
|
||||
access := sub.ModeGiven & sub.ModeWant
|
||||
user := &types.User{ObjHeader: types.ObjHeader{Id: sub.User}, Public: sub.GetPublic(), Trusted: sub.GetTrusted()}
|
||||
data := userSummaryPayload(user, remark)
|
||||
copyUserNickname(data, sub.GetPublic())
|
||||
if private := groupPrivateMap(sub.Private); stringFromAny(private["nickname"]) != "" {
|
||||
data["group_nickname"] = stringFromAny(private["nickname"])
|
||||
}
|
||||
@@ -7573,6 +7574,7 @@ func groupBusinessMemberPayload(member types.GroupMember, remark string) map[str
|
||||
access := groupMemberAccess(member)
|
||||
user := &types.User{ObjHeader: types.ObjHeader{Id: member.UserID.String()}, Public: member.Public, Trusted: member.Trusted}
|
||||
data := userSummaryPayload(user, remark)
|
||||
copyUserNickname(data, member.Public)
|
||||
if nickname := strings.TrimSpace(member.Nickname); nickname != "" {
|
||||
data["group_nickname"] = nickname
|
||||
}
|
||||
@@ -7586,6 +7588,21 @@ func groupBusinessMemberPayload(member types.GroupMember, remark string) map[str
|
||||
return data
|
||||
}
|
||||
|
||||
func copyUserNickname(data map[string]any, public any) {
|
||||
var fields map[string]any
|
||||
if value, ok := public.(map[string]any); ok {
|
||||
fields = value
|
||||
} else if value, ok := public.(types.KVMap); ok {
|
||||
fields = map[string]any(value)
|
||||
}
|
||||
if fields == nil {
|
||||
return
|
||||
}
|
||||
if nickname := strings.TrimSpace(fmt.Sprint(fields["nickname"])); nickname != "" {
|
||||
data["nickname"] = nickname
|
||||
}
|
||||
}
|
||||
|
||||
func groupMemberRemarkMap(tenantID types.TenantID, viewer types.Uid, members []types.GroupMember) map[types.Uid]string {
|
||||
remarks := make(map[types.Uid]string)
|
||||
for _, member := range members {
|
||||
|
||||
@@ -4144,7 +4144,7 @@ func TestServeIMGroupMembers(t *testing.T) {
|
||||
ModeWant: types.ModeCPublic,
|
||||
ModeGiven: types.ModeCPublic,
|
||||
Nickname: "群里小王",
|
||||
Public: map[string]any{"display_name": "Alice", "avatar_file_id": "alice.jpg"},
|
||||
Public: map[string]any{"display_name": "Alice", "nickname": "Alice原名", "avatar_file_id": "alice.jpg"},
|
||||
MemberStatus: types.GroupMemberStatusActive,
|
||||
}}
|
||||
|
||||
@@ -4160,6 +4160,7 @@ func TestServeIMGroupMembers(t *testing.T) {
|
||||
data := decodeIMHTTPResponse(t, rec).Data.(map[string]any)
|
||||
items := data["items"].([]any)
|
||||
if len(items) != 1 || items[0].(map[string]any)["display_name"] != "老王" ||
|
||||
items[0].(map[string]any)["nickname"] != "Alice原名" ||
|
||||
items[0].(map[string]any)["group_nickname"] != "群里小王" ||
|
||||
items[0].(map[string]any)["avatar_file_id"] != "alice.jpg" ||
|
||||
items[0].(map[string]any)["mentionable"] != true {
|
||||
|
||||
Reference in New Issue
Block a user