From a281d154447e5165caf35a3365ab2bb50a10fc6f Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 31 Aug 2023 02:30:48 +0400 Subject: [PATCH] Update API --- .../TelegramEngine/Peers/AddressNames.swift | 27 +++++++++++++++++++ .../Peers/TelegramEnginePeers.swift | 7 +++++ .../Sources/MediaEditorScreen.swift | 2 +- 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Peers/AddressNames.swift b/submodules/TelegramCore/Sources/TelegramEngine/Peers/AddressNames.swift index 5620190e15..60633975b5 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Peers/AddressNames.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Peers/AddressNames.swift @@ -546,6 +546,33 @@ func _internal_adminedPublicChannels(account: Account, scope: AdminedPublicChann } } +func _internal_channelsForStories(account: Account) -> Signal<[Peer], NoError> { + let accountPeerId = account.peerId + return account.network.request(Api.functions.stories.getChatsToSend()) + |> retryRequest + |> mapToSignal { result -> Signal<[Peer], NoError> in + return account.postbox.transaction { transaction -> [Peer] in + let chats: [Api.Chat] + let parsedPeers: AccumulatedPeers + switch result { + case let .chats(apiChats): + chats = apiChats + case let .chatsSlice(_, apiChats): + chats = apiChats + } + parsedPeers = AccumulatedPeers(transaction: transaction, chats: chats, users: []) + updatePeers(transaction: transaction, accountPeerId: accountPeerId, peers: parsedPeers) + var peers: [Peer] = [] + for chat in chats { + if let peer = transaction.getPeer(chat.peerId) { + peers.append(peer) + } + } + return peers + } + } +} + public enum ChannelAddressNameAssignmentAvailability { case available case unknown diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Peers/TelegramEnginePeers.swift b/submodules/TelegramCore/Sources/TelegramEngine/Peers/TelegramEnginePeers.swift index 6d7a6531a8..2d91867264 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Peers/TelegramEnginePeers.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Peers/TelegramEnginePeers.swift @@ -72,6 +72,13 @@ public extension TelegramEngine { return peers.map(EnginePeer.init) } } + + public func channelsForStories() -> Signal<[EnginePeer], NoError> { + return _internal_channelsForStories(account: self.account) + |> map { peers -> [EnginePeer] in + return peers.map(EnginePeer.init) + } + } public func channelAddressNameAssignmentAvailability(peerId: PeerId?) -> Signal { return _internal_channelAddressNameAssignmentAvailability(account: self.account, peerId: peerId) diff --git a/submodules/TelegramUI/Components/MediaEditorScreen/Sources/MediaEditorScreen.swift b/submodules/TelegramUI/Components/MediaEditorScreen/Sources/MediaEditorScreen.swift index 618e1f5dce..8c88fd1dfa 100644 --- a/submodules/TelegramUI/Components/MediaEditorScreen/Sources/MediaEditorScreen.swift +++ b/submodules/TelegramUI/Components/MediaEditorScreen/Sources/MediaEditorScreen.swift @@ -3712,7 +3712,7 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate self.displayNode.view.addInteraction(dropInteraction) Queue.mainQueue().after(1.0) { - self.adminedChannels.set(.single([]) |> then(self.context.engine.peers.adminedPublicChannels(scope: .all))) + self.adminedChannels.set(.single([]) |> then(self.context.engine.peers.channelsForStories())) self.closeFriends.set(self.context.engine.data.get(TelegramEngine.EngineData.Item.Contacts.CloseFriends())) } }