mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-04 21:41:45 +00:00
Allow public links if private are not available
This commit is contained in:
parent
abc6393487
commit
3a48235d13
@ -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?()
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user