diff --git a/submodules/PeerInfoUI/Sources/ChannelAdminController.swift b/submodules/PeerInfoUI/Sources/ChannelAdminController.swift index 6292a4305e..9cef9312b6 100644 --- a/submodules/PeerInfoUI/Sources/ChannelAdminController.swift +++ b/submodules/PeerInfoUI/Sources/ChannelAdminController.swift @@ -1009,7 +1009,7 @@ public func channelAdminController(context: AccountContext, updatedPresentationD updateState { current in return current.withUpdatedUpdating(true) } - if case let .channel(channel) = channelPeer { + if let channelPeer, case let .channel(channel) = channelPeer { updateRightsDisposable.set((context.engine.peers.addChannelMember(peerId: peerId, memberId: adminId) |> deliverOnMainQueue).start(error: { error in updateState { current in @@ -1017,7 +1017,7 @@ public func channelAdminController(context: AccountContext, updatedPresentationD } if let adminPeer { - let inviteScreen = SendInviteLinkScreen(context: context, link: exportedInvitation?.link, peers: [adminPeer]) + let inviteScreen = SendInviteLinkScreen(context: context, peer: channelPeer, link: exportedInvitation?.link, peers: [adminPeer]) pushControllerImpl?(inviteScreen) dismissImpl?() @@ -1206,8 +1206,8 @@ public func channelAdminController(context: AccountContext, updatedPresentationD } updateRightsDisposable.set((context.peerChannelMemberCategoriesContextsManager.updateMemberAdminRights(engine: context.engine, peerId: peerId, memberId: adminId, adminRights: TelegramChatAdminRights(rights: updateFlags), rank: updateRank) |> deliverOnMainQueue).start(error: { error in if case let .addMemberError(addMemberError) = error, let admin = adminPeer { - if "".isEmpty { - let inviteScreen = SendInviteLinkScreen(context: context, link: exportedInvitation?.link, peers: [admin]) + if let channelPeer { + let inviteScreen = SendInviteLinkScreen(context: context, peer: channelPeer, link: exportedInvitation?.link, peers: [admin]) pushControllerImpl?(inviteScreen) dismissImpl?() diff --git a/submodules/PeerInfoUI/Sources/ChannelMembersController.swift b/submodules/PeerInfoUI/Sources/ChannelMembersController.swift index ba14d8f274..0b947e0716 100644 --- a/submodules/PeerInfoUI/Sources/ChannelMembersController.swift +++ b/submodules/PeerInfoUI/Sources/ChannelMembersController.swift @@ -512,10 +512,11 @@ public func channelMembersController(context: AccountContext, updatedPresentatio let arguments = ChannelMembersControllerArguments(context: context, addMember: { actionsDisposable.add((combineLatest( + context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: peerId)), context.engine.data.get(TelegramEngine.EngineData.Item.Peer.ExportedInvitation(id: peerId)), peersPromise.get() |> take(1) ) - |> deliverOnMainQueue).start(next: { exportedInvitation, members in + |> deliverOnMainQueue).start(next: { chatPeer, exportedInvitation, members in let disabledIds = members?.compactMap({$0.peer.id}) ?? [] let contactsController = context.sharedContext.makeContactMultiselectionController(ContactMultiselectionControllerParams(context: context, updatedPresentationData: updatedPresentationData, mode: .peerSelection(searchChatList: false, searchGroups: false, searchChannels: false), options: [], filters: [.excludeSelf, .disable(disabledIds)])) @@ -547,7 +548,7 @@ public func channelMembersController(context: AccountContext, updatedPresentatio if failedPeerIds.isEmpty { contactsController?.dismiss() } else { - if "".isEmpty { + if let chatPeer { let _ = (context.engine.data.get( EngineDataList(failedPeerIds.compactMap { item -> EnginePeer.Id? in return item.0 @@ -558,7 +559,7 @@ public func channelMembersController(context: AccountContext, updatedPresentatio if !peers.isEmpty, let contactsController, let navigationController = contactsController.navigationController as? NavigationController { var viewControllers = navigationController.viewControllers if let index = viewControllers.firstIndex(where: { $0 === contactsController }) { - let inviteScreen = SendInviteLinkScreen(context: context, link: exportedInvitation?.link, peers: peers) + let inviteScreen = SendInviteLinkScreen(context: context, peer: chatPeer, link: exportedInvitation?.link, peers: peers) viewControllers.remove(at: index) viewControllers.append(inviteScreen) navigationController.setViewControllers(viewControllers, animated: true) diff --git a/submodules/TelegramUI/Components/SendInviteLinkScreen/Sources/SendInviteLinkScreen.swift b/submodules/TelegramUI/Components/SendInviteLinkScreen/Sources/SendInviteLinkScreen.swift index 4846a25d7b..0e52588c4e 100644 --- a/submodules/TelegramUI/Components/SendInviteLinkScreen/Sources/SendInviteLinkScreen.swift +++ b/submodules/TelegramUI/Components/SendInviteLinkScreen/Sources/SendInviteLinkScreen.swift @@ -600,8 +600,14 @@ public class SendInviteLinkScreen: ViewControllerComponentContainer { private var presenceDisposable: Disposable? - public init(context: AccountContext, link: String?, peers: [EnginePeer]) { + public init(context: AccountContext, peer: EnginePeer, link: String?, peers: [EnginePeer]) { self.context = context + + var link = link + if link == nil, let addressName = peer.addressName { + link = "https://t.me/\(addressName)" + } + self.link = link self.peers = peers diff --git a/submodules/TelegramUI/Sources/CreateGroupController.swift b/submodules/TelegramUI/Sources/CreateGroupController.swift index 7645b0c553..13cf818851 100644 --- a/submodules/TelegramUI/Sources/CreateGroupController.swift +++ b/submodules/TelegramUI/Sources/CreateGroupController.swift @@ -781,27 +781,32 @@ public func createGroupControllerImpl(context: AccountContext, peerIds: [PeerId] |> take(1) |> timeout(1.0, queue: .mainQueue(), alternate: .single(nil)) |> deliverOnMainQueue).start(next: { [weak controller] exportedInvitation in - let _ = controller - let _ = exportedInvitation - - if let exportedInvitation, let link = exportedInvitation.link { - let _ = (context.engine.data.get( - EngineDataList(result.failedToInvitePeerIds.map(TelegramEngine.EngineData.Item.Peer.Peer.init(id:))) - ) - |> deliverOnMainQueue).start(next: { peerItems in - guard let controller else { - return - } - let _ = controller - let _ = peerItems - - let peers = peerItems.compactMap { $0 } - if !peers.isEmpty { - let inviteScreen = SendInviteLinkScreen(context: context, link: link, peers: peers) - controller.push(inviteScreen) - } - }) - } + let _ = (context.engine.data.get( + TelegramEngine.EngineData.Item.Peer.Peer(id: result.peerId) + ) + |> deliverOnMainQueue).start(next: { peer in + let _ = controller + let _ = exportedInvitation + + if let peer, let exportedInvitation, let link = exportedInvitation.link { + let _ = (context.engine.data.get( + EngineDataList(result.failedToInvitePeerIds.map(TelegramEngine.EngineData.Item.Peer.Peer.init(id:))) + ) + |> deliverOnMainQueue).start(next: { peerItems in + guard let controller else { + return + } + let _ = controller + let _ = peerItems + + let peers = peerItems.compactMap { $0 } + if !peers.isEmpty { + let inviteScreen = SendInviteLinkScreen(context: context, peer: peer, link: link, peers: peers) + controller.push(inviteScreen) + } + }) + } + }) }) } } diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift index 5bfcea9a4b..326f3620a2 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift @@ -10782,7 +10782,7 @@ func presentAddMembersImpl(context: AccountContext, updatedPresentationData: (in if !peers.isEmpty, let contactsController, let navigationController = contactsController.navigationController as? NavigationController { var viewControllers = navigationController.viewControllers if let index = viewControllers.firstIndex(where: { $0 === contactsController }) { - let inviteScreen = SendInviteLinkScreen(context: context, link: exportedInvitation?.link, peers: peers) + let inviteScreen = SendInviteLinkScreen(context: context, peer: EnginePeer(groupPeer), link: exportedInvitation?.link, peers: peers) viewControllers.remove(at: index) viewControllers.append(inviteScreen) navigationController.setViewControllers(viewControllers, animated: true)