mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 12:07:55 +00:00
pr suggestions
This commit is contained in:
+14
-14
@@ -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 []
|
||||
|
||||
+12
-12
@@ -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
|
||||
}
|
||||
|
||||
+2
-2
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user