mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
84 lines
2.1 KiB
Swift
84 lines
2.1 KiB
Swift
import Postbox
|
|
|
|
public enum EnginePeer: Equatable {
|
|
public typealias Id = PeerId
|
|
|
|
case user(TelegramUser)
|
|
case legacyGroup(TelegramGroup)
|
|
case channel(TelegramChannel)
|
|
case secretChat(TelegramSecretChat)
|
|
|
|
public static func ==(lhs: EnginePeer, rhs: EnginePeer) -> Bool {
|
|
switch lhs {
|
|
case let .user(user):
|
|
if case .user(user) = rhs {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
case let .legacyGroup(legacyGroup):
|
|
if case .legacyGroup(legacyGroup) = rhs {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
case let .channel(channel):
|
|
if case .channel(channel) = rhs {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
case let .secretChat(secretChat):
|
|
if case .secretChat(secretChat) = rhs {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public extension EnginePeer {
|
|
var id: Id {
|
|
return self._asPeer().id
|
|
}
|
|
|
|
var addressName: String? {
|
|
return self._asPeer().addressName
|
|
}
|
|
|
|
var indexName: PeerIndexNameRepresentation {
|
|
return self._asPeer().indexName
|
|
}
|
|
}
|
|
|
|
public extension EnginePeer {
|
|
init(_ peer: Peer) {
|
|
switch peer {
|
|
case let user as TelegramUser:
|
|
self = .user(user)
|
|
case let group as TelegramGroup:
|
|
self = .legacyGroup(group)
|
|
case let channel as TelegramChannel:
|
|
self = .channel(channel)
|
|
case let secretChat as TelegramSecretChat:
|
|
self = .secretChat(secretChat)
|
|
default:
|
|
preconditionFailure("Unknown peer type")
|
|
}
|
|
}
|
|
|
|
func _asPeer() -> Peer {
|
|
switch self {
|
|
case let .user(user):
|
|
return user
|
|
case let .legacyGroup(legacyGroup):
|
|
return legacyGroup
|
|
case let .channel(channel):
|
|
return channel
|
|
case let .secretChat(secretChat):
|
|
return secretChat
|
|
}
|
|
}
|
|
}
|