mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 15:45:11 +00:00
Space Settings UI tweaks (#4678)
* design tweaks for the space settings flow * pr suggestions * update proj
This commit is contained in:
@@ -28,7 +28,12 @@ struct SpaceScreenViewState: BindableState {
|
||||
var selectedSpaceRoomID: String?
|
||||
var joiningRoomIDs: Set<String> = []
|
||||
|
||||
var isSpaceManagementEnabled = false
|
||||
var canEditBaseInfo = false
|
||||
var canEditRolesAndPermissions = false
|
||||
|
||||
var isSpaceManagementEnabled: Bool {
|
||||
canEditBaseInfo || canEditRolesAndPermissions
|
||||
}
|
||||
|
||||
var bindings = SpaceScreenViewStateBindings()
|
||||
}
|
||||
|
||||
@@ -80,7 +80,17 @@ class SpaceScreenViewModel: SpaceScreenViewModelType, SpaceScreenViewModelProtoc
|
||||
}
|
||||
|
||||
appSettings.$spaceSettingsEnabled
|
||||
.weakAssign(to: \.state.isSpaceManagementEnabled, on: self)
|
||||
.combineLatest(roomProxy.infoPublisher)
|
||||
.sink { [weak self] isEnabled, roomInfo in
|
||||
guard let self else { return }
|
||||
guard isEnabled, let powerLevels = roomInfo.powerLevels else {
|
||||
state.canEditBaseInfo = false
|
||||
state.canEditRolesAndPermissions = false
|
||||
return
|
||||
}
|
||||
state.canEditBaseInfo = powerLevels.canOwnUserEditBaseInfo()
|
||||
state.canEditRolesAndPermissions = powerLevels.canOwnUserEditRolesAndPermissions()
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ struct LeaveSpaceView: View {
|
||||
Label(leaveHandle.confirmationTitle, icon: \.leave)
|
||||
}
|
||||
.buttonStyle(.compound(.primary))
|
||||
} else if context.viewState.isSpaceManagementEnabled {
|
||||
} else if context.viewState.canEditRolesAndPermissions {
|
||||
Button {
|
||||
context.send(viewAction: .rolesAndPermissions)
|
||||
} label: {
|
||||
|
||||
@@ -114,6 +114,7 @@ struct SpaceScreen_Previews: PreviewProvider, TestablePreview {
|
||||
joinedMembersCount: 76,
|
||||
heroes: [.mockDan, .mockBob, .mockCharlie, .mockVerbose],
|
||||
topic: "Description of the space goes right here. Lorem ipsum dolor sit amet consectetur. Leo viverra morbi habitant in.",
|
||||
canonicalAlias: "#engineering-team:element.io",
|
||||
joinRule: .knockRestricted(rules: [.roomMembership(roomId: "")])))
|
||||
let spaceRoomListProxy = SpaceRoomListProxyMock(.init(spaceRoomProxy: spaceRoomProxy,
|
||||
initialSpaceRooms: .mockSpaceList))
|
||||
|
||||
Reference in New Issue
Block a user