From acd3f44ebf7b8c220003d5bc00c42b56e8564bd5 Mon Sep 17 00:00:00 2001 From: overtake Date: Fri, 24 Feb 2017 15:38:14 +0100 Subject: [PATCH] add supergroup members --- TelegramCore/AddPeerMember.swift | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/TelegramCore/AddPeerMember.swift b/TelegramCore/AddPeerMember.swift index e7a0ef9844..54b55e5f00 100644 --- a/TelegramCore/AddPeerMember.swift +++ b/TelegramCore/AddPeerMember.swift @@ -87,3 +87,33 @@ public func addPeerMember(account: Account, peerId: PeerId, memberId: PeerId) -> } } |> mapError { _ -> AddPeerMemberError in return .generic } |> switchToLatest } + + +public func addSupergroupMembers(account: Account, peerId: PeerId, memberIds: [PeerId]) -> Signal { + return account.postbox.modify { modifier -> Signal in + + var memberPeerIds:[PeerId:Peer] = [:] + var inputUsers:[Api.InputUser] = [] + for memberId in memberIds { + if let peer = modifier.getPeer(memberId) { + memberPeerIds[peerId] = peer + if let inputUser = apiInputUser(peer) { + inputUsers.append(inputUser) + } + } + } + + if let peer = modifier.getPeer(peerId), let channel = peer as? TelegramChannel, let inputChannel = apiInputChannel(channel) { + return account.network.request(Api.functions.channels.inviteToChannel(channel: inputChannel, users: inputUsers)) + |> retryRequest + |> mapToSignal { result -> Signal in + account.stateManager.addUpdates(result) + return fetchAndUpdateCachedParticipants(peerId: peerId, network:account.network, postbox: account.postbox) + } + } else { + return .fail() + } + + } |> switchToLatest +} +