fix: align member meta default avatars
This commit is contained in:
@@ -16,12 +16,60 @@ const (
|
||||
)
|
||||
|
||||
func applyDefaultUserAvatar(data map[string]any, userID, gender string) {
|
||||
if data == nil || strings.TrimSpace(stringFromAny(data["avatar_file_id"])) != "" {
|
||||
if data == nil {
|
||||
return
|
||||
}
|
||||
if avatarURL := defaultUserAvatarURL(userID, gender); avatarURL != "" {
|
||||
if strings.TrimSpace(stringFromAny(data["avatar_file_id"])) == "" {
|
||||
avatarURL := defaultUserAvatarURL(userID, gender)
|
||||
if avatarURL == "" {
|
||||
return
|
||||
}
|
||||
data["avatar_file_id"] = avatarURL
|
||||
}
|
||||
applyAvatarURL(data)
|
||||
}
|
||||
|
||||
func applyAvatarURL(data map[string]any) {
|
||||
if data == nil || strings.TrimSpace(stringFromAny(data["avatar_url"])) != "" {
|
||||
return
|
||||
}
|
||||
avatar := strings.TrimSpace(stringFromAny(data["avatar_file_id"]))
|
||||
if isAvatarURLValue(avatar) {
|
||||
data["avatar_url"] = avatar
|
||||
}
|
||||
}
|
||||
|
||||
func publicWithDefaultUserAvatar(public any, userID string) any {
|
||||
data := publicToMap(public)
|
||||
gender := stringFromAny(data["gender"])
|
||||
applyDefaultUserAvatar(data, userID, gender)
|
||||
return data
|
||||
}
|
||||
|
||||
func publicToMap(public any) map[string]any {
|
||||
switch value := public.(type) {
|
||||
case nil:
|
||||
return map[string]any{}
|
||||
case map[string]any:
|
||||
out := make(map[string]any, len(value)+1)
|
||||
for k, v := range value {
|
||||
out[k] = v
|
||||
}
|
||||
return out
|
||||
case types.KVMap:
|
||||
out := make(map[string]any, len(value)+1)
|
||||
for k, v := range value {
|
||||
out[k] = v
|
||||
}
|
||||
return out
|
||||
default:
|
||||
return map[string]any{}
|
||||
}
|
||||
}
|
||||
|
||||
func isAvatarURLValue(value string) bool {
|
||||
return strings.HasPrefix(value, "http://") || strings.HasPrefix(value, "https://") ||
|
||||
strings.HasPrefix(value, "data:") || strings.HasPrefix(value, "/")
|
||||
}
|
||||
|
||||
func defaultUserAvatarURL(userID, gender string) string {
|
||||
|
||||
Reference in New Issue
Block a user