mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
Basic implementation of the UI, navigation wil be implemented in the next PR
This commit is contained in:
@@ -45,5 +45,6 @@ enum SpaceScreenViewAction {
|
||||
case toggleLeaveSpaceRoomDetails(id: String)
|
||||
case confirmLeaveSpace
|
||||
case spaceSettings
|
||||
case rolesAndPermissions
|
||||
case displayMembers(roomProxy: JoinedRoomProxyProtocol)
|
||||
}
|
||||
|
||||
@@ -76,19 +76,7 @@ class SpaceScreenViewModel: SpaceScreenViewModelType, SpaceScreenViewModelProtoc
|
||||
}
|
||||
|
||||
appSettings.$spaceSettingsEnabled
|
||||
.combineLatest(roomProxy.infoPublisher)
|
||||
.sink { [weak self] isEnabled, info in
|
||||
guard let self else { return }
|
||||
guard isEnabled, let powerLevels = info.powerLevels else {
|
||||
state.isSpaceManagementEnabled = false
|
||||
return
|
||||
}
|
||||
|
||||
state.isSpaceManagementEnabled = powerLevels.canOwnUserEditRolesAndPermissions() ||
|
||||
powerLevels.canOwnUser(sendStateEvent: .roomName) ||
|
||||
powerLevels.canOwnUser(sendStateEvent: .roomTopic) ||
|
||||
powerLevels.canOwnUser(sendStateEvent: .roomAvatar)
|
||||
}
|
||||
.weakAssign(to: \.state.isSpaceManagementEnabled, on: self)
|
||||
.store(in: &cancellables)
|
||||
}
|
||||
}
|
||||
@@ -141,6 +129,8 @@ class SpaceScreenViewModel: SpaceScreenViewModelType, SpaceScreenViewModelProtoc
|
||||
fatalError("Always available when the space settings button is tapped.")
|
||||
}
|
||||
actionsSubject.send(.displaySpaceSettings(roomProxy: roomProxy))
|
||||
case .rolesAndPermissions:
|
||||
break // Not implemented yet
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -99,9 +99,9 @@ struct LeaveSpaceView: View {
|
||||
.buttonStyle(.compound(.primary))
|
||||
} else if context.viewState.isSpaceManagementEnabled {
|
||||
Button {
|
||||
context.send(viewAction: .spaceSettings)
|
||||
context.send(viewAction: .rolesAndPermissions)
|
||||
} label: {
|
||||
Label(L10n.actionGoToSettings, icon: \.settings)
|
||||
Label(L10n.actionGoToRolesAndPermissions, icon: \.settings)
|
||||
}
|
||||
.buttonStyle(.compound(.primary))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user