2023-05-26 17:32:02 +04:00

128 lines
4.2 KiB
Swift

import Foundation
import TelegramCore
import TelegramPresentationData
import TelegramUIPreferences
//import PhoneNumberFormat
public extension EnginePeer {
var compactDisplayTitle: String {
switch self {
case let .user(user):
if let firstName = user.firstName, !firstName.isEmpty {
return firstName
} else if let lastName = user.lastName, !lastName.isEmpty {
return lastName
} else if let _ = user.phone {
return "" //formatPhoneNumber("+\(phone)")
} else {
return "Deleted Account"
}
case let .legacyGroup(group):
return group.title
case let .channel(channel):
return channel.title
case .secretChat:
return ""
}
}
func displayTitle(strings: PresentationStrings, displayOrder: PresentationPersonNameOrder) -> String {
switch self {
case let .user(user):
if user.id.isReplies {
return strings.DialogList_Replies
}
if let firstName = user.firstName, !firstName.isEmpty {
if let lastName = user.lastName, !lastName.isEmpty {
switch displayOrder {
case .firstLast:
return "\(firstName) \(lastName)"
case .lastFirst:
return "\(lastName) \(firstName)"
}
} else {
return firstName
}
} else if let lastName = user.lastName, !lastName.isEmpty {
return lastName
} else if let _ = user.phone {
return "" //formatPhoneNumber("+\(phone)")
} else {
return strings.User_DeletedAccount
}
case let .legacyGroup(group):
return group.title
case let .channel(channel):
return channel.title
case .secretChat:
return ""
}
}
}
public extension EnginePeer.IndexName {
func isLessThan(other: EnginePeer.IndexName, ordering: PresentationPersonNameOrder) -> ComparisonResult {
switch self {
case let .title(lhsTitle, _):
let rhsString: String
switch other {
case let .title(title, _):
rhsString = title
case let .personName(first, last, _, _):
switch ordering {
case .firstLast:
if first.isEmpty {
rhsString = last
} else {
rhsString = first + last
}
case .lastFirst:
if last.isEmpty {
rhsString = first
} else {
rhsString = last + first
}
}
}
return lhsTitle.caseInsensitiveCompare(rhsString)
case let .personName(lhsFirst, lhsLast, _, _):
let lhsString: String
switch ordering {
case .firstLast:
if lhsFirst.isEmpty {
lhsString = lhsLast
} else {
lhsString = lhsFirst + lhsLast
}
case .lastFirst:
if lhsLast.isEmpty {
lhsString = lhsFirst
} else {
lhsString = lhsLast + lhsFirst
}
}
let rhsString: String
switch other {
case let .title(title, _):
rhsString = title
case let .personName(first, last, _, _):
switch ordering {
case .firstLast:
if first.isEmpty {
rhsString = last
} else {
rhsString = first + last
}
case .lastFirst:
if last.isEmpty {
rhsString = first
} else {
rhsString = last + first
}
}
}
return lhsString.caseInsensitiveCompare(rhsString)
}
}
}