mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
Update history visible settings (#4861)
* Fixes #4852 - Update history visible settings * Address PR comments and move attributed strings to the view state
This commit is contained in:
@@ -702,9 +702,11 @@
|
|||||||
"screen_security_and_privacy_room_directory_visibility_section_footer" = "Allow for this room to be found by searching %1$@ public room directory";
|
"screen_security_and_privacy_room_directory_visibility_section_footer" = "Allow for this room to be found by searching %1$@ public room directory";
|
||||||
"screen_security_and_privacy_room_directory_visibility_toggle_description" = "Allow to be found by searching the public directory.";
|
"screen_security_and_privacy_room_directory_visibility_toggle_description" = "Allow to be found by searching the public directory.";
|
||||||
"screen_security_and_privacy_room_directory_visibility_toggle_title" = "Visible in public directory";
|
"screen_security_and_privacy_room_directory_visibility_toggle_title" = "Visible in public directory";
|
||||||
|
"screen_security_and_privacy_room_history_anyone_option_title" = "Anyone (history is public)";
|
||||||
|
"screen_security_and_privacy_room_history_section_footer" = "Changes won't affect past messages, only new ones. %@";
|
||||||
"screen_security_and_privacy_room_history_section_header" = "Who can read history";
|
"screen_security_and_privacy_room_history_section_header" = "Who can read history";
|
||||||
"screen_security_and_privacy_room_history_since_invite_option_title" = "Members only since they were invited";
|
"screen_security_and_privacy_room_history_since_invite_option_title" = "Members since invited";
|
||||||
"screen_security_and_privacy_room_history_since_selecting_option_title" = "Members only since selecting this option";
|
"screen_security_and_privacy_room_history_since_selecting_option_title" = "Members (full history)";
|
||||||
"screen_security_and_privacy_room_publishing_section_footer" = "Room addresses are ways to find and access rooms. This also ensures you can easily share your room with others.\nYou can choose to publish your room in your homeserver public room directory.";
|
"screen_security_and_privacy_room_publishing_section_footer" = "Room addresses are ways to find and access rooms. This also ensures you can easily share your room with others.\nYou can choose to publish your room in your homeserver public room directory.";
|
||||||
"screen_security_and_privacy_room_publishing_section_header" = "Room publishing";
|
"screen_security_and_privacy_room_publishing_section_header" = "Room publishing";
|
||||||
"screen_security_and_privacy_room_visibility_section_footer" = "Addresses are a way to find and access rooms and spaces. This also ensures you can easily share them with others.";
|
"screen_security_and_privacy_room_visibility_section_footer" = "Addresses are a way to find and access rooms and spaces. This also ensures you can easily share them with others.";
|
||||||
@@ -1411,7 +1413,6 @@
|
|||||||
"screen_security_and_privacy_room_access_anyone_option_title" = "Anyone";
|
"screen_security_and_privacy_room_access_anyone_option_title" = "Anyone";
|
||||||
"screen_security_and_privacy_room_access_footer_manage_spaces_action" = "Manage spaces";
|
"screen_security_and_privacy_room_access_footer_manage_spaces_action" = "Manage spaces";
|
||||||
"screen_security_and_privacy_room_address_section_footer" = "You’ll need an address in order to make it visible in the public directory.";
|
"screen_security_and_privacy_room_address_section_footer" = "You’ll need an address in order to make it visible in the public directory.";
|
||||||
"screen_security_and_privacy_room_history_anyone_option_title" = "Anyone";
|
|
||||||
"screen_space_settings_leave_space" = "Leave space";
|
"screen_space_settings_leave_space" = "Leave space";
|
||||||
"screen_space_settings_roles_and_permissions" = "Roles & permissions";
|
"screen_space_settings_roles_and_permissions" = "Roles & permissions";
|
||||||
"screen_space_settings_security_and_privacy" = "Security & privacy";
|
"screen_space_settings_security_and_privacy" = "Security & privacy";
|
||||||
|
|||||||
@@ -702,9 +702,11 @@
|
|||||||
"screen_security_and_privacy_room_directory_visibility_section_footer" = "Allow for this room to be found by searching %1$@ public room directory";
|
"screen_security_and_privacy_room_directory_visibility_section_footer" = "Allow for this room to be found by searching %1$@ public room directory";
|
||||||
"screen_security_and_privacy_room_directory_visibility_toggle_description" = "Allow to be found by searching the public directory.";
|
"screen_security_and_privacy_room_directory_visibility_toggle_description" = "Allow to be found by searching the public directory.";
|
||||||
"screen_security_and_privacy_room_directory_visibility_toggle_title" = "Visible in public directory";
|
"screen_security_and_privacy_room_directory_visibility_toggle_title" = "Visible in public directory";
|
||||||
|
"screen_security_and_privacy_room_history_anyone_option_title" = "Anyone (history is public)";
|
||||||
|
"screen_security_and_privacy_room_history_section_footer" = "Changes won't affect past messages, only new ones. %@";
|
||||||
"screen_security_and_privacy_room_history_section_header" = "Who can read history";
|
"screen_security_and_privacy_room_history_section_header" = "Who can read history";
|
||||||
"screen_security_and_privacy_room_history_since_invite_option_title" = "Members only since they were invited";
|
"screen_security_and_privacy_room_history_since_invite_option_title" = "Members since invited";
|
||||||
"screen_security_and_privacy_room_history_since_selecting_option_title" = "Members only since selecting this option";
|
"screen_security_and_privacy_room_history_since_selecting_option_title" = "Members (full history)";
|
||||||
"screen_security_and_privacy_room_publishing_section_footer" = "Room addresses are ways to find and access rooms. This also ensures you can easily share your room with others.\nYou can choose to publish your room in your homeserver public room directory.";
|
"screen_security_and_privacy_room_publishing_section_footer" = "Room addresses are ways to find and access rooms. This also ensures you can easily share your room with others.\nYou can choose to publish your room in your homeserver public room directory.";
|
||||||
"screen_security_and_privacy_room_publishing_section_header" = "Room publishing";
|
"screen_security_and_privacy_room_publishing_section_header" = "Room publishing";
|
||||||
"screen_security_and_privacy_room_visibility_section_footer" = "Addresses are a way to find and access rooms and spaces. This also ensures you can easily share them with others.";
|
"screen_security_and_privacy_room_visibility_section_footer" = "Addresses are a way to find and access rooms and spaces. This also ensures you can easily share them with others.";
|
||||||
@@ -1411,7 +1413,6 @@
|
|||||||
"screen_security_and_privacy_room_access_anyone_option_title" = "Anyone";
|
"screen_security_and_privacy_room_access_anyone_option_title" = "Anyone";
|
||||||
"screen_security_and_privacy_room_access_footer_manage_spaces_action" = "Manage spaces";
|
"screen_security_and_privacy_room_access_footer_manage_spaces_action" = "Manage spaces";
|
||||||
"screen_security_and_privacy_room_address_section_footer" = "You’ll need an address in order to make it visible in the public directory.";
|
"screen_security_and_privacy_room_address_section_footer" = "You’ll need an address in order to make it visible in the public directory.";
|
||||||
"screen_security_and_privacy_room_history_anyone_option_title" = "Anyone";
|
|
||||||
"screen_space_settings_leave_space" = "Leave space";
|
"screen_space_settings_leave_space" = "Leave space";
|
||||||
"screen_space_settings_roles_and_permissions" = "Roles & permissions";
|
"screen_space_settings_roles_and_permissions" = "Roles & permissions";
|
||||||
"screen_space_settings_security_and_privacy" = "Security & privacy";
|
"screen_space_settings_security_and_privacy" = "Security & privacy";
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ final class AppSettings {
|
|||||||
deviceVerificationURL: URL,
|
deviceVerificationURL: URL,
|
||||||
chatBackupDetailsURL: URL,
|
chatBackupDetailsURL: URL,
|
||||||
identityPinningViolationDetailsURL: URL,
|
identityPinningViolationDetailsURL: URL,
|
||||||
|
historySharingDetailsURL: URL,
|
||||||
elementWebHosts: [String],
|
elementWebHosts: [String],
|
||||||
accountProvisioningHost: String,
|
accountProvisioningHost: String,
|
||||||
bugReportApplicationID: String,
|
bugReportApplicationID: String,
|
||||||
@@ -144,6 +145,7 @@ final class AppSettings {
|
|||||||
self.deviceVerificationURL = deviceVerificationURL
|
self.deviceVerificationURL = deviceVerificationURL
|
||||||
self.chatBackupDetailsURL = chatBackupDetailsURL
|
self.chatBackupDetailsURL = chatBackupDetailsURL
|
||||||
self.identityPinningViolationDetailsURL = identityPinningViolationDetailsURL
|
self.identityPinningViolationDetailsURL = identityPinningViolationDetailsURL
|
||||||
|
self.historySharingDetailsURL = historySharingDetailsURL
|
||||||
self.elementWebHosts = elementWebHosts
|
self.elementWebHosts = elementWebHosts
|
||||||
self.accountProvisioningHost = accountProvisioningHost
|
self.accountProvisioningHost = accountProvisioningHost
|
||||||
self.bugReportApplicationID = bugReportApplicationID
|
self.bugReportApplicationID = bugReportApplicationID
|
||||||
@@ -202,6 +204,9 @@ final class AppSettings {
|
|||||||
private(set) var chatBackupDetailsURL: URL = "https://element.io/help#encryption5"
|
private(set) var chatBackupDetailsURL: URL = "https://element.io/help#encryption5"
|
||||||
/// A URL where users can go read more about identity pinning violations
|
/// A URL where users can go read more about identity pinning violations
|
||||||
private(set) var identityPinningViolationDetailsURL: URL = "https://element.io/help#encryption18"
|
private(set) var identityPinningViolationDetailsURL: URL = "https://element.io/help#encryption18"
|
||||||
|
/// A URL describing how history sharing works
|
||||||
|
private(set) var historySharingDetailsURL: URL = "https://element.io/en/help#e2ee-history-sharing"
|
||||||
|
|
||||||
/// Any domains that Element web may be hosted on - used for handling links.
|
/// Any domains that Element web may be hosted on - used for handling links.
|
||||||
private(set) var elementWebHosts = ["app.element.io", "staging.element.io", "develop.element.io"]
|
private(set) var elementWebHosts = ["app.element.io", "staging.element.io", "develop.element.io"]
|
||||||
/// The domain that account provisioning links will be hosted on - used for handling the links.
|
/// The domain that account provisioning links will be hosted on - used for handling the links.
|
||||||
|
|||||||
@@ -2906,13 +2906,17 @@ internal enum L10n {
|
|||||||
internal static var screenSecurityAndPrivacyRoomDirectoryVisibilityToggleDescription: String { return L10n.tr("Localizable", "screen_security_and_privacy_room_directory_visibility_toggle_description") }
|
internal static var screenSecurityAndPrivacyRoomDirectoryVisibilityToggleDescription: String { return L10n.tr("Localizable", "screen_security_and_privacy_room_directory_visibility_toggle_description") }
|
||||||
/// Visible in public directory
|
/// Visible in public directory
|
||||||
internal static var screenSecurityAndPrivacyRoomDirectoryVisibilityToggleTitle: String { return L10n.tr("Localizable", "screen_security_and_privacy_room_directory_visibility_toggle_title") }
|
internal static var screenSecurityAndPrivacyRoomDirectoryVisibilityToggleTitle: String { return L10n.tr("Localizable", "screen_security_and_privacy_room_directory_visibility_toggle_title") }
|
||||||
/// Anyone
|
/// Anyone (history is public)
|
||||||
internal static var screenSecurityAndPrivacyRoomHistoryAnyoneOptionTitle: String { return L10n.tr("Localizable", "screen_security_and_privacy_room_history_anyone_option_title") }
|
internal static var screenSecurityAndPrivacyRoomHistoryAnyoneOptionTitle: String { return L10n.tr("Localizable", "screen_security_and_privacy_room_history_anyone_option_title") }
|
||||||
|
/// Changes won't affect past messages, only new ones. %@
|
||||||
|
internal static func screenSecurityAndPrivacyRoomHistorySectionFooter(_ p1: Any) -> String {
|
||||||
|
return L10n.tr("Localizable", "screen_security_and_privacy_room_history_section_footer", String(describing: p1))
|
||||||
|
}
|
||||||
/// Who can read history
|
/// Who can read history
|
||||||
internal static var screenSecurityAndPrivacyRoomHistorySectionHeader: String { return L10n.tr("Localizable", "screen_security_and_privacy_room_history_section_header") }
|
internal static var screenSecurityAndPrivacyRoomHistorySectionHeader: String { return L10n.tr("Localizable", "screen_security_and_privacy_room_history_section_header") }
|
||||||
/// Members only since they were invited
|
/// Members since invited
|
||||||
internal static var screenSecurityAndPrivacyRoomHistorySinceInviteOptionTitle: String { return L10n.tr("Localizable", "screen_security_and_privacy_room_history_since_invite_option_title") }
|
internal static var screenSecurityAndPrivacyRoomHistorySinceInviteOptionTitle: String { return L10n.tr("Localizable", "screen_security_and_privacy_room_history_since_invite_option_title") }
|
||||||
/// Members only since selecting this option
|
/// Members (full history)
|
||||||
internal static var screenSecurityAndPrivacyRoomHistorySinceSelectingOptionTitle: String { return L10n.tr("Localizable", "screen_security_and_privacy_room_history_since_selecting_option_title") }
|
internal static var screenSecurityAndPrivacyRoomHistorySinceSelectingOptionTitle: String { return L10n.tr("Localizable", "screen_security_and_privacy_room_history_since_selecting_option_title") }
|
||||||
/// Room addresses are ways to find and access rooms. This also ensures you can easily share your room with others.
|
/// Room addresses are ways to find and access rooms. This also ensures you can easily share your room with others.
|
||||||
/// You can choose to publish your room in your homeserver public room directory.
|
/// You can choose to publish your room in your homeserver public room directory.
|
||||||
|
|||||||
+52
-32
@@ -15,20 +15,12 @@ enum SecurityAndPrivacyScreenViewModelAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct SecurityAndPrivacyScreenViewState: BindableState {
|
struct SecurityAndPrivacyScreenViewState: BindableState {
|
||||||
private static let accessSectionFooterAttributedString = {
|
|
||||||
let linkPlaceholder = "{link}"
|
|
||||||
var footer = AttributedString(L10n.screenSecurityAndPrivacyRoomAccessFooter(linkPlaceholder))
|
|
||||||
var linkString = AttributedString(L10n.screenSecurityAndPrivacyRoomAccessFooterManageSpacesAction)
|
|
||||||
// Doesn't really matter
|
|
||||||
linkString.link = .init(stringLiteral: "action://manageSpace")
|
|
||||||
linkString.bold()
|
|
||||||
footer.replace(linkPlaceholder, with: linkString)
|
|
||||||
return footer
|
|
||||||
}()
|
|
||||||
|
|
||||||
let serverName: String
|
let serverName: String
|
||||||
|
|
||||||
var currentSettings: SecurityAndPrivacySettings
|
var currentSettings: SecurityAndPrivacySettings
|
||||||
var bindings: SecurityAndPrivacyScreenViewStateBindings
|
var bindings: SecurityAndPrivacyScreenViewStateBindings
|
||||||
|
let strings: SecurityAndPrivacyScreenStrings
|
||||||
|
|
||||||
var canonicalAlias: String?
|
var canonicalAlias: String?
|
||||||
var isKnockingEnabled: Bool
|
var isKnockingEnabled: Bool
|
||||||
var isSpaceSettingsEnabled: Bool
|
var isSpaceSettingsEnabled: Bool
|
||||||
@@ -38,6 +30,7 @@ struct SecurityAndPrivacyScreenViewState: BindableState {
|
|||||||
var canEditJoinRule = false
|
var canEditJoinRule = false
|
||||||
var canEnableEncryption = false
|
var canEnableEncryption = false
|
||||||
var canEditHistoryVisibility = false
|
var canEditHistoryVisibility = false
|
||||||
|
|
||||||
/// The union of joined parent spaces and the joined spaces in the current access type
|
/// The union of joined parent spaces and the joined spaces in the current access type
|
||||||
var selectableJoinedSpaces: [SpaceRoomProxyProtocol] = []
|
var selectableJoinedSpaces: [SpaceRoomProxyProtocol] = []
|
||||||
|
|
||||||
@@ -58,13 +51,13 @@ struct SecurityAndPrivacyScreenViewState: BindableState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var availableVisibilityOptions: [SecurityAndPrivacyHistoryVisibility] {
|
var availableVisibilityOptions: [SecurityAndPrivacyHistoryVisibility] {
|
||||||
var options = [SecurityAndPrivacyHistoryVisibility.sinceSelection]
|
var options = [SecurityAndPrivacyHistoryVisibility.shared]
|
||||||
if !bindings.desiredSettings.isEncryptionEnabled, bindings.desiredSettings.accessType == .anyone {
|
if !bindings.desiredSettings.isEncryptionEnabled, bindings.desiredSettings.accessType == .anyone {
|
||||||
options.append(.anyone)
|
options.append(.worldReadable)
|
||||||
} else {
|
} else {
|
||||||
options.append(.sinceInvite)
|
options.append(.invited)
|
||||||
}
|
}
|
||||||
return options
|
return options.sorted()
|
||||||
}
|
}
|
||||||
|
|
||||||
var isSpaceMembersOptionAvailable: Bool {
|
var isSpaceMembersOptionAvailable: Bool {
|
||||||
@@ -113,16 +106,14 @@ struct SecurityAndPrivacyScreenViewState: BindableState {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var accessSectionFooter: AttributedString? {
|
var shouldShowAccessSectionFooter: Bool {
|
||||||
if (bindings.desiredSettings.accessType.isSpaceMembers &&
|
if (bindings.desiredSettings.accessType.isSpaceMembers && isSpaceMembersOptionSelectable) ||
|
||||||
isSpaceMembersOptionSelectable) ||
|
(bindings.desiredSettings.accessType.isAskToJoinWithSpaceMembers && isAskToJoinWithSpaceMembersOptionSelectable),
|
||||||
(bindings.desiredSettings.accessType.isAskToJoinWithSpaceMembers &&
|
|
||||||
isAskToJoinWithSpaceMembersOptionSelectable),
|
|
||||||
case .multiple = spaceSelection {
|
case .multiple = spaceSelection {
|
||||||
Self.accessSectionFooterAttributedString
|
return true
|
||||||
} else {
|
|
||||||
nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
enum SpaceSelection {
|
enum SpaceSelection {
|
||||||
@@ -169,7 +160,8 @@ struct SecurityAndPrivacyScreenViewState: BindableState {
|
|||||||
historyVisibility: SecurityAndPrivacyHistoryVisibility,
|
historyVisibility: SecurityAndPrivacyHistoryVisibility,
|
||||||
isSpace: Bool,
|
isSpace: Bool,
|
||||||
isKnockingEnabled: Bool,
|
isKnockingEnabled: Bool,
|
||||||
isSpaceSettingsEnabled: Bool) {
|
isSpaceSettingsEnabled: Bool,
|
||||||
|
historySharingDetailsURL: URL) {
|
||||||
self.serverName = serverName
|
self.serverName = serverName
|
||||||
self.isKnockingEnabled = isKnockingEnabled
|
self.isKnockingEnabled = isKnockingEnabled
|
||||||
self.isSpace = isSpace
|
self.isSpace = isSpace
|
||||||
@@ -180,6 +172,7 @@ struct SecurityAndPrivacyScreenViewState: BindableState {
|
|||||||
historyVisibility: historyVisibility)
|
historyVisibility: historyVisibility)
|
||||||
currentSettings = settings
|
currentSettings = settings
|
||||||
bindings = SecurityAndPrivacyScreenViewStateBindings(desiredSettings: settings)
|
bindings = SecurityAndPrivacyScreenViewStateBindings(desiredSettings: settings)
|
||||||
|
strings = SecurityAndPrivacyScreenStrings(historySharingDetailsURL: historySharingDetailsURL)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -254,17 +247,44 @@ enum SecurityAndPrivacyScreenViewAction {
|
|||||||
case manageSpaces
|
case manageSpaces
|
||||||
}
|
}
|
||||||
|
|
||||||
enum SecurityAndPrivacyHistoryVisibility {
|
enum SecurityAndPrivacyHistoryVisibility: Int, Comparable {
|
||||||
case sinceSelection
|
case invited
|
||||||
case sinceInvite
|
case shared
|
||||||
case anyone
|
case worldReadable
|
||||||
|
|
||||||
var fallbackOption: Self {
|
var fallbackOption: Self {
|
||||||
switch self {
|
switch self {
|
||||||
case .sinceInvite, .sinceSelection:
|
case .invited, .shared:
|
||||||
return .sinceSelection
|
return .shared
|
||||||
case .anyone:
|
case .worldReadable:
|
||||||
return .sinceInvite
|
return .invited
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static func < (lhs: SecurityAndPrivacyHistoryVisibility, rhs: SecurityAndPrivacyHistoryVisibility) -> Bool {
|
||||||
|
lhs.rawValue < rhs.rawValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct SecurityAndPrivacyScreenStrings {
|
||||||
|
let accessSectionFooterString: AttributedString
|
||||||
|
let historySectionFooterString: AttributedString
|
||||||
|
|
||||||
|
init(historySharingDetailsURL: URL) {
|
||||||
|
let linkPlaceholder = "{link}"
|
||||||
|
|
||||||
|
var accessFooterString = AttributedString(L10n.screenSecurityAndPrivacyRoomAccessFooter(linkPlaceholder))
|
||||||
|
var accessLinkString = AttributedString(L10n.screenSecurityAndPrivacyRoomAccessFooterManageSpacesAction)
|
||||||
|
accessLinkString.link = .init(stringLiteral: "action://manageSpace") // The link address doesn't matter
|
||||||
|
accessLinkString.bold()
|
||||||
|
accessFooterString.replace(linkPlaceholder, with: accessLinkString)
|
||||||
|
accessSectionFooterString = accessFooterString
|
||||||
|
|
||||||
|
var historyFooterString = AttributedString(L10n.screenSecurityAndPrivacyRoomHistorySectionFooter(linkPlaceholder))
|
||||||
|
var historyLinkString = AttributedString(L10n.actionLearnMore)
|
||||||
|
historyLinkString.link = historySharingDetailsURL
|
||||||
|
historyLinkString.bold()
|
||||||
|
historyFooterString.replace(linkPlaceholder, with: historyLinkString)
|
||||||
|
historySectionFooterString = historyFooterString
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-7
@@ -38,7 +38,8 @@ class SecurityAndPrivacyScreenViewModel: SecurityAndPrivacyScreenViewModelType,
|
|||||||
historyVisibility: roomProxy.infoPublisher.value.historyVisibility.toSecurityAndPrivacyHistoryVisibility,
|
historyVisibility: roomProxy.infoPublisher.value.historyVisibility.toSecurityAndPrivacyHistoryVisibility,
|
||||||
isSpace: roomProxy.infoPublisher.value.isSpace,
|
isSpace: roomProxy.infoPublisher.value.isSpace,
|
||||||
isKnockingEnabled: appSettings.knockingEnabled,
|
isKnockingEnabled: appSettings.knockingEnabled,
|
||||||
isSpaceSettingsEnabled: appSettings.spaceSettingsEnabled))
|
isSpaceSettingsEnabled: appSettings.spaceSettingsEnabled,
|
||||||
|
historySharingDetailsURL: appSettings.historySharingDetailsURL))
|
||||||
|
|
||||||
if let powerLevels = roomProxy.infoPublisher.value.powerLevels {
|
if let powerLevels = roomProxy.infoPublisher.value.powerLevels {
|
||||||
setupPermissions(powerLevels: powerLevels)
|
setupPermissions(powerLevels: powerLevels)
|
||||||
@@ -345,11 +346,11 @@ private extension RoomHistoryVisibility {
|
|||||||
var toSecurityAndPrivacyHistoryVisibility: SecurityAndPrivacyHistoryVisibility {
|
var toSecurityAndPrivacyHistoryVisibility: SecurityAndPrivacyHistoryVisibility {
|
||||||
switch self {
|
switch self {
|
||||||
case .joined, .invited:
|
case .joined, .invited:
|
||||||
return .sinceInvite
|
return .invited
|
||||||
case .shared, .custom:
|
case .shared, .custom:
|
||||||
return .sinceSelection
|
return .shared
|
||||||
case .worldReadable:
|
case .worldReadable:
|
||||||
return .anyone
|
return .worldReadable
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -357,11 +358,11 @@ private extension RoomHistoryVisibility {
|
|||||||
private extension SecurityAndPrivacyHistoryVisibility {
|
private extension SecurityAndPrivacyHistoryVisibility {
|
||||||
var toRoomHistoryVisibility: RoomHistoryVisibility {
|
var toRoomHistoryVisibility: RoomHistoryVisibility {
|
||||||
switch self {
|
switch self {
|
||||||
case .sinceSelection:
|
case .shared:
|
||||||
return .shared
|
return .shared
|
||||||
case .sinceInvite:
|
case .invited:
|
||||||
return .invited
|
return .invited
|
||||||
case .anyone:
|
case .worldReadable:
|
||||||
return .worldReadable
|
return .worldReadable
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-10
@@ -80,8 +80,8 @@ struct SecurityAndPrivacyScreen: View {
|
|||||||
Text(L10n.screenSecurityAndPrivacyRoomAccessSectionHeader)
|
Text(L10n.screenSecurityAndPrivacyRoomAccessSectionHeader)
|
||||||
.compoundListSectionHeader()
|
.compoundListSectionHeader()
|
||||||
} footer: {
|
} footer: {
|
||||||
if let footer = context.viewState.accessSectionFooter {
|
if context.viewState.shouldShowAccessSectionFooter {
|
||||||
Text(footer)
|
Text(context.viewState.strings.accessSectionFooterString)
|
||||||
.compoundListSectionFooter()
|
.compoundListSectionFooter()
|
||||||
.environment(\.openURL, OpenURLAction { _ in
|
.environment(\.openURL, OpenURLAction { _ in
|
||||||
context.send(viewAction: .manageSpaces)
|
context.send(viewAction: .manageSpaces)
|
||||||
@@ -133,20 +133,23 @@ struct SecurityAndPrivacyScreen: View {
|
|||||||
Section {
|
Section {
|
||||||
ForEach(context.viewState.availableVisibilityOptions, id: \.self) { option in
|
ForEach(context.viewState.availableVisibilityOptions, id: \.self) { option in
|
||||||
switch option {
|
switch option {
|
||||||
case .sinceSelection:
|
case .invited:
|
||||||
ListRow(label: .plain(title: L10n.screenSecurityAndPrivacyRoomHistorySinceSelectingOptionTitle),
|
|
||||||
kind: .selection(isSelected: context.desiredSettings.historyVisibility == .sinceSelection) { context.desiredSettings.historyVisibility = .sinceSelection })
|
|
||||||
case .anyone:
|
|
||||||
ListRow(label: .plain(title: L10n.screenSecurityAndPrivacyRoomHistoryAnyoneOptionTitle),
|
|
||||||
kind: .selection(isSelected: context.desiredSettings.historyVisibility == .anyone) { context.desiredSettings.historyVisibility = .anyone })
|
|
||||||
case .sinceInvite:
|
|
||||||
ListRow(label: .plain(title: L10n.screenSecurityAndPrivacyRoomHistorySinceInviteOptionTitle),
|
ListRow(label: .plain(title: L10n.screenSecurityAndPrivacyRoomHistorySinceInviteOptionTitle),
|
||||||
kind: .selection(isSelected: context.desiredSettings.historyVisibility == .sinceInvite) { context.desiredSettings.historyVisibility = .sinceInvite })
|
kind: .selection(isSelected: context.desiredSettings.historyVisibility == .invited) { context.desiredSettings.historyVisibility = .invited })
|
||||||
|
case .shared:
|
||||||
|
ListRow(label: .plain(title: L10n.screenSecurityAndPrivacyRoomHistorySinceSelectingOptionTitle),
|
||||||
|
kind: .selection(isSelected: context.desiredSettings.historyVisibility == .shared) { context.desiredSettings.historyVisibility = .shared })
|
||||||
|
case .worldReadable:
|
||||||
|
ListRow(label: .plain(title: L10n.screenSecurityAndPrivacyRoomHistoryAnyoneOptionTitle),
|
||||||
|
kind: .selection(isSelected: context.desiredSettings.historyVisibility == .worldReadable) { context.desiredSettings.historyVisibility = .worldReadable })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} header: {
|
} header: {
|
||||||
Text(L10n.screenSecurityAndPrivacyRoomHistorySectionHeader)
|
Text(L10n.screenSecurityAndPrivacyRoomHistorySectionHeader)
|
||||||
.compoundListSectionHeader()
|
.compoundListSectionHeader()
|
||||||
|
} footer: {
|
||||||
|
Text(context.viewState.strings.historySectionFooterString)
|
||||||
|
.compoundListSectionFooter()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -140,6 +140,7 @@ class MockScreen: Identifiable {
|
|||||||
deviceVerificationURL: appSettings.deviceVerificationURL,
|
deviceVerificationURL: appSettings.deviceVerificationURL,
|
||||||
chatBackupDetailsURL: appSettings.chatBackupDetailsURL,
|
chatBackupDetailsURL: appSettings.chatBackupDetailsURL,
|
||||||
identityPinningViolationDetailsURL: appSettings.identityPinningViolationDetailsURL,
|
identityPinningViolationDetailsURL: appSettings.identityPinningViolationDetailsURL,
|
||||||
|
historySharingDetailsURL: appSettings.historySharingDetailsURL,
|
||||||
elementWebHosts: appSettings.elementWebHosts,
|
elementWebHosts: appSettings.elementWebHosts,
|
||||||
accountProvisioningHost: appSettings.accountProvisioningHost,
|
accountProvisioningHost: appSettings.accountProvisioningHost,
|
||||||
bugReportApplicationID: appSettings.bugReportApplicationID,
|
bugReportApplicationID: appSettings.bugReportApplicationID,
|
||||||
|
|||||||
+1
-1
Submodule Enterprise updated: e2c37065c6...a6439b534c
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:2b48503263e69f43d77a74d362a7321ad34b8a921d8b55920412a0097d439327
|
oid sha256:4a2874e02e5bae080c7f422b1359199f70f208d60735825416419882e8161b80
|
||||||
size 199998
|
size 195179
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:04f76939d9f03527eea26ea8f671c772c8f9ec45ee2d1a13b0621ada54fa9805
|
oid sha256:c90113d2a9b105c70446f58fa0e766b1cfdb83d4dae9b4c34efbb575b2cc5d3e
|
||||||
size 239279
|
size 233537
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:8e27693a7e2e81d74edfca587593d50ea25e6eafbf3af381152ed358bfc9bc56
|
oid sha256:f7aa48ef3727c3fcc42a3b85a55417c217e50a4e50546b1fcb5bf92bb76152e3
|
||||||
size 132843
|
size 132863
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:b3bcd80b001708d7b146832168487813d1523f421cb30e17c8c540017b72db92
|
oid sha256:b0aa0475b725e6098fa24ac761fd3f49911b383c9570c8bb13db4f3377a01d95
|
||||||
size 169810
|
size 173106
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:c4f699861f429677ecbdd74449f9a5316b35446346d67a1f7433ca2cdce3d439
|
oid sha256:d1a17202d7e423dd0cf4f3c593f53567fd90f225909a7aa7383eb66f91637926
|
||||||
size 207842
|
size 215712
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:3973e132104bbca48b78481b1b625d1cbc322d2346792538ec6f7f7abcc5642c
|
oid sha256:4077cfd59711750fdb1fe0b7db83d0ba40d037ad1f5bb90003f5cf5be256e71c
|
||||||
size 116706
|
size 118589
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:a9269423611b2bc9bba3a1fc435a78bb759b04d56987532ec98fb6d2eb6e254f
|
oid sha256:f38216df06296e66f901f091bddd63a4a39543f6b8ba918852ff63c27968b425
|
||||||
size 171602
|
size 175811
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:29d02ff5d0e8b72fd0331ae941b1f31dfc7b673d90239d91a7c4084f8c136621
|
oid sha256:19ee4c8b01d1b18b962971ae0b1b950279863d12e832b572e2635837ace8f569
|
||||||
size 144394
|
size 148707
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:82799f6f7b4492e9ac35126851a00be1f7419449dbf55a3b1d65366127b71de3
|
oid sha256:96cf543a0c2e74f0551ea7fd0ce6e7e8bd99917548fe909140fe437a9e567068
|
||||||
size 170443
|
size 178398
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:e845ee148aa81dcedfe402297b1f02bc43a1d44d996ddc5cbc63a7654ed25d84
|
oid sha256:108fa3154405e527b4f83dfb15f2d7720b375c349c8d9de50c4984192839ef26
|
||||||
size 92004
|
size 93016
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:3d4387dfb9c807dd865ceeea3c2385a0443cb507aa2bb168256a55557c871b65
|
oid sha256:78b1a757c93851e03f3b3985b0e0b53a132447b307cae179cc2f1004b3ace777
|
||||||
size 127409
|
size 132322
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:1bec92ef9a845303d03b1ea1889db19f7a47e98ab8dd054e87b67bd0f1aa3b26
|
oid sha256:9af7a48f714bec7db946bdf6762507aca1cd5609eadcb025857f7f3a7bd33179
|
||||||
size 186779
|
size 198158
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:340e36605dc15ae5a8b0277e263308b8ca1d50daf17bf096a6817728a4f21314
|
oid sha256:09c27b020aa57d79a2c3f45477488ec16221b9c0527d3e267a1ff97e4e7de201
|
||||||
size 230701
|
size 250631
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:b802c8a6e3d596fcbbe93e06e4d61c710dba500c425208f2a0c135da72eccf9e
|
oid sha256:5ea2f6d3dfa555f7be8886086f8f9885e8a537599e5e130d8019e870b5018b2a
|
||||||
size 132822
|
size 134575
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:1ab333cea8fc694964547481d6f7f81a2a0cde6a36b280136d3f27025432f77c
|
oid sha256:c324010c3328fa225c4477f1bb27be733072e5d8cd3ce888db6220a6d3bda0e6
|
||||||
size 159173
|
size 170487
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:2bcebf976c3d773027f92bbd67219ad73c094911006df8bdcc212944e2bf1256
|
oid sha256:a9f990d9f6f2f095601efa8c1e4095a35d536144c38bcef9ad6c2aa9f860b8c3
|
||||||
size 196268
|
size 216361
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:0e395a16e80474762ccbb09e690bc87e570adaf0bbf7b45ec66d2c236711f758
|
oid sha256:bbc7316079d963ff3b8bc1680ba8bdc8212985668552de2fca39a6c51d004ab0
|
||||||
size 107787
|
size 115669
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:1ce54e285e0750c2d0435f14e27ea142e7519a0aa8f7666785ad7c6fd00db6a8
|
oid sha256:23fddbb25038c9fdc0bfa53d48e0093cd22f4bc02453d0c4e436a64d531eb388
|
||||||
size 150993
|
size 153794
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:5260ba3c86cd6d45a7c6c8340f535a584e4a6df6633beacaa8fdc5ee2d8e070c
|
oid sha256:b05a474e324855ae6a103ba650d11789b18ad5aabbf2690d5597302e58f1949b
|
||||||
size 156742
|
size 160311
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:8482c728dcab50c5ec8dee6a26e45c9c274c72e2ba38ae5a2f65aa4f99d7d7f0
|
oid sha256:ae46bf0c3b975cd3314419e27af5e008f4c33e7682803a917f7b830accfc126c
|
||||||
size 187240
|
size 195684
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:26a31269bb5d89e8575f92305885f876eea5f05cb44b993705519d25bdd6354a
|
oid sha256:1709e4b6fa0940284e48c4b8725c79361b5618fcdc3e49db8b87ccc5b0d874d9
|
||||||
size 103262
|
size 105070
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:55fd33e5832f09c6cbbb5456ba3a50a878fae58cd87845cc6e2702cb6ad802f0
|
oid sha256:9ff5f7930b551928469368cd0ce87fc0819ee63ccd01f8c1f627b21251ae8507
|
||||||
size 146541
|
size 151578
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ class AuthenticationStartScreenViewModelTests: XCTestCase {
|
|||||||
deviceVerificationURL: appSettings.deviceVerificationURL,
|
deviceVerificationURL: appSettings.deviceVerificationURL,
|
||||||
chatBackupDetailsURL: appSettings.chatBackupDetailsURL,
|
chatBackupDetailsURL: appSettings.chatBackupDetailsURL,
|
||||||
identityPinningViolationDetailsURL: appSettings.identityPinningViolationDetailsURL,
|
identityPinningViolationDetailsURL: appSettings.identityPinningViolationDetailsURL,
|
||||||
|
historySharingDetailsURL: appSettings.historySharingDetailsURL,
|
||||||
elementWebHosts: appSettings.elementWebHosts,
|
elementWebHosts: appSettings.elementWebHosts,
|
||||||
accountProvisioningHost: appSettings.accountProvisioningHost,
|
accountProvisioningHost: appSettings.accountProvisioningHost,
|
||||||
bugReportApplicationID: appSettings.bugReportApplicationID,
|
bugReportApplicationID: appSettings.bugReportApplicationID,
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase {
|
|||||||
|
|
||||||
context.send(viewAction: .selectedSpaceMembersAccess)
|
context.send(viewAction: .selectedSpaceMembersAccess)
|
||||||
XCTAssertEqual(context.desiredSettings.accessType, .spaceMembers(spaceIDs: [space.id]))
|
XCTAssertEqual(context.desiredSettings.accessType, .spaceMembers(spaceIDs: [space.id]))
|
||||||
XCTAssertNil(context.viewState.accessSectionFooter)
|
XCTAssertFalse(context.viewState.shouldShowAccessSectionFooter)
|
||||||
XCTAssertFalse(context.viewState.isSaveDisabled)
|
XCTAssertFalse(context.viewState.isSaveDisabled)
|
||||||
|
|
||||||
let expectation = expectation(description: "Join rule has updated")
|
let expectation = expectation(description: "Join rule has updated")
|
||||||
@@ -77,7 +77,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase {
|
|||||||
|
|
||||||
context.send(viewAction: .selectedAskToJoinWithSpaceMembersAccess)
|
context.send(viewAction: .selectedAskToJoinWithSpaceMembersAccess)
|
||||||
XCTAssertEqual(context.desiredSettings.accessType, .askToJoinWithSpaceMembers(spaceIDs: [space.id]))
|
XCTAssertEqual(context.desiredSettings.accessType, .askToJoinWithSpaceMembers(spaceIDs: [space.id]))
|
||||||
XCTAssertNil(context.viewState.accessSectionFooter)
|
XCTAssertFalse(context.viewState.shouldShowAccessSectionFooter)
|
||||||
XCTAssertFalse(context.viewState.isSaveDisabled)
|
XCTAssertFalse(context.viewState.isSaveDisabled)
|
||||||
|
|
||||||
let expectation = expectation(description: "Join rule has updated")
|
let expectation = expectation(description: "Join rule has updated")
|
||||||
@@ -101,7 +101,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase {
|
|||||||
XCTAssertEqual(context.viewState.currentSettings.accessType, .spaceMembers(spaceIDs: [space.id]))
|
XCTAssertEqual(context.viewState.currentSettings.accessType, .spaceMembers(spaceIDs: [space.id]))
|
||||||
XCTAssertEqual(context.desiredSettings, context.viewState.currentSettings)
|
XCTAssertEqual(context.desiredSettings, context.viewState.currentSettings)
|
||||||
XCTAssertTrue(context.viewState.isSpaceMembersOptionSelectable)
|
XCTAssertTrue(context.viewState.isSpaceMembersOptionSelectable)
|
||||||
XCTAssertNil(context.viewState.accessSectionFooter)
|
XCTAssertFalse(context.viewState.shouldShowAccessSectionFooter)
|
||||||
XCTAssertTrue(context.viewState.isSaveDisabled)
|
XCTAssertTrue(context.viewState.isSaveDisabled)
|
||||||
guard case .singleUnknown = context.viewState.spaceSelection else {
|
guard case .singleUnknown = context.viewState.spaceSelection else {
|
||||||
XCTFail("Expected spaceSelection to be .singleUnknown")
|
XCTFail("Expected spaceSelection to be .singleUnknown")
|
||||||
@@ -152,7 +152,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase {
|
|||||||
try await deferredAction.fulfill()
|
try await deferredAction.fulfill()
|
||||||
selectedIDs.send([spaces[0].id])
|
selectedIDs.send([spaces[0].id])
|
||||||
XCTAssertEqual(context.desiredSettings.accessType, .spaceMembers(spaceIDs: [spaces[0].id]))
|
XCTAssertEqual(context.desiredSettings.accessType, .spaceMembers(spaceIDs: [spaces[0].id]))
|
||||||
XCTAssertNotNil(context.viewState.accessSectionFooter)
|
XCTAssertTrue(context.viewState.shouldShowAccessSectionFooter)
|
||||||
XCTAssertFalse(context.viewState.isSaveDisabled)
|
XCTAssertFalse(context.viewState.isSaveDisabled)
|
||||||
|
|
||||||
let expectation = expectation(description: "Join rule has updated")
|
let expectation = expectation(description: "Join rule has updated")
|
||||||
@@ -196,7 +196,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase {
|
|||||||
try await deferredAction.fulfill()
|
try await deferredAction.fulfill()
|
||||||
selectedIDs.send([spaces[0].id])
|
selectedIDs.send([spaces[0].id])
|
||||||
XCTAssertEqual(context.desiredSettings.accessType, .askToJoinWithSpaceMembers(spaceIDs: [spaces[0].id]))
|
XCTAssertEqual(context.desiredSettings.accessType, .askToJoinWithSpaceMembers(spaceIDs: [spaces[0].id]))
|
||||||
XCTAssertNotNil(context.viewState.accessSectionFooter)
|
XCTAssertTrue(context.viewState.shouldShowAccessSectionFooter)
|
||||||
XCTAssertFalse(context.viewState.isSaveDisabled)
|
XCTAssertFalse(context.viewState.isSaveDisabled)
|
||||||
|
|
||||||
let expectation = expectation(description: "Join rule has updated")
|
let expectation = expectation(description: "Join rule has updated")
|
||||||
@@ -242,7 +242,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase {
|
|||||||
try await deferredAction.fulfill()
|
try await deferredAction.fulfill()
|
||||||
selectedIDs.send([spaces[0].id, "unknownSpaceID"])
|
selectedIDs.send([spaces[0].id, "unknownSpaceID"])
|
||||||
XCTAssertEqual(context.desiredSettings.accessType, .spaceMembers(spaceIDs: [spaces[0].id, "unknownSpaceID"]))
|
XCTAssertEqual(context.desiredSettings.accessType, .spaceMembers(spaceIDs: [spaces[0].id, "unknownSpaceID"]))
|
||||||
XCTAssertNotNil(context.viewState.accessSectionFooter)
|
XCTAssertTrue(context.viewState.shouldShowAccessSectionFooter)
|
||||||
XCTAssertFalse(context.viewState.isSaveDisabled)
|
XCTAssertFalse(context.viewState.isSaveDisabled)
|
||||||
|
|
||||||
let expectation = expectation(description: "Join rule has updated")
|
let expectation = expectation(description: "Join rule has updated")
|
||||||
@@ -293,7 +293,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase {
|
|||||||
try await deferredAction.fulfill()
|
try await deferredAction.fulfill()
|
||||||
selectedIDs.send([allSpaces[0].id, "unknownSpaceID"])
|
selectedIDs.send([allSpaces[0].id, "unknownSpaceID"])
|
||||||
XCTAssertEqual(context.desiredSettings.accessType, .spaceMembers(spaceIDs: [allSpaces[0].id, "unknownSpaceID"]))
|
XCTAssertEqual(context.desiredSettings.accessType, .spaceMembers(spaceIDs: [allSpaces[0].id, "unknownSpaceID"]))
|
||||||
XCTAssertNotNil(context.viewState.accessSectionFooter)
|
XCTAssertTrue(context.viewState.shouldShowAccessSectionFooter)
|
||||||
XCTAssertFalse(context.viewState.isSaveDisabled)
|
XCTAssertFalse(context.viewState.isSaveDisabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -309,7 +309,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase {
|
|||||||
XCTAssertTrue(context.viewState.currentSettings.accessType.isSpaceMembers)
|
XCTAssertTrue(context.viewState.currentSettings.accessType.isSpaceMembers)
|
||||||
XCTAssertTrue(context.viewState.isSaveDisabled)
|
XCTAssertTrue(context.viewState.isSaveDisabled)
|
||||||
XCTAssertFalse(context.viewState.isSpaceMembersOptionSelectable)
|
XCTAssertFalse(context.viewState.isSpaceMembersOptionSelectable)
|
||||||
XCTAssertNil(context.viewState.accessSectionFooter)
|
XCTAssertFalse(context.viewState.shouldShowAccessSectionFooter)
|
||||||
guard case .empty = context.viewState.spaceSelection else {
|
guard case .empty = context.viewState.spaceSelection else {
|
||||||
XCTFail("Expected spaceSelection to be .empty")
|
XCTFail("Expected spaceSelection to be .empty")
|
||||||
return
|
return
|
||||||
@@ -329,7 +329,7 @@ class SecurityAndPrivacyScreenViewModelTests: XCTestCase {
|
|||||||
XCTAssertTrue(context.viewState.currentSettings.accessType.isSpaceMembers)
|
XCTAssertTrue(context.viewState.currentSettings.accessType.isSpaceMembers)
|
||||||
XCTAssertTrue(context.viewState.isSaveDisabled)
|
XCTAssertTrue(context.viewState.isSaveDisabled)
|
||||||
XCTAssertTrue(context.viewState.isSpaceMembersOptionSelectable)
|
XCTAssertTrue(context.viewState.isSpaceMembersOptionSelectable)
|
||||||
XCTAssertNotNil(context.viewState.accessSectionFooter)
|
XCTAssertTrue(context.viewState.shouldShowAccessSectionFooter)
|
||||||
guard case .multiple = context.viewState.spaceSelection else {
|
guard case .multiple = context.viewState.spaceSelection else {
|
||||||
XCTFail("Expected spaceSelection to be .multiple")
|
XCTFail("Expected spaceSelection to be .multiple")
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -324,6 +324,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase {
|
|||||||
deviceVerificationURL: appSettings.deviceVerificationURL,
|
deviceVerificationURL: appSettings.deviceVerificationURL,
|
||||||
chatBackupDetailsURL: appSettings.chatBackupDetailsURL,
|
chatBackupDetailsURL: appSettings.chatBackupDetailsURL,
|
||||||
identityPinningViolationDetailsURL: appSettings.identityPinningViolationDetailsURL,
|
identityPinningViolationDetailsURL: appSettings.identityPinningViolationDetailsURL,
|
||||||
|
historySharingDetailsURL: appSettings.historySharingDetailsURL,
|
||||||
elementWebHosts: appSettings.elementWebHosts,
|
elementWebHosts: appSettings.elementWebHosts,
|
||||||
accountProvisioningHost: appSettings.accountProvisioningHost,
|
accountProvisioningHost: appSettings.accountProvisioningHost,
|
||||||
bugReportApplicationID: appSettings.bugReportApplicationID,
|
bugReportApplicationID: appSettings.bugReportApplicationID,
|
||||||
|
|||||||
Reference in New Issue
Block a user