Swiftgram/submodules/TelegramCore/Sources/ExportMessageLink.swift
2019-10-29 00:13:20 +04:00

32 lines
1.0 KiB
Swift

#if os(macOS)
import PostboxMac
import SwiftSignalKitMac
import TelegramApiMac
#else
import Postbox
import TelegramApi
import SwiftSignalKit
#endif
public func exportMessageLink(account: Account, peerId: PeerId, messageId: MessageId) -> Signal<String?, NoError> {
return account.postbox.transaction { transaction -> Peer? in
return transaction.getPeer(peerId)
}
|> mapToSignal { peer -> Signal<String?, NoError> in
if let peer = peer, let input = apiInputChannel(peer) {
return account.network.request(Api.functions.channels.exportMessageLink(channel: input, id: messageId.id, grouped: .boolTrue)) |> mapError { _ in return }
|> map { res in
switch res {
case let .exportedMessageLink(link, _):
return link
}
} |> `catch` { _ -> Signal<String?, NoError> in
return .single(nil)
}
} else {
return .single(nil)
}
}
}