Fix friends display name fallback
This commit is contained in:
@@ -84,22 +84,16 @@ func profilePublicFromFields(base any, nickname, avatarFileID sql.NullString) an
|
||||
public := publicMap(base)
|
||||
if nickname.Valid {
|
||||
value := strings.TrimSpace(nickname.String)
|
||||
for _, key := range []string{"display_name", "nickname", "fn", "name"} {
|
||||
if value == "" {
|
||||
delete(public, key)
|
||||
} else {
|
||||
if value != "" {
|
||||
for _, key := range []string{"display_name", "nickname", "fn", "name"} {
|
||||
public[key] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
if avatarFileID.Valid {
|
||||
value := strings.TrimSpace(avatarFileID.String)
|
||||
for _, key := range []string{"avatar_file_id", "photo", "avatar"} {
|
||||
if value == "" {
|
||||
delete(public, key)
|
||||
} else if key == "avatar_file_id" {
|
||||
public[key] = value
|
||||
}
|
||||
if value != "" {
|
||||
public["avatar_file_id"] = value
|
||||
}
|
||||
}
|
||||
return public
|
||||
|
||||
@@ -47,13 +47,12 @@ func TestProfilePublicFromFields(t *testing.T) {
|
||||
t.Fatalf("profile public not overlaid: %#v", public)
|
||||
}
|
||||
|
||||
public = profilePublicFromFields(public, sql.NullString{Valid: true}, sql.NullString{Valid: true}).(map[string]any)
|
||||
for _, key := range []string{"fn", "name", "nickname", "display_name", "avatar_file_id", "photo", "avatar"} {
|
||||
if _, ok := public[key]; ok {
|
||||
t.Fatalf("field %s should be hidden by empty profile value: %#v", key, public)
|
||||
}
|
||||
}
|
||||
if public["public_account"] != "usrAccount" {
|
||||
t.Fatalf("unrelated public field changed: %#v", public)
|
||||
public = profilePublicFromFields(map[string]any{
|
||||
"fn": "旧昵称",
|
||||
"avatar_file_id": "old_avatar",
|
||||
"public_account": "usrAccount",
|
||||
}, sql.NullString{Valid: true}, sql.NullString{Valid: true}).(map[string]any)
|
||||
if public["fn"] != "旧昵称" || public["avatar_file_id"] != "old_avatar" || public["public_account"] != "usrAccount" {
|
||||
t.Fatalf("empty profile fields should keep existing public values: %#v", public)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user