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
|
access := sub.ModeGiven & sub.ModeWant
|
||||||
user := &types.User{ObjHeader: types.ObjHeader{Id: sub.User}, Public: sub.GetPublic(), Trusted: sub.GetTrusted()}
|
user := &types.User{ObjHeader: types.ObjHeader{Id: sub.User}, Public: sub.GetPublic(), Trusted: sub.GetTrusted()}
|
||||||
data := userSummaryPayload(user, remark)
|
data := userSummaryPayload(user, remark)
|
||||||
|
copyUserNickname(data, sub.GetPublic())
|
||||||
if private := groupPrivateMap(sub.Private); stringFromAny(private["nickname"]) != "" {
|
if private := groupPrivateMap(sub.Private); stringFromAny(private["nickname"]) != "" {
|
||||||
data["group_nickname"] = 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)
|
access := groupMemberAccess(member)
|
||||||
user := &types.User{ObjHeader: types.ObjHeader{Id: member.UserID.String()}, Public: member.Public, Trusted: member.Trusted}
|
user := &types.User{ObjHeader: types.ObjHeader{Id: member.UserID.String()}, Public: member.Public, Trusted: member.Trusted}
|
||||||
data := userSummaryPayload(user, remark)
|
data := userSummaryPayload(user, remark)
|
||||||
|
copyUserNickname(data, member.Public)
|
||||||
if nickname := strings.TrimSpace(member.Nickname); nickname != "" {
|
if nickname := strings.TrimSpace(member.Nickname); nickname != "" {
|
||||||
data["group_nickname"] = nickname
|
data["group_nickname"] = nickname
|
||||||
}
|
}
|
||||||
@@ -7586,6 +7588,21 @@ func groupBusinessMemberPayload(member types.GroupMember, remark string) map[str
|
|||||||
return data
|
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 {
|
func groupMemberRemarkMap(tenantID types.TenantID, viewer types.Uid, members []types.GroupMember) map[types.Uid]string {
|
||||||
remarks := make(map[types.Uid]string)
|
remarks := make(map[types.Uid]string)
|
||||||
for _, member := range members {
|
for _, member := range members {
|
||||||
|
|||||||
@@ -4144,7 +4144,7 @@ func TestServeIMGroupMembers(t *testing.T) {
|
|||||||
ModeWant: types.ModeCPublic,
|
ModeWant: types.ModeCPublic,
|
||||||
ModeGiven: types.ModeCPublic,
|
ModeGiven: types.ModeCPublic,
|
||||||
Nickname: "群里小王",
|
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,
|
MemberStatus: types.GroupMemberStatusActive,
|
||||||
}}
|
}}
|
||||||
|
|
||||||
@@ -4160,6 +4160,7 @@ func TestServeIMGroupMembers(t *testing.T) {
|
|||||||
data := decodeIMHTTPResponse(t, rec).Data.(map[string]any)
|
data := decodeIMHTTPResponse(t, rec).Data.(map[string]any)
|
||||||
items := data["items"].([]any)
|
items := data["items"].([]any)
|
||||||
if len(items) != 1 || items[0].(map[string]any)["display_name"] != "老王" ||
|
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)["group_nickname"] != "群里小王" ||
|
||||||
items[0].(map[string]any)["avatar_file_id"] != "alice.jpg" ||
|
items[0].(map[string]any)["avatar_file_id"] != "alice.jpg" ||
|
||||||
items[0].(map[string]any)["mentionable"] != true {
|
items[0].(map[string]any)["mentionable"] != true {
|
||||||
|
|||||||
Reference in New Issue
Block a user