patch display without avatars

This commit is contained in:
cheykrym 2025-12-09 22:12:24 +03:00
parent 4ee1e20527
commit fd96ca7cbc
4 changed files with 66 additions and 44 deletions

View File

@ -63,14 +63,27 @@ extension UserSearchResult {
} }
var avatarInitial: String { var avatarInitial: String {
let source = preferredCustomName let nameSource: String?
?? officialFullName if let customName = preferredCustomName, !customName.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
?? login nameSource = customName
?? userId.uuidString } else if let fullName = officialFullName, !fullName.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
nameSource = fullName
if let character = source.first(where: { !$0.isWhitespace && $0 != "@" }) { } else {
return String(character).uppercased() nameSource = nil
} }
if let name = nameSource {
let components = name.split(separator: " ")
let nameInitials = components.prefix(2).compactMap { $0.first }
if !nameInitials.isEmpty {
return nameInitials.map { String($0) }.joined().uppercased()
}
}
if let login = login, !login.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
return String(login.prefix(1)).uppercased()
}
return "?" return "?"
} }

View File

@ -976,24 +976,27 @@ private struct ChatRowView: View {
} }
private var initial: String { private var initial: String {
let sourceName: String let nameSource: String?
if let customName = chat.chatData?.customName, !customName.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
if let custom = chat.chatData?.customName, !custom.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { nameSource = customName
sourceName = custom } else if let fullName = chat.chatData?.fullName, !fullName.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
} else if let displayName = officialDisplayName { nameSource = fullName
sourceName = displayName
} else if let full = chat.chatData?.fullName?.trimmingCharacters(in: .whitespacesAndNewlines), !full.isEmpty {
sourceName = full
} else if let login = chat.chatData?.login?.trimmingCharacters(in: .whitespacesAndNewlines), !login.isEmpty {
sourceName = login
} else { } else {
sourceName = NSLocalizedString("Неизвестный пользователь", comment: "") nameSource = nil
} }
if let character = sourceName.first(where: { !$0.isWhitespace && $0 != "@" }) { if let name = nameSource {
return String(character).uppercased() let components = name.split(separator: " ")
let nameInitials = components.prefix(2).compactMap { $0.first }
if !nameInitials.isEmpty {
return nameInitials.map { String($0) }.joined().uppercased()
}
} }
if let login = chat.chatData?.login, !login.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
return String(login.prefix(1)).uppercased()
}
return "?" return "?"
} }

View File

@ -295,20 +295,24 @@ private struct Contact: Identifiable, Equatable {
let handle: String? let handle: String?
var initials: String { var initials: String {
let components = displayName.split(separator: " ") let nameSource: String?
let nameInitials = components.prefix(2).compactMap { $0.first } if let customName, !customName.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
if !nameInitials.isEmpty { nameSource = customName
return nameInitials } else if let fullName, !fullName.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
.map { String($0).uppercased() } nameSource = fullName
.joined() } else {
nameSource = nil
} }
let filtered = login.filter { $0.isLetter }.prefix(2) if let name = nameSource {
if !filtered.isEmpty { let components = name.split(separator: " ")
return filtered.uppercased() let nameInitials = components.prefix(2).compactMap { $0.first }
if !nameInitials.isEmpty {
return nameInitials.map { String($0) }.joined().uppercased()
}
} }
return "??" return String(login.prefix(1)).uppercased()
} }
var formattedCreatedAt: String { var formattedCreatedAt: String {

View File

@ -227,22 +227,24 @@ private struct BlockedUser: Identifiable, Equatable {
private(set) var handle: String? private(set) var handle: String?
var initials: String { var initials: String {
let components = displayName.split(separator: " ") let nameSource: String?
let nameInitials = components.prefix(2).compactMap { $0.first } if let customName, !customName.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
if !nameInitials.isEmpty { nameSource = customName
return nameInitials } else if let fullName, !fullName.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
.map { String($0).uppercased() } nameSource = fullName
.joined() } else {
nameSource = nil
} }
if let handle { if let name = nameSource {
let filtered = handle.filter { $0.isLetter }.prefix(2) let components = name.split(separator: " ")
if !filtered.isEmpty { let nameInitials = components.prefix(2).compactMap { $0.first }
return filtered.uppercased() if !nameInitials.isEmpty {
return nameInitials.map { String($0) }.joined().uppercased()
} }
} }
return "??" return String(login.prefix(1)).uppercased()
} }
init(payload: BlockedUserInfo) { init(payload: BlockedUserInfo) {