tapping on the space title will open the settings (if permissions are available)

This commit is contained in:
Mauro Romito
2025-12-18 21:40:43 +01:00
committed by Mauro
parent 53a20f2a89
commit f2fc164e2b
3 changed files with 12 additions and 1 deletions
@@ -31,9 +31,10 @@ struct SpaceScreenViewState: BindableState {
var canEditBaseInfo = false
var canEditRolesAndPermissions = false
var canEditSecurityAndPrivacy = false
var isSpaceManagementEnabled: Bool {
canEditBaseInfo || canEditRolesAndPermissions
canEditBaseInfo || canEditRolesAndPermissions || canEditSecurityAndPrivacy
}
var bindings = SpaceScreenViewStateBindings()
@@ -88,10 +88,13 @@ class SpaceScreenViewModel: SpaceScreenViewModelType, SpaceScreenViewModelProtoc
guard isEnabled, let powerLevels = roomInfo.powerLevels else {
state.canEditBaseInfo = false
state.canEditRolesAndPermissions = false
state.canEditSecurityAndPrivacy = false
return
}
state.canEditBaseInfo = powerLevels.canOwnUserEditBaseInfo()
state.canEditRolesAndPermissions = powerLevels.canOwnUserEditRolesAndPermissions()
state.canEditSecurityAndPrivacy = powerLevels.canOwnUserEditSecurityAndPrivacy(isSpace: roomInfo.isSpace,
joinRule: roomInfo.joinRule)
}
.store(in: &cancellables)
}
@@ -55,6 +55,13 @@ struct SpaceScreen: View {
RoomHeaderView(roomName: context.viewState.space.name,
roomAvatar: context.viewState.space.avatar,
mediaProvider: context.mediaProvider)
.contentShape(.rect)
.onTapGesture {
if context.viewState.isSpaceManagementEnabled,
let roomProxy = context.viewState.roomProxy {
context.send(viewAction: .spaceSettings(roomProxy: roomProxy))
}
}
}
// This should really use a ToolbarItemGroup(placement: .secondaryAction), however it