mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Invite Links Fixes
This commit is contained in:
parent
935f931034
commit
176eaa451f
@ -595,9 +595,25 @@ private func channelVisibilityControllerEntries(presentationData: PresentationDa
|
|||||||
} else {
|
} else {
|
||||||
entries.append(.publicLinkInfo(presentationData.theme, presentationData.strings.Group_Username_CreatePublicLinkHelp))
|
entries.append(.publicLinkInfo(presentationData.theme, presentationData.strings.Group_Username_CreatePublicLinkHelp))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch mode {
|
||||||
|
case .initialSetup:
|
||||||
|
break
|
||||||
|
case .generic, .privateLink:
|
||||||
|
entries.append(.privateLinkManage(presentationData.theme, presentationData.strings.InviteLink_Manage))
|
||||||
|
entries.append(.privateLinkManageInfo(presentationData.theme, presentationData.strings.InviteLink_CreateInfo))
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
entries.append(.publicLinkInfo(presentationData.theme, presentationData.strings.Channel_Username_CreatePublicLinkHelp))
|
entries.append(.publicLinkInfo(presentationData.theme, presentationData.strings.Channel_Username_CreatePublicLinkHelp))
|
||||||
}
|
}
|
||||||
|
switch mode {
|
||||||
|
case .initialSetup:
|
||||||
|
break
|
||||||
|
case .generic, .privateLink:
|
||||||
|
entries.append(.privateLinkManage(presentationData.theme, presentationData.strings.InviteLink_Manage))
|
||||||
|
entries.append(.privateLinkManageInfo(presentationData.theme, presentationData.strings.InviteLink_CreateInfo))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
case .privateChannel:
|
case .privateChannel:
|
||||||
let invite = (view.cachedData as? CachedChannelData)?.exportedInvitation
|
let invite = (view.cachedData as? CachedChannelData)?.exportedInvitation
|
||||||
|
@ -615,7 +615,7 @@ func peerInfoScreenData(context: AccountContext, peerId: PeerId, strings: Presen
|
|||||||
case .channel:
|
case .channel:
|
||||||
let status = context.account.viewTracker.peerView(peerId, updateData: false)
|
let status = context.account.viewTracker.peerView(peerId, updateData: false)
|
||||||
|> map { peerView -> PeerInfoStatusData? in
|
|> map { peerView -> PeerInfoStatusData? in
|
||||||
guard let channel = peerView.peers[peerId] as? TelegramChannel else {
|
guard let _ = peerView.peers[peerId] as? TelegramChannel else {
|
||||||
return PeerInfoStatusData(text: strings.Channel_Status, isActivity: false)
|
return PeerInfoStatusData(text: strings.Channel_Status, isActivity: false)
|
||||||
}
|
}
|
||||||
if let cachedChannelData = peerView.cachedData as? CachedChannelData, let memberCount = cachedChannelData.participantsSummary.memberCount, memberCount != 0 {
|
if let cachedChannelData = peerView.cachedData as? CachedChannelData, let memberCount = cachedChannelData.participantsSummary.memberCount, memberCount != 0 {
|
||||||
@ -654,12 +654,18 @@ func peerInfoScreenData(context: AccountContext, peerId: PeerId, strings: Presen
|
|||||||
discussionPeer = peer
|
discussionPeer = peer
|
||||||
}
|
}
|
||||||
|
|
||||||
if let channel = peerViewMainPeer(peerView) as? TelegramChannel, let cachedData = peerView.cachedData as? CachedChannelData, channel.flags.contains(.isCreator) || ((channel.adminRights != nil && channel.hasPermission(.pinMessages)) && cachedData.flags.contains(.canChangeUsername)), currentInvitationsContext == nil {
|
if currentInvitationsContext == nil {
|
||||||
let invitationsContext = PeerExportedInvitationsContext(account: context.account, peerId: peerId, revoked: false, forceUpdate: true)
|
var canManageInvitations = false
|
||||||
invitationsContextPromise.set(.single(invitationsContext))
|
if let channel = peerViewMainPeer(peerView) as? TelegramChannel, let cachedData = peerView.cachedData as? CachedChannelData, channel.flags.contains(.isCreator) || ((channel.adminRights != nil && channel.hasPermission(.pinMessages)) && cachedData.flags.contains(.canChangeUsername)) {
|
||||||
invitationsStatePromise.set(invitationsContext.state |> map(Optional.init))
|
canManageInvitations = true
|
||||||
|
}
|
||||||
|
if canManageInvitations {
|
||||||
|
let invitationsContext = PeerExportedInvitationsContext(account: context.account, peerId: peerId, revoked: false, forceUpdate: true)
|
||||||
|
invitationsContextPromise.set(.single(invitationsContext))
|
||||||
|
invitationsStatePromise.set(invitationsContext.state |> map(Optional.init))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return PeerInfoScreenData(
|
return PeerInfoScreenData(
|
||||||
peer: peerView.peers[peerId],
|
peer: peerView.peers[peerId],
|
||||||
cachedData: peerView.cachedData,
|
cachedData: peerView.cachedData,
|
||||||
@ -805,12 +811,20 @@ func peerInfoScreenData(context: AccountContext, peerId: PeerId, strings: Presen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let group = peerViewMainPeer(peerView) as? TelegramGroup, case .creator = group.role, currentInvitationsContext == nil {
|
if currentInvitationsContext == nil {
|
||||||
let invitationsContext = PeerExportedInvitationsContext(account: context.account, peerId: peerId, revoked: false, forceUpdate: true)
|
var canManageInvitations = false
|
||||||
invitationsContextPromise.set(.single(invitationsContext))
|
if let group = peerViewMainPeer(peerView) as? TelegramGroup, case .creator = group.role {
|
||||||
invitationsStatePromise.set(invitationsContext.state |> map(Optional.init))
|
canManageInvitations = true
|
||||||
|
} else if let channel = peerViewMainPeer(peerView) as? TelegramChannel, let cachedData = peerView.cachedData as? CachedChannelData, channel.flags.contains(.isCreator) || ((channel.adminRights != nil && channel.hasPermission(.pinMessages)) && cachedData.flags.contains(.canChangeUsername)) {
|
||||||
|
canManageInvitations = true
|
||||||
|
}
|
||||||
|
if canManageInvitations {
|
||||||
|
let invitationsContext = PeerExportedInvitationsContext(account: context.account, peerId: peerId, revoked: false, forceUpdate: true)
|
||||||
|
invitationsContextPromise.set(.single(invitationsContext))
|
||||||
|
invitationsStatePromise.set(invitationsContext.state |> map(Optional.init))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return PeerInfoScreenData(
|
return PeerInfoScreenData(
|
||||||
peer: peerView.peers[groupId],
|
peer: peerView.peers[groupId],
|
||||||
cachedData: peerView.cachedData,
|
cachedData: peerView.cachedData,
|
||||||
|
@ -1185,6 +1185,17 @@ private func editingItems(data: PeerInfoScreenData?, context: AccountContext, pr
|
|||||||
discussionGroupTitle = "..."
|
discussionGroupTitle = "..."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let invitesText: String
|
||||||
|
if let count = data.invitations?.count, count > 0 {
|
||||||
|
invitesText = "\(count)"
|
||||||
|
} else {
|
||||||
|
invitesText = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
items[.peerSettings]!.append(PeerInfoScreenDisclosureItem(id: ItemInviteLinks, label: .text(invitesText), text: presentationData.strings.GroupInfo_InviteLinks, action: {
|
||||||
|
interaction.editingOpenInviteLinksSetup()
|
||||||
|
}))
|
||||||
|
|
||||||
items[.peerSettings]!.append(PeerInfoScreenDisclosureItem(id: ItemDiscussionGroup, label: .text(discussionGroupTitle), text: presentationData.strings.Channel_DiscussionGroup, action: {
|
items[.peerSettings]!.append(PeerInfoScreenDisclosureItem(id: ItemDiscussionGroup, label: .text(discussionGroupTitle), text: presentationData.strings.Channel_DiscussionGroup, action: {
|
||||||
interaction.editingOpenDiscussionGroupSetup()
|
interaction.editingOpenDiscussionGroupSetup()
|
||||||
}))
|
}))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user