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 canEditBaseInfo = false
var canEditRolesAndPermissions = false var canEditRolesAndPermissions = false
var canEditSecurityAndPrivacy = false
var isSpaceManagementEnabled: Bool { var isSpaceManagementEnabled: Bool {
canEditBaseInfo || canEditRolesAndPermissions canEditBaseInfo || canEditRolesAndPermissions || canEditSecurityAndPrivacy
} }
var bindings = SpaceScreenViewStateBindings() var bindings = SpaceScreenViewStateBindings()
@@ -88,10 +88,13 @@ class SpaceScreenViewModel: SpaceScreenViewModelType, SpaceScreenViewModelProtoc
guard isEnabled, let powerLevels = roomInfo.powerLevels else { guard isEnabled, let powerLevels = roomInfo.powerLevels else {
state.canEditBaseInfo = false state.canEditBaseInfo = false
state.canEditRolesAndPermissions = false state.canEditRolesAndPermissions = false
state.canEditSecurityAndPrivacy = false
return return
} }
state.canEditBaseInfo = powerLevels.canOwnUserEditBaseInfo() state.canEditBaseInfo = powerLevels.canOwnUserEditBaseInfo()
state.canEditRolesAndPermissions = powerLevels.canOwnUserEditRolesAndPermissions() state.canEditRolesAndPermissions = powerLevels.canOwnUserEditRolesAndPermissions()
state.canEditSecurityAndPrivacy = powerLevels.canOwnUserEditSecurityAndPrivacy(isSpace: roomInfo.isSpace,
joinRule: roomInfo.joinRule)
} }
.store(in: &cancellables) .store(in: &cancellables)
} }
@@ -55,6 +55,13 @@ struct SpaceScreen: View {
RoomHeaderView(roomName: context.viewState.space.name, RoomHeaderView(roomName: context.viewState.space.name,
roomAvatar: context.viewState.space.avatar, roomAvatar: context.viewState.space.avatar,
mediaProvider: context.mediaProvider) 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 // This should really use a ToolbarItemGroup(placement: .secondaryAction), however it