mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
128 lines
4.2 KiB
Swift
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)
|
|
}
|
|
}
|
|
}
|