Compare commits

...

3 Commits

Author SHA1 Message Date
c9bfab0b14 delete user strikethrough 2025-10-08 05:23:33 +03:00
3e1811fa51 avatar to deleted users 2025-10-08 05:15:45 +03:00
bd83abda04 localizable 2025-10-08 05:09:37 +03:00
2 changed files with 66 additions and 16 deletions

View File

@ -1053,7 +1053,14 @@
},
"Неизвестный пользователь" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Unknown User"
}
}
}
},
"Некорректный ответ от сервера." : {

View File

@ -640,12 +640,24 @@ private struct ChatRowView: View {
officialFullName != nil
}
private var isDeletedUser: Bool {
guard chat.chatType != .self else { return false }
let login = chat.chatData?.login?.trimmingCharacters(in: .whitespacesAndNewlines)
return login?.isEmpty ?? true
}
private var avatarBackgroundColor: Color {
isOfficial ? Color.accentColor.opacity(0.85) : Color.accentColor.opacity(0.15)
if isDeletedUser {
return Color(.systemGray5)
}
return isOfficial ? Color.accentColor.opacity(0.85) : Color.accentColor.opacity(0.15)
}
private var avatarTextColor: Color {
isOfficial ? Color.white : Color.accentColor
if isDeletedUser {
return Color.accentColor
}
return isOfficial ? Color.white : Color.accentColor
}
private var messagePreview: String {
@ -742,6 +754,10 @@ private struct ChatRowView: View {
return "?"
}
private var deletedUserSymbolName: String {
return "person.slash"
}
private var subtitleColor: Color {
chat.unreadCount > 0 ? .primary : .secondary
}
@ -768,19 +784,37 @@ private struct ChatRowView: View {
.fill(avatarBackgroundColor)
.frame(width: 44, height: 44)
.overlay(
Group {
if isDeletedUser {
Image(systemName: deletedUserSymbolName)
.symbolRenderingMode(.hierarchical)
.font(.system(size: 20, weight: .semibold))
.foregroundColor(avatarTextColor)
} else {
Text(initial)
.font(.headline)
.foregroundColor(avatarTextColor)
}
}
)
VStack(alignment: .leading, spacing: 4) {
if let officialName = officialFullName {
HStack(spacing: 6) {
if #available(iOS 16.0, *) {
Text(officialName)
.fontWeight(.semibold)
.foregroundColor(.primary)
.lineLimit(1)
.truncationMode(.tail)
.strikethrough(isDeletedUser, color: Color.secondary)
} else {
Text(officialName)
.fontWeight(.semibold)
.foregroundColor(.primary)
.lineLimit(1)
.truncationMode(.tail)
}
Image(systemName: "checkmark.seal.fill")
.foregroundColor(Color.accentColor)
@ -795,11 +829,20 @@ private struct ChatRowView: View {
// .truncationMode(.tail)
// }
} else {
if #available(iOS 16.0, *) {
Text(title)
.fontWeight(chat.unreadCount > 0 ? .semibold : .regular)
.foregroundColor(.primary)
.lineLimit(1)
.truncationMode(.tail)
.strikethrough(isDeletedUser, color: Color.secondary)
} else {
Text(title)
.fontWeight(chat.unreadCount > 0 ? .semibold : .regular)
.foregroundColor(.primary)
.lineLimit(1)
.truncationMode(.tail)
}
}
Text(messagePreview)