diff --git a/ElementX/Sources/Screens/SecurityAndPrivacyScreen/SecurityAndPrivacyScreenModels.swift b/ElementX/Sources/Screens/SecurityAndPrivacyScreen/SecurityAndPrivacyScreenModels.swift index 701d1fc7f..0d76c40f4 100644 --- a/ElementX/Sources/Screens/SecurityAndPrivacyScreen/SecurityAndPrivacyScreenModels.swift +++ b/ElementX/Sources/Screens/SecurityAndPrivacyScreen/SecurityAndPrivacyScreenModels.swift @@ -67,7 +67,7 @@ struct SecurityAndPrivacyScreenViewState: BindableState { } var isSpaceMembersOptionAvailable: Bool { - currentSettings.accessType.isSpaceUsers || isSpaceMembersOptionSelectable + currentSettings.accessType.isSpaceMembers || isSpaceMembersOptionSelectable } var isSpaceMembersOptionSelectable: Bool { @@ -75,7 +75,7 @@ struct SecurityAndPrivacyScreenViewState: BindableState { } var isAskToJoinWithSpaceMembersOptionAvailable: Bool { - currentSettings.accessType.isAskToJoinWithSpaceUsers || isAskToJoinWithSpaceMembersOptionSelectable + currentSettings.accessType.isAskToJoinWithSpaceMembers || isAskToJoinWithSpaceMembersOptionSelectable } var isAskToJoinWithSpaceMembersOptionSelectable: Bool { @@ -113,9 +113,9 @@ struct SecurityAndPrivacyScreenViewState: BindableState { } var accessSectionFooter: AttributedString? { - if (bindings.desiredSettings.accessType.isSpaceUsers && + if (bindings.desiredSettings.accessType.isSpaceMembers && isSpaceMembersOptionSelectable) || - (bindings.desiredSettings.accessType.isAskToJoinWithSpaceUsers && + (bindings.desiredSettings.accessType.isAskToJoinWithSpaceMembers && isAskToJoinWithSpaceMembersOptionSelectable), case .multiple = spaceSelection { Self.accessSectionFooterAttributedString @@ -141,7 +141,7 @@ struct SecurityAndPrivacyScreenViewState: BindableState { } else if selectableSpacesCount > 1 { .multiple } else if let joinedParent = joinedParentSpaces.first { - if currentSettings.accessType.isSpaceUsers || currentSettings.accessType.isAskToJoinWithSpaceUsers { + if currentSettings.accessType.isSpaceMembers || currentSettings.accessType.isAskToJoinWithSpaceMembers { if currentSettings.accessType.spaceIDs.isEmpty { // Edge case where the access type is already space members, but it does not contain any id // So if the user wants to add their own parent they need to do it from the selection menu @@ -197,22 +197,22 @@ struct SecurityAndPrivacySettings: Equatable { enum SecurityAndPrivacyRoomAccessType: Equatable { case inviteOnly case askToJoin - case askToJoinWithSpaceUsers(spaceIDs: [String]) + case askToJoinWithSpaceMembers(spaceIDs: [String]) case anyone - case spaceUsers(spaceIDs: [String]) + case spaceMembers(spaceIDs: [String]) - var isSpaceUsers: Bool { + var isSpaceMembers: Bool { switch self { - case .spaceUsers: + case .spaceMembers: true default: false } } - var isAskToJoinWithSpaceUsers: Bool { + var isAskToJoinWithSpaceMembers: Bool { switch self { - case .askToJoinWithSpaceUsers: + case .askToJoinWithSpaceMembers: true default: false @@ -221,16 +221,16 @@ enum SecurityAndPrivacyRoomAccessType: Equatable { var isAddressRequired: Bool { switch self { - case .inviteOnly, .spaceUsers: + case .inviteOnly, .spaceMembers: false - case .anyone, .askToJoin, .askToJoinWithSpaceUsers: + case .anyone, .askToJoin, .askToJoinWithSpaceMembers: true } } var spaceIDs: [String] { switch self { - case .spaceUsers(let spaceIDs), .askToJoinWithSpaceUsers(let spaceIDs): + case .spaceMembers(let spaceIDs), .askToJoinWithSpaceMembers(let spaceIDs): return spaceIDs case .inviteOnly, .askToJoin, .anyone: return [] diff --git a/ElementX/Sources/Screens/SecurityAndPrivacyScreen/SecurityAndPrivacyScreenViewModel.swift b/ElementX/Sources/Screens/SecurityAndPrivacyScreen/SecurityAndPrivacyScreenViewModel.swift index 7b9d5ed30..17b7e8e40 100644 --- a/ElementX/Sources/Screens/SecurityAndPrivacyScreen/SecurityAndPrivacyScreenViewModel.swift +++ b/ElementX/Sources/Screens/SecurityAndPrivacyScreen/SecurityAndPrivacyScreenViewModel.swift @@ -81,7 +81,7 @@ class SecurityAndPrivacyScreenViewModel: SecurityAndPrivacyScreenViewModelType, case .selectedSpaceMembersAccess: handleSelectedSpaceMembersAccess() case .manageSpaces: - displayManageAuthorizedSpacesScreen(isAskToJoin: state.bindings.desiredSettings.accessType.isAskToJoinWithSpaceUsers) + displayManageAuthorizedSpacesScreen(isAskToJoin: state.bindings.desiredSettings.accessType.isAskToJoinWithSpaceMembers) case .selectedAskToJoinWithSpaceMembersAccess: handleSelectedAskToJoinWithSpaceMembersAccess() } @@ -237,16 +237,16 @@ class SecurityAndPrivacyScreenViewModel: SecurityAndPrivacyScreenViewModelType, } private func handleSelectedSpaceMembersAccess() { - guard !state.bindings.desiredSettings.accessType.isSpaceUsers else { + guard !state.bindings.desiredSettings.accessType.isSpaceMembers else { // If the user is tapping the space members access again we do nothing return } switch state.spaceSelection { case .singleJoined(let joinedParent): - state.bindings.desiredSettings.accessType = .spaceUsers(spaceIDs: [joinedParent.id]) + state.bindings.desiredSettings.accessType = .spaceMembers(spaceIDs: [joinedParent.id]) case .singleUnknown(let id): - state.bindings.desiredSettings.accessType = .spaceUsers(spaceIDs: [id]) + state.bindings.desiredSettings.accessType = .spaceMembers(spaceIDs: [id]) case .empty: break // Very edge case. We do nothing in this case. case .multiple: @@ -255,16 +255,16 @@ class SecurityAndPrivacyScreenViewModel: SecurityAndPrivacyScreenViewModelType, } private func handleSelectedAskToJoinWithSpaceMembersAccess() { - guard !state.bindings.desiredSettings.accessType.isAskToJoinWithSpaceUsers else { + guard !state.bindings.desiredSettings.accessType.isAskToJoinWithSpaceMembers else { // If the user is tapping the ask to join with space members access again we do nothing return } switch state.spaceSelection { case .singleJoined(let joinedParent): - state.bindings.desiredSettings.accessType = .askToJoinWithSpaceUsers(spaceIDs: [joinedParent.id]) + state.bindings.desiredSettings.accessType = .askToJoinWithSpaceMembers(spaceIDs: [joinedParent.id]) case .singleUnknown(let id): - state.bindings.desiredSettings.accessType = .askToJoinWithSpaceUsers(spaceIDs: [id]) + state.bindings.desiredSettings.accessType = .askToJoinWithSpaceMembers(spaceIDs: [id]) case .empty: break // Very edge case. We do nothing in this case. case .multiple: @@ -284,7 +284,7 @@ class SecurityAndPrivacyScreenViewModel: SecurityAndPrivacyScreenViewModelType, authorizedSpacesSelection.selectedIDs .sink { [weak self] desiredSelectedIDs in let sortedIDs = desiredSelectedIDs.sorted() - self?.state.bindings.desiredSettings.accessType = isAskToJoin ? .askToJoinWithSpaceUsers(spaceIDs: sortedIDs) : .spaceUsers(spaceIDs: sortedIDs) + self?.state.bindings.desiredSettings.accessType = isAskToJoin ? .askToJoinWithSpaceMembers(spaceIDs: sortedIDs) : .spaceMembers(spaceIDs: sortedIDs) } .store(in: &cancellables) @@ -314,9 +314,9 @@ private extension SecurityAndPrivacyRoomAccessType { .knock case .anyone: .public - case .spaceUsers(let spaceIDs): + case .spaceMembers(let spaceIDs): .restricted(rules: spaceIDs.map { .roomMembership(roomId: $0) }) - case .askToJoinWithSpaceUsers(let spaceIDs): + case .askToJoinWithSpaceMembers(let spaceIDs): .knockRestricted(rules: spaceIDs.map { .roomMembership(roomId: $0) }) } } @@ -358,9 +358,9 @@ private extension Optional where Wrapped == JoinRule { case .knock: return .askToJoin case .knockRestricted(let rules): - return .askToJoinWithSpaceUsers(spaceIDs: Self.spaceIDs(from: rules)) + return .askToJoinWithSpaceMembers(spaceIDs: Self.spaceIDs(from: rules)) case .restricted(let rules): - return .spaceUsers(spaceIDs: Self.spaceIDs(from: rules)) + return .spaceMembers(spaceIDs: Self.spaceIDs(from: rules)) default: return .inviteOnly } diff --git a/ElementX/Sources/Screens/SecurityAndPrivacyScreen/View/SecurityAndPrivacyScreen.swift b/ElementX/Sources/Screens/SecurityAndPrivacyScreen/View/SecurityAndPrivacyScreen.swift index 34226fac5..39be70f0d 100644 --- a/ElementX/Sources/Screens/SecurityAndPrivacyScreen/View/SecurityAndPrivacyScreen.swift +++ b/ElementX/Sources/Screens/SecurityAndPrivacyScreen/View/SecurityAndPrivacyScreen.swift @@ -55,7 +55,7 @@ struct SecurityAndPrivacyScreen: View { ListRow(label: .default(title: L10n.screenSecurityAndPrivacyRoomAccessSpaceMembersOptionTitle, description: context.viewState.spaceMembersDescription, icon: \.space), - kind: .selection(isSelected: context.desiredSettings.accessType.isSpaceUsers) { + kind: .selection(isSelected: context.desiredSettings.accessType.isSpaceMembers) { context.send(viewAction: .selectedSpaceMembersAccess) }) .disabled(!context.viewState.isSpaceMembersOptionSelectable) @@ -103,7 +103,7 @@ struct SecurityAndPrivacyScreen: View { ListRow(label: .default(title: L10n.screenSecurityAndPrivacyAskToJoinOptionTitle, description: context.viewState.askToJoinWithSpaceMembersDescription, icon: \.userAdd), - kind: .selection(isSelected: context.desiredSettings.accessType.isAskToJoinWithSpaceUsers) { context.send(viewAction: .selectedAskToJoinWithSpaceMembersAccess) }) + kind: .selection(isSelected: context.desiredSettings.accessType.isAskToJoinWithSpaceMembers) { context.send(viewAction: .selectedAskToJoinWithSpaceMembersAccess) }) .disabled(!context.viewState.isAskToJoinWithSpaceMembersOptionSelectable) } diff --git a/UnitTests/Sources/SecurityAndPrivacyScreenViewModelTests.swift b/UnitTests/Sources/SecurityAndPrivacyScreenViewModelTests.swift index 4d789a974..19f45d5df 100644 --- a/UnitTests/Sources/SecurityAndPrivacyScreenViewModelTests.swift +++ b/UnitTests/Sources/SecurityAndPrivacyScreenViewModelTests.swift @@ -44,7 +44,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase { } context.send(viewAction: .selectedSpaceMembersAccess) - XCTAssertEqual(context.desiredSettings.accessType, .spaceUsers(spaceIDs: [space.id])) + XCTAssertEqual(context.desiredSettings.accessType, .spaceMembers(spaceIDs: [space.id])) XCTAssertNil(context.viewState.accessSectionFooter) XCTAssertFalse(context.viewState.isSaveDisabled) @@ -75,7 +75,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase { } context.send(viewAction: .selectedAskToJoinWithSpaceMembersAccess) - XCTAssertEqual(context.desiredSettings.accessType, .askToJoinWithSpaceUsers(spaceIDs: [space.id])) + XCTAssertEqual(context.desiredSettings.accessType, .askToJoinWithSpaceMembers(spaceIDs: [space.id])) XCTAssertNil(context.viewState.accessSectionFooter) XCTAssertFalse(context.viewState.isSaveDisabled) @@ -97,7 +97,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase { let deferred = deferFulfillment(context.$viewState) { $0.joinedParentSpaces.count == 0 } try await deferred.fulfill() - XCTAssertEqual(context.viewState.currentSettings.accessType, .spaceUsers(spaceIDs: [space.id])) + XCTAssertEqual(context.viewState.currentSettings.accessType, .spaceMembers(spaceIDs: [space.id])) XCTAssertEqual(context.desiredSettings, context.viewState.currentSettings) XCTAssertTrue(context.viewState.isSpaceMembersOptionSelectable) XCTAssertNil(context.viewState.accessSectionFooter) @@ -113,7 +113,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase { context.send(viewAction: .selectedSpaceMembersAccess) XCTAssertTrue(context.viewState.isSaveDisabled) - XCTAssertEqual(context.desiredSettings.accessType, .spaceUsers(spaceIDs: [space.id])) + XCTAssertEqual(context.desiredSettings.accessType, .spaceMembers(spaceIDs: [space.id])) guard case .singleUnknown = context.viewState.spaceSelection else { XCTFail("Expected spaceSelection to be .singleUnknown") return @@ -150,7 +150,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase { context.send(viewAction: .selectedSpaceMembersAccess) try await deferredAction.fulfill() selectedIDs.send([spaces[0].id]) - XCTAssertEqual(context.desiredSettings.accessType, .spaceUsers(spaceIDs: [spaces[0].id])) + XCTAssertEqual(context.desiredSettings.accessType, .spaceMembers(spaceIDs: [spaces[0].id])) XCTAssertNotNil(context.viewState.accessSectionFooter) XCTAssertFalse(context.viewState.isSaveDisabled) @@ -194,7 +194,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase { context.send(viewAction: .selectedAskToJoinWithSpaceMembersAccess) try await deferredAction.fulfill() selectedIDs.send([spaces[0].id]) - XCTAssertEqual(context.desiredSettings.accessType, .askToJoinWithSpaceUsers(spaceIDs: [spaces[0].id])) + XCTAssertEqual(context.desiredSettings.accessType, .askToJoinWithSpaceMembers(spaceIDs: [spaces[0].id])) XCTAssertNotNil(context.viewState.accessSectionFooter) XCTAssertFalse(context.viewState.isSaveDisabled) @@ -216,7 +216,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase { let deferred = deferFulfillment(context.$viewState) { $0.selectableSpacesCount == 4 } try await deferred.fulfill() - XCTAssertTrue(context.viewState.currentSettings.accessType.isSpaceUsers) + XCTAssertTrue(context.viewState.currentSettings.accessType.isSpaceMembers) XCTAssertTrue(context.viewState.isSaveDisabled) XCTAssertTrue(context.viewState.isSpaceMembersOptionSelectable) guard case .multiple = context.viewState.spaceSelection else { @@ -240,7 +240,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase { context.send(viewAction: .manageSpaces) try await deferredAction.fulfill() selectedIDs.send([spaces[0].id, "unknownSpaceID"]) - XCTAssertEqual(context.desiredSettings.accessType, .spaceUsers(spaceIDs: [spaces[0].id, "unknownSpaceID"])) + XCTAssertEqual(context.desiredSettings.accessType, .spaceMembers(spaceIDs: [spaces[0].id, "unknownSpaceID"])) XCTAssertNotNil(context.viewState.accessSectionFooter) XCTAssertFalse(context.viewState.isSaveDisabled) @@ -263,7 +263,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase { let deferred = deferFulfillment(context.$viewState) { $0.selectableSpacesCount == 0 } try await deferred.fulfill() - XCTAssertTrue(context.viewState.currentSettings.accessType.isSpaceUsers) + XCTAssertTrue(context.viewState.currentSettings.accessType.isSpaceMembers) XCTAssertTrue(context.viewState.isSaveDisabled) XCTAssertFalse(context.viewState.isSpaceMembersOptionSelectable) XCTAssertNil(context.viewState.accessSectionFooter) @@ -283,7 +283,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase { let deferred = deferFulfillment(context.$viewState) { $0.selectableSpacesCount == 1 } try await deferred.fulfill() - XCTAssertTrue(context.viewState.currentSettings.accessType.isSpaceUsers) + XCTAssertTrue(context.viewState.currentSettings.accessType.isSpaceMembers) XCTAssertTrue(context.viewState.isSaveDisabled) XCTAssertTrue(context.viewState.isSpaceMembersOptionSelectable) XCTAssertNotNil(context.viewState.accessSectionFooter)