mirror of
https://github.com/ichmagmaus111/ghostgram.git
synced 2026-04-25 00:56:26 +02:00
112 lines
3.9 KiB
Swift
112 lines
3.9 KiB
Swift
import Foundation
|
|
import Postbox
|
|
import TelegramApi
|
|
|
|
|
|
public extension PeerReference {
|
|
var id: PeerId {
|
|
switch self {
|
|
case let .user(id, _):
|
|
return PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(id))
|
|
case let .group(id):
|
|
return PeerId(namespace: Namespaces.Peer.CloudGroup, id: PeerId.Id._internalFromInt64Value(id))
|
|
case let .channel(id, _):
|
|
return PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(id))
|
|
}
|
|
}
|
|
}
|
|
|
|
extension PeerReference {
|
|
var inputPeer: Api.InputPeer {
|
|
switch self {
|
|
case let .user(id, accessHash):
|
|
return .inputPeerUser(.init(userId: id, accessHash: accessHash))
|
|
case let .group(id):
|
|
return .inputPeerChat(.init(chatId: id))
|
|
case let .channel(id, accessHash):
|
|
return .inputPeerChannel(.init(channelId: id, accessHash: accessHash))
|
|
}
|
|
}
|
|
|
|
var inputUser: Api.InputUser? {
|
|
if case let .user(id, accessHash) = self {
|
|
return .inputUser(.init(userId: id, accessHash: accessHash))
|
|
} else {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
var inputChannel: Api.InputChannel? {
|
|
if case let .channel(id, accessHash) = self {
|
|
return .inputChannel(.init(channelId: id, accessHash: accessHash))
|
|
} else {
|
|
return nil
|
|
}
|
|
}
|
|
}
|
|
|
|
func forceApiInputPeer(_ peer: Peer) -> Api.InputPeer? {
|
|
switch peer {
|
|
case let user as TelegramUser:
|
|
return Api.InputPeer.inputPeerUser(.init(userId: user.id.id._internalGetInt64Value(), accessHash: user.accessHash?.value ?? 0))
|
|
case let group as TelegramGroup:
|
|
return Api.InputPeer.inputPeerChat(.init(chatId: group.id.id._internalGetInt64Value()))
|
|
case let channel as TelegramChannel:
|
|
if let accessHash = channel.accessHash {
|
|
return Api.InputPeer.inputPeerChannel(.init(channelId: channel.id.id._internalGetInt64Value(), accessHash: accessHash.value))
|
|
} else {
|
|
return nil
|
|
}
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func apiInputPeer(_ peer: Peer) -> Api.InputPeer? {
|
|
switch peer {
|
|
case let user as TelegramUser where user.accessHash != nil:
|
|
return Api.InputPeer.inputPeerUser(.init(userId: user.id.id._internalGetInt64Value(), accessHash: user.accessHash!.value))
|
|
case let group as TelegramGroup:
|
|
return Api.InputPeer.inputPeerChat(.init(chatId: group.id.id._internalGetInt64Value()))
|
|
case let channel as TelegramChannel:
|
|
if let accessHash = channel.accessHash {
|
|
return Api.InputPeer.inputPeerChannel(.init(channelId: channel.id.id._internalGetInt64Value(), accessHash: accessHash.value))
|
|
} else {
|
|
return nil
|
|
}
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func apiInputPeerOrSelf(_ peer: Peer, accountPeerId: PeerId) -> Api.InputPeer? {
|
|
if peer.id == accountPeerId {
|
|
return .inputPeerSelf
|
|
}
|
|
return apiInputPeer(peer)
|
|
}
|
|
|
|
func apiInputChannel(_ peer: Peer) -> Api.InputChannel? {
|
|
if let channel = peer as? TelegramChannel, let accessHash = channel.accessHash {
|
|
return Api.InputChannel.inputChannel(.init(channelId: channel.id.id._internalGetInt64Value(), accessHash: accessHash.value))
|
|
} else {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func apiInputUser(_ peer: Peer) -> Api.InputUser? {
|
|
if let user = peer as? TelegramUser, let accessHash = user.accessHash {
|
|
return Api.InputUser.inputUser(.init(userId: user.id.id._internalGetInt64Value(), accessHash: accessHash.value))
|
|
} else {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func apiInputSecretChat(_ peer: Peer) -> Api.InputEncryptedChat? {
|
|
if let chat = peer as? TelegramSecretChat {
|
|
return Api.InputEncryptedChat.inputEncryptedChat(.init(chatId: Int32(peer.id.id._internalGetInt64Value()), accessHash: chat.accessHash))
|
|
} else {
|
|
return nil
|
|
}
|
|
}
|