mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
implemented a way to filter out roles that can't be assigned to permission, and disable permissions that are above the current power level of the user.
This commit is contained in:
+11
-2
@@ -32,7 +32,9 @@ struct RoomChangePermissionsScreen: View {
|
||||
Section {
|
||||
ForEach(settings) { $setting in
|
||||
ListRow(label: .plain(title: setting.title),
|
||||
kind: .picker(selection: $setting.value, items: setting.allValues))
|
||||
kind: .picker(selection: $setting.roleValue,
|
||||
items: setting.availableValues))
|
||||
.disabled(setting.isDisabled)
|
||||
}
|
||||
} header: {
|
||||
Text(group.name)
|
||||
@@ -64,6 +66,7 @@ struct RoomChangePermissionsScreen: View {
|
||||
|
||||
struct RoomChangePermissionsScreen_Previews: PreviewProvider, TestablePreview {
|
||||
static let roomViewModel = makeViewModel(isSpace: false)
|
||||
static let roomAsUserViewModel = makeViewModel(isSpace: false, ownPowerLevel: RoomRole.user.powerLevel)
|
||||
static let spaceViewModel = makeViewModel(isSpace: true)
|
||||
|
||||
static var previews: some View {
|
||||
@@ -72,14 +75,20 @@ struct RoomChangePermissionsScreen_Previews: PreviewProvider, TestablePreview {
|
||||
}
|
||||
.previewDisplayName("Room")
|
||||
|
||||
NavigationStack {
|
||||
RoomChangePermissionsScreen(context: roomAsUserViewModel.context)
|
||||
}
|
||||
.previewDisplayName("Room as User")
|
||||
|
||||
NavigationStack {
|
||||
RoomChangePermissionsScreen(context: spaceViewModel.context)
|
||||
}
|
||||
.previewDisplayName("Space")
|
||||
}
|
||||
|
||||
static func makeViewModel(isSpace: Bool) -> RoomChangePermissionsScreenViewModel {
|
||||
static func makeViewModel(isSpace: Bool, ownPowerLevel: RoomPowerLevel = RoomRole.creator.powerLevel) -> RoomChangePermissionsScreenViewModel {
|
||||
RoomChangePermissionsScreenViewModel(currentPermissions: .init(powerLevels: .mock),
|
||||
ownPowerLevel: ownPowerLevel,
|
||||
roomProxy: JoinedRoomProxyMock(.init(isSpace: isSpace)),
|
||||
userIndicatorController: UserIndicatorControllerMock(),
|
||||
analytics: ServiceLocator.shared.analytics)
|
||||
|
||||
Reference in New Issue
Block a user