mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-17 11:50:56 +00:00
Expand permission count
This commit is contained in:
parent
1a53010f54
commit
f9127e3ebe
@ -328,7 +328,7 @@ private func channelBannedMemberControllerEntries(presentationData: Presentation
|
|||||||
entries.append(.rightsHeader(presentationData.theme, presentationData.strings.GroupPermission_SectionTitle))
|
entries.append(.rightsHeader(presentationData.theme, presentationData.strings.GroupPermission_SectionTitle))
|
||||||
|
|
||||||
var index = 0
|
var index = 0
|
||||||
for (right, _) in allGroupPermissionList(peer: .channel(channel)) {
|
for (right, _) in allGroupPermissionList(peer: .channel(channel), expandMedia: false) {
|
||||||
let defaultEnabled = !defaultBannedRights.flags.contains(right) && channel.hasPermission(.banMembers)
|
let defaultEnabled = !defaultBannedRights.flags.contains(right) && channel.hasPermission(.banMembers)
|
||||||
|
|
||||||
var isSelected = defaultEnabled && !currentRightsFlags.contains(right)
|
var isSelected = defaultEnabled && !currentRightsFlags.contains(right)
|
||||||
@ -388,7 +388,7 @@ private func channelBannedMemberControllerEntries(presentationData: Presentation
|
|||||||
entries.append(.rightsHeader(presentationData.theme, presentationData.strings.GroupPermission_SectionTitle))
|
entries.append(.rightsHeader(presentationData.theme, presentationData.strings.GroupPermission_SectionTitle))
|
||||||
|
|
||||||
var index = 0
|
var index = 0
|
||||||
for (right, _) in allGroupPermissionList(peer: .legacyGroup(group)) {
|
for (right, _) in allGroupPermissionList(peer: .legacyGroup(group), expandMedia: false) {
|
||||||
let defaultEnabled = !defaultBannedRightsFlags.contains(right)
|
let defaultEnabled = !defaultBannedRightsFlags.contains(right)
|
||||||
|
|
||||||
var isSelected = defaultEnabled && !currentRightsFlags.contains(right)
|
var isSelected = defaultEnabled && !currentRightsFlags.contains(right)
|
||||||
@ -471,7 +471,7 @@ public func channelBannedMemberController(context: AccountContext, updatedPresen
|
|||||||
effectiveRightsFlags = effectiveRightsFlags.subtracting(groupPermissionDependencies(rights))
|
effectiveRightsFlags = effectiveRightsFlags.subtracting(groupPermissionDependencies(rights))
|
||||||
} else {
|
} else {
|
||||||
effectiveRightsFlags.insert(rights)
|
effectiveRightsFlags.insert(rights)
|
||||||
for (right, _) in allGroupPermissionList(peer: EnginePeer(peer)) {
|
for (right, _) in allGroupPermissionList(peer: EnginePeer(peer), expandMedia: false) {
|
||||||
if groupPermissionDependencies(right).contains(rights) {
|
if groupPermissionDependencies(right).contains(rights) {
|
||||||
effectiveRightsFlags.insert(right)
|
effectiveRightsFlags.insert(right)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -826,7 +826,7 @@ public final class ChannelMembersSearchContainerNode: SearchDisplayControllerCon
|
|||||||
case let .member(_, _, _, banInfo, _):
|
case let .member(_, _, _, banInfo, _):
|
||||||
if let banInfo = banInfo {
|
if let banInfo = banInfo {
|
||||||
var exceptionsString = ""
|
var exceptionsString = ""
|
||||||
for (rights, _) in allGroupPermissionList(peer: .channel(channel)) {
|
for (rights, _) in allGroupPermissionList(peer: .channel(channel), expandMedia: true) {
|
||||||
if banInfo.rights.flags.contains(rights) {
|
if banInfo.rights.flags.contains(rights) {
|
||||||
if !exceptionsString.isEmpty {
|
if !exceptionsString.isEmpty {
|
||||||
exceptionsString.append(", ")
|
exceptionsString.append(", ")
|
||||||
@ -1086,7 +1086,7 @@ public final class ChannelMembersSearchContainerNode: SearchDisplayControllerCon
|
|||||||
case let .member(_, _, _, banInfo, _):
|
case let .member(_, _, _, banInfo, _):
|
||||||
if let banInfo = banInfo {
|
if let banInfo = banInfo {
|
||||||
var exceptionsString = ""
|
var exceptionsString = ""
|
||||||
for (rights, _) in allGroupPermissionList(peer: .legacyGroup(group)) {
|
for (rights, _) in allGroupPermissionList(peer: .legacyGroup(group), expandMedia: true) {
|
||||||
if banInfo.rights.flags.contains(rights) {
|
if banInfo.rights.flags.contains(rights) {
|
||||||
if !exceptionsString.isEmpty {
|
if !exceptionsString.isEmpty {
|
||||||
exceptionsString.append(", ")
|
exceptionsString.append(", ")
|
||||||
|
|||||||
@ -422,6 +422,18 @@ func compactStringForGroupPermission(strings: PresentationStrings, right: Telegr
|
|||||||
return strings.GroupPermission_NoSendMessages
|
return strings.GroupPermission_NoSendMessages
|
||||||
} else if right.contains(.banSendMedia) {
|
} else if right.contains(.banSendMedia) {
|
||||||
return strings.GroupPermission_NoSendMedia
|
return strings.GroupPermission_NoSendMedia
|
||||||
|
} else if right.contains(.banSendPhotos) {
|
||||||
|
return "no photos"
|
||||||
|
} else if right.contains(.banSendVideos) {
|
||||||
|
return "no videos"
|
||||||
|
} else if right.contains(.banSendMusic) {
|
||||||
|
return "no music"
|
||||||
|
} else if right.contains(.banSendFiles) {
|
||||||
|
return "no files"
|
||||||
|
} else if right.contains(.banSendVoice) {
|
||||||
|
return "no voice messages"
|
||||||
|
} else if right.contains(.banSendInstantVideos) {
|
||||||
|
return "no video messages"
|
||||||
} else if right.contains(.banSendGifs) {
|
} else if right.contains(.banSendGifs) {
|
||||||
return strings.GroupPermission_NoSendGifs
|
return strings.GroupPermission_NoSendGifs
|
||||||
} else if right.contains(.banEmbedLinks) {
|
} else if right.contains(.banEmbedLinks) {
|
||||||
@ -459,9 +471,10 @@ private let internal_allPossibleGroupPermissionList: [(TelegramChatBannedRightsF
|
|||||||
(.banChangeInfo, .changeInfo)
|
(.banChangeInfo, .changeInfo)
|
||||||
]
|
]
|
||||||
|
|
||||||
public func allGroupPermissionList(peer: EnginePeer) -> [(TelegramChatBannedRightsFlags, TelegramChannelPermission)] {
|
public func allGroupPermissionList(peer: EnginePeer, expandMedia: Bool) -> [(TelegramChatBannedRightsFlags, TelegramChannelPermission)] {
|
||||||
|
var result: [(TelegramChatBannedRightsFlags, TelegramChannelPermission)]
|
||||||
if case let .channel(channel) = peer, channel.flags.contains(.isForum) {
|
if case let .channel(channel) = peer, channel.flags.contains(.isForum) {
|
||||||
return [
|
result = [
|
||||||
(.banSendText, .banMembers),
|
(.banSendText, .banMembers),
|
||||||
(.banSendMedia, .banMembers),
|
(.banSendMedia, .banMembers),
|
||||||
(.banAddMembers, .banMembers),
|
(.banAddMembers, .banMembers),
|
||||||
@ -470,7 +483,7 @@ public func allGroupPermissionList(peer: EnginePeer) -> [(TelegramChatBannedRigh
|
|||||||
(.banChangeInfo, .changeInfo)
|
(.banChangeInfo, .changeInfo)
|
||||||
]
|
]
|
||||||
} else {
|
} else {
|
||||||
return [
|
result = [
|
||||||
(.banSendText, .banMembers),
|
(.banSendText, .banMembers),
|
||||||
(.banSendMedia, .banMembers),
|
(.banSendMedia, .banMembers),
|
||||||
(.banAddMembers, .banMembers),
|
(.banAddMembers, .banMembers),
|
||||||
@ -478,6 +491,16 @@ public func allGroupPermissionList(peer: EnginePeer) -> [(TelegramChatBannedRigh
|
|||||||
(.banChangeInfo, .changeInfo)
|
(.banChangeInfo, .changeInfo)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if expandMedia, let index = result.firstIndex(where: { $0.0 == .banSendMedia }) {
|
||||||
|
result.remove(at: index)
|
||||||
|
|
||||||
|
for (subRight, permission) in banSendMediaSubList().reversed() {
|
||||||
|
result.insert((subRight, permission), at: index)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
public func banSendMediaSubList() -> [(TelegramChatBannedRightsFlags, TelegramChannelPermission)] {
|
public func banSendMediaSubList() -> [(TelegramChatBannedRightsFlags, TelegramChannelPermission)] {
|
||||||
@ -534,7 +557,7 @@ private func channelPermissionsControllerEntries(context: AccountContext, presen
|
|||||||
|
|
||||||
entries.append(.permissionsHeader(presentationData.theme, presentationData.strings.GroupInfo_Permissions_SectionTitle))
|
entries.append(.permissionsHeader(presentationData.theme, presentationData.strings.GroupInfo_Permissions_SectionTitle))
|
||||||
var rightIndex: Int = 0
|
var rightIndex: Int = 0
|
||||||
for (rights, correspondingAdminRight) in allGroupPermissionList(peer: .channel(channel)) {
|
for (rights, correspondingAdminRight) in allGroupPermissionList(peer: .channel(channel), expandMedia: false) {
|
||||||
var enabled = true
|
var enabled = true
|
||||||
if channel.addressName != nil && publicGroupRestrictedPermissions.contains(rights) {
|
if channel.addressName != nil && publicGroupRestrictedPermissions.contains(rights) {
|
||||||
enabled = false
|
enabled = false
|
||||||
@ -596,7 +619,7 @@ private func channelPermissionsControllerEntries(context: AccountContext, presen
|
|||||||
|
|
||||||
entries.append(.permissionsHeader(presentationData.theme, presentationData.strings.GroupInfo_Permissions_SectionTitle))
|
entries.append(.permissionsHeader(presentationData.theme, presentationData.strings.GroupInfo_Permissions_SectionTitle))
|
||||||
var rightIndex: Int = 0
|
var rightIndex: Int = 0
|
||||||
for (rights, _) in allGroupPermissionList(peer: .legacyGroup(group)) {
|
for (rights, _) in allGroupPermissionList(peer: .legacyGroup(group), expandMedia: false) {
|
||||||
var subItems: [SubPermission] = []
|
var subItems: [SubPermission] = []
|
||||||
if rights == .banSendMedia {
|
if rights == .banSendMedia {
|
||||||
for (subRight, _) in banSendMediaSubList() {
|
for (subRight, _) in banSendMediaSubList() {
|
||||||
@ -713,7 +736,7 @@ public func channelPermissionsController(context: AccountContext, updatedPresent
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
effectiveRightsFlags.insert(rights)
|
effectiveRightsFlags.insert(rights)
|
||||||
for (right, _) in allGroupPermissionList(peer: .channel(channel)) {
|
for (right, _) in allGroupPermissionList(peer: .channel(channel), expandMedia: false) {
|
||||||
if groupPermissionDependencies(right).contains(rights) {
|
if groupPermissionDependencies(right).contains(rights) {
|
||||||
effectiveRightsFlags.insert(right)
|
effectiveRightsFlags.insert(right)
|
||||||
}
|
}
|
||||||
@ -721,7 +744,7 @@ public func channelPermissionsController(context: AccountContext, updatedPresent
|
|||||||
|
|
||||||
for item in banSendMediaSubList() {
|
for item in banSendMediaSubList() {
|
||||||
effectiveRightsFlags.insert(item.0)
|
effectiveRightsFlags.insert(item.0)
|
||||||
for (right, _) in allGroupPermissionList(peer: .channel(channel)) {
|
for (right, _) in allGroupPermissionList(peer: .channel(channel), expandMedia: false) {
|
||||||
if groupPermissionDependencies(right).contains(item.0) {
|
if groupPermissionDependencies(right).contains(item.0) {
|
||||||
effectiveRightsFlags.insert(right)
|
effectiveRightsFlags.insert(right)
|
||||||
}
|
}
|
||||||
@ -734,7 +757,7 @@ public func channelPermissionsController(context: AccountContext, updatedPresent
|
|||||||
effectiveRightsFlags = effectiveRightsFlags.subtracting(groupPermissionDependencies(rights))
|
effectiveRightsFlags = effectiveRightsFlags.subtracting(groupPermissionDependencies(rights))
|
||||||
} else {
|
} else {
|
||||||
effectiveRightsFlags.insert(rights)
|
effectiveRightsFlags.insert(rights)
|
||||||
for (right, _) in allGroupPermissionList(peer: .channel(channel)) {
|
for (right, _) in allGroupPermissionList(peer: .channel(channel), expandMedia: false) {
|
||||||
if groupPermissionDependencies(right).contains(rights) {
|
if groupPermissionDependencies(right).contains(rights) {
|
||||||
effectiveRightsFlags.insert(right)
|
effectiveRightsFlags.insert(right)
|
||||||
}
|
}
|
||||||
@ -770,7 +793,7 @@ public func channelPermissionsController(context: AccountContext, updatedPresent
|
|||||||
effectiveRightsFlags = effectiveRightsFlags.subtracting(groupPermissionDependencies(rights))
|
effectiveRightsFlags = effectiveRightsFlags.subtracting(groupPermissionDependencies(rights))
|
||||||
} else {
|
} else {
|
||||||
effectiveRightsFlags.insert(rights)
|
effectiveRightsFlags.insert(rights)
|
||||||
for (right, _) in allGroupPermissionList(peer: .legacyGroup(group)) {
|
for (right, _) in allGroupPermissionList(peer: .legacyGroup(group), expandMedia: false) {
|
||||||
if groupPermissionDependencies(right).contains(rights) {
|
if groupPermissionDependencies(right).contains(rights) {
|
||||||
effectiveRightsFlags.insert(right)
|
effectiveRightsFlags.insert(right)
|
||||||
}
|
}
|
||||||
@ -872,7 +895,7 @@ public func channelPermissionsController(context: AccountContext, updatedPresent
|
|||||||
guard let channel = view.peers[view.peerId] as? TelegramChannel else {
|
guard let channel = view.peers[view.peerId] as? TelegramChannel else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for (listRight, permission) in allGroupPermissionList(peer: .channel(channel)) {
|
for (listRight, permission) in allGroupPermissionList(peer: .channel(channel), expandMedia: false) {
|
||||||
if listRight == right {
|
if listRight == right {
|
||||||
let text: String
|
let text: String
|
||||||
let presentationData = updatedPresentationData?.initial ?? context.sharedContext.currentPresentationData.with { $0 }
|
let presentationData = updatedPresentationData?.initial ?? context.sharedContext.currentPresentationData.with { $0 }
|
||||||
|
|||||||
@ -1763,7 +1763,7 @@ private func editingItems(data: PeerInfoScreenData?, state: PeerInfoState, chatL
|
|||||||
var activePermissionCount: Int?
|
var activePermissionCount: Int?
|
||||||
if let defaultBannedRights = channel.defaultBannedRights {
|
if let defaultBannedRights = channel.defaultBannedRights {
|
||||||
var count = 0
|
var count = 0
|
||||||
for (right, _) in allGroupPermissionList(peer: .channel(channel)) {
|
for (right, _) in allGroupPermissionList(peer: .channel(channel), expandMedia: true) {
|
||||||
if right == .banSendMedia {
|
if right == .banSendMedia {
|
||||||
if banSendMediaSubList().allSatisfy({ !defaultBannedRights.flags.contains($0.0) }) {
|
if banSendMediaSubList().allSatisfy({ !defaultBannedRights.flags.contains($0.0) }) {
|
||||||
count += 1
|
count += 1
|
||||||
@ -1781,7 +1781,7 @@ private func editingItems(data: PeerInfoScreenData?, state: PeerInfoState, chatL
|
|||||||
interaction.openParticipantsSection(.members)
|
interaction.openParticipantsSection(.members)
|
||||||
}))
|
}))
|
||||||
if !channel.flags.contains(.isGigagroup) {
|
if !channel.flags.contains(.isGigagroup) {
|
||||||
items[.peerSettings]!.append(PeerInfoScreenDisclosureItem(id: ItemPermissions, label: .text(activePermissionCount.flatMap({ "\($0)/\(allGroupPermissionList(peer: .channel(channel)).count)" }) ?? ""), text: presentationData.strings.GroupInfo_Permissions, icon: UIImage(bundleImageName: "Settings/Menu/SetPasscode"), action: {
|
items[.peerSettings]!.append(PeerInfoScreenDisclosureItem(id: ItemPermissions, label: .text(activePermissionCount.flatMap({ "\($0)/\(allGroupPermissionList(peer: .channel(channel), expandMedia: true).count)" }) ?? ""), text: presentationData.strings.GroupInfo_Permissions, icon: UIImage(bundleImageName: "Settings/Menu/SetPasscode"), action: {
|
||||||
interaction.openPermissions()
|
interaction.openPermissions()
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
@ -1886,7 +1886,7 @@ private func editingItems(data: PeerInfoScreenData?, state: PeerInfoState, chatL
|
|||||||
var activePermissionCount: Int?
|
var activePermissionCount: Int?
|
||||||
if let defaultBannedRights = group.defaultBannedRights {
|
if let defaultBannedRights = group.defaultBannedRights {
|
||||||
var count = 0
|
var count = 0
|
||||||
for (right, _) in allGroupPermissionList(peer: .legacyGroup(group)) {
|
for (right, _) in allGroupPermissionList(peer: .legacyGroup(group), expandMedia: true) {
|
||||||
if right == .banSendMedia {
|
if right == .banSendMedia {
|
||||||
if banSendMediaSubList().allSatisfy({ !defaultBannedRights.flags.contains($0.0) }) {
|
if banSendMediaSubList().allSatisfy({ !defaultBannedRights.flags.contains($0.0) }) {
|
||||||
count += 1
|
count += 1
|
||||||
@ -1900,7 +1900,7 @@ private func editingItems(data: PeerInfoScreenData?, state: PeerInfoState, chatL
|
|||||||
activePermissionCount = count
|
activePermissionCount = count
|
||||||
}
|
}
|
||||||
|
|
||||||
items[.peerSettings]!.append(PeerInfoScreenDisclosureItem(id: ItemPermissions, label: .text(activePermissionCount.flatMap({ "\($0)/\(allGroupPermissionList(peer: .legacyGroup(group)).count)" }) ?? ""), text: presentationData.strings.GroupInfo_Permissions, icon: UIImage(bundleImageName: "Settings/Menu/SetPasscode"), action: {
|
items[.peerSettings]!.append(PeerInfoScreenDisclosureItem(id: ItemPermissions, label: .text(activePermissionCount.flatMap({ "\($0)/\(allGroupPermissionList(peer: .legacyGroup(group), expandMedia: true).count)" }) ?? ""), text: presentationData.strings.GroupInfo_Permissions, icon: UIImage(bundleImageName: "Settings/Menu/SetPasscode"), action: {
|
||||||
interaction.openPermissions()
|
interaction.openPermissions()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user