Fix permissions in legacy groups

This commit is contained in:
Ali 2023-01-27 14:37:49 +01:00
parent 4f51cbc942
commit d34302be47
2 changed files with 44 additions and 8 deletions

View File

@ -620,8 +620,12 @@ private func channelPermissionsControllerEntries(context: AccountContext, presen
entries.append(.permissionsHeader(presentationData.theme, presentationData.strings.GroupInfo_Permissions_SectionTitle))
var rightIndex: Int = 0
for (rights, _) in allGroupPermissionList(peer: .legacyGroup(group), expandMedia: false) {
var isSelected = !effectiveRightsFlags.contains(rights)
var subItems: [SubPermission] = []
if rights == .banSendMedia {
isSelected = banSendMediaSubList().allSatisfy({ !effectiveRightsFlags.contains($0.0) })
for (subRight, _) in banSendMediaSubList() {
let subRightEnabled = true
@ -629,7 +633,7 @@ private func channelPermissionsControllerEntries(context: AccountContext, presen
}
}
entries.append(.permission(presentationData.theme, rightIndex, stringForGroupPermission(strings: presentationData.strings, right: rights, isForum: false), !effectiveRightsFlags.contains(rights), rights, true, subItems, state.expandedPermissions.contains(rights)))
entries.append(.permission(presentationData.theme, rightIndex, stringForGroupPermission(strings: presentationData.strings, right: rights, isForum: false), isSelected, rights, true, subItems, state.expandedPermissions.contains(rights)))
rightIndex += 1
}
@ -793,6 +797,31 @@ public func channelPermissionsController(context: AccountContext, updatedPresent
} else {
effectiveRightsFlags = TelegramChatBannedRightsFlags()
}
if rights == .banSendMedia {
if value {
effectiveRightsFlags.remove(rights)
for item in banSendMediaSubList() {
effectiveRightsFlags.remove(item.0)
}
} else {
effectiveRightsFlags.insert(rights)
for (right, _) in allGroupPermissionList(peer: .legacyGroup(group), expandMedia: false) {
if groupPermissionDependencies(right).contains(rights) {
effectiveRightsFlags.insert(right)
}
}
for item in banSendMediaSubList() {
effectiveRightsFlags.insert(item.0)
for (right, _) in allGroupPermissionList(peer: .legacyGroup(group), expandMedia: false) {
if groupPermissionDependencies(right).contains(item.0) {
effectiveRightsFlags.insert(right)
}
}
}
}
} else {
if value {
effectiveRightsFlags.remove(rights)
effectiveRightsFlags = effectiveRightsFlags.subtracting(groupPermissionDependencies(rights))
@ -804,6 +833,7 @@ public func channelPermissionsController(context: AccountContext, updatedPresent
}
}
}
}
state.modifiedRightsFlags = effectiveRightsFlags
return state
}

View File

@ -778,6 +778,12 @@ public final class ShareController: ViewController {
banSendType = true
}
}
} else if media is TelegramMediaContact || media is TelegramMediaMap {
if case let .channel(channel) = peer, channel.hasBannedPermission(.banSendText) != nil {
banSendType = true
} else if case let .legacyGroup(group) = peer, group.hasBannedPermission(.banSendText) {
banSendType = true
}
}
if banSendType {