check permissions and if a space before calling sec and privacy APIs

This commit is contained in:
Mauro Romito
2026-01-07 11:50:08 +01:00
committed by Mauro
parent f765f6e755
commit 4a24db7758
@@ -179,7 +179,8 @@ class SecurityAndPrivacyScreenViewModel: SecurityAndPrivacyScreenViewModelType,
var hasFailures = false var hasFailures = false
if state.currentSettings.isEncryptionEnabled != state.bindings.desiredSettings.isEncryptionEnabled { if !state.isSpace {
if state.canEnableEncryption, state.currentSettings.isEncryptionEnabled != state.bindings.desiredSettings.isEncryptionEnabled {
switch await roomProxy.enableEncryption() { switch await roomProxy.enableEncryption() {
case .success: case .success:
state.currentSettings.isEncryptionEnabled = state.bindings.desiredSettings.isEncryptionEnabled state.currentSettings.isEncryptionEnabled = state.bindings.desiredSettings.isEncryptionEnabled
@@ -189,7 +190,7 @@ class SecurityAndPrivacyScreenViewModel: SecurityAndPrivacyScreenViewModelType,
} }
} }
if state.currentSettings.historyVisibility != state.bindings.desiredSettings.historyVisibility { if state.canEditHistoryVisibility, state.currentSettings.historyVisibility != state.bindings.desiredSettings.historyVisibility {
switch await roomProxy.updateHistoryVisibility(state.bindings.desiredSettings.historyVisibility.toRoomHistoryVisibility) { switch await roomProxy.updateHistoryVisibility(state.bindings.desiredSettings.historyVisibility.toRoomHistoryVisibility) {
case .success: case .success:
state.currentSettings.historyVisibility = state.bindings.desiredSettings.historyVisibility state.currentSettings.historyVisibility = state.bindings.desiredSettings.historyVisibility
@@ -198,8 +199,9 @@ class SecurityAndPrivacyScreenViewModel: SecurityAndPrivacyScreenViewModelType,
hasFailures = true hasFailures = true
} }
} }
}
if state.currentSettings.accessType != state.bindings.desiredSettings.accessType { if state.canEditJoinRule, state.currentSettings.accessType != state.bindings.desiredSettings.accessType {
// When a user changes join rules to something other than knock or public, // When a user changes join rules to something other than knock or public,
// the room should be automatically made invisible (private) in the room directory. // the room should be automatically made invisible (private) in the room directory.
if state.currentSettings.accessType != .askToJoin, state.currentSettings.accessType != .anyone { if state.currentSettings.accessType != .askToJoin, state.currentSettings.accessType != .anyone {
@@ -215,7 +217,7 @@ class SecurityAndPrivacyScreenViewModel: SecurityAndPrivacyScreenViewModelType,
} }
} }
if state.currentSettings.isVisibileInRoomDirectory != state.bindings.desiredSettings.isVisibileInRoomDirectory { if state.canEditAddress, state.currentSettings.isVisibileInRoomDirectory != state.bindings.desiredSettings.isVisibileInRoomDirectory {
let visibility: RoomVisibility = state.bindings.desiredSettings.isVisibileInRoomDirectory == true ? .public : .private let visibility: RoomVisibility = state.bindings.desiredSettings.isVisibileInRoomDirectory == true ? .public : .private
switch await roomProxy.updateRoomDirectoryVisibility(visibility) { switch await roomProxy.updateRoomDirectoryVisibility(visibility) {