mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-10-31 16:24:11 +00:00
Adopt StateStoreViewModelV2 in the remaining settings screens. (#4158)
* Move the AuthenticationStartScreen into the Authentication directory.
* Commit the updated Sentry license.
No idea why they dropped the 2024 🤷♂️
* Use StateStoreViewModelV2 in BugReportScreen.
* Use StateStoreViewModelV2 in UserDetailsEditScreen.
* Use StateStoreViewModelV2 in NotificationSettingsScreen.
* Use StateStoreViewModelV2 in NotificationSettingsEditScreen.
* Use StateStoreViewModelV2 in LegalInformationScreen.
* Use StateStoreViewModelV2 in LogViewerScreen.
* Use StateStoreViewModelV2 in AnalyticsSettingsScreen.
* Rename AdvancedSettingsScreen directory.
* Use StateStoreViewModelV2 in EncryptionResetScreen.
* Use StateStoreViewModelV2 in EncryptionResetPasswordScreen.
* Use StateStoreViewModelV2 in SecureBackup…Screens.
* Use StateStoreViewModelV2 in LoginScreen.
Seems this one was ignored waiting on the fulfillment transitionValues implementation.
* Use StateStoreViewModelV2 in DeactivateAccountScreen.
* Move DeactivateAccountScreen into the Settings directory.
This commit is contained in:
@@ -58,9 +58,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
notificationSettingsProxy.callbacks.send(.settingsDidChange)
|
||||
|
||||
@@ -88,9 +86,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
notificationSettingsProxy.callbacks.send(.settingsDidChange)
|
||||
|
||||
@@ -112,9 +108,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
let deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
notificationSettingsProxy.callbacks.send(.settingsDidChange)
|
||||
|
||||
@@ -137,22 +131,21 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
var deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredSettings = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
notificationSettingsProxy.callbacks.send(.settingsDidChange)
|
||||
|
||||
try await deferred.fulfill()
|
||||
try await deferredSettings.fulfill()
|
||||
|
||||
XCTAssertEqual(context.viewState.settings?.directChatsMode, .allMessages)
|
||||
XCTAssertEqual(context.viewState.settings?.inconsistentSettings, [.init(chatType: .oneToOneChat, isEncrypted: false)])
|
||||
|
||||
deferred = deferFulfillment(viewModel.context.$viewState, keyPath: \.fixingConfigurationMismatch, transitionValues: [false, true, false])
|
||||
let deferredMismatch = deferFulfillment(viewModel.context.observe(\.viewState.fixingConfigurationMismatch),
|
||||
transitionValues: [false, true, false])
|
||||
|
||||
context.send(viewAction: .fixConfigurationMismatchTapped)
|
||||
|
||||
try await deferred.fulfill()
|
||||
try await deferredMismatch.fulfill()
|
||||
|
||||
// Ensure we only fix the invalid setting: unencrypted one-to-one chats should be set to `.allMessages` (to match encrypted one-to-one chats)
|
||||
XCTAssertEqual(notificationSettingsProxy.setDefaultRoomNotificationModeIsEncryptedIsOneToOneModeCallsCount, 1)
|
||||
@@ -175,30 +168,24 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
var deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredSettings = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
notificationSettingsProxy.callbacks.send(.settingsDidChange)
|
||||
|
||||
try await deferred.fulfill()
|
||||
try await deferredSettings.fulfill()
|
||||
|
||||
XCTAssertEqual(context.viewState.settings?.directChatsMode, .allMessages)
|
||||
XCTAssertEqual(context.viewState.settings?.inconsistentSettings, [.init(chatType: .groupChat, isEncrypted: false), .init(chatType: .oneToOneChat, isEncrypted: false)])
|
||||
|
||||
deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.fixingConfigurationMismatch == true
|
||||
}
|
||||
var deferredMismatch = deferFulfillment(viewModel.context.observe(\.viewState.fixingConfigurationMismatch)) { $0 }
|
||||
|
||||
context.send(viewAction: .fixConfigurationMismatchTapped)
|
||||
|
||||
try await deferred.fulfill()
|
||||
try await deferredMismatch.fulfill()
|
||||
|
||||
deferred = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.fixingConfigurationMismatch == false
|
||||
}
|
||||
deferredMismatch = deferFulfillment(viewModel.context.observe(\.viewState.fixingConfigurationMismatch)) { !$0 }
|
||||
|
||||
try await deferred.fulfill()
|
||||
try await deferredMismatch.fulfill()
|
||||
|
||||
// All problems should be fixed
|
||||
XCTAssertEqual(notificationSettingsProxy.setDefaultRoomNotificationModeIsEncryptedIsOneToOneModeCallsCount, 2)
|
||||
@@ -216,9 +203,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
func testToggleRoomMentionOff() async throws {
|
||||
notificationSettingsProxy.isRoomMentionEnabledReturnValue = true
|
||||
|
||||
let deferredState = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredState = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
notificationSettingsProxy.callbacks.send(.settingsDidChange)
|
||||
|
||||
@@ -241,9 +226,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
func testToggleRoomMentionOn() async throws {
|
||||
notificationSettingsProxy.isRoomMentionEnabledReturnValue = false
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
try await deferredInitialFetch.fulfill()
|
||||
@@ -266,9 +249,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
notificationSettingsProxy.setRoomMentionEnabledEnabledThrowableError = NotificationSettingsError.Generic(msg: "error")
|
||||
notificationSettingsProxy.isRoomMentionEnabledReturnValue = false
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -276,17 +257,13 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
|
||||
context.roomMentionsEnabled = true
|
||||
|
||||
var deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.applyingChange == true
|
||||
}
|
||||
var deferred = deferFulfillment(context.observe(\.viewState.applyingChange)) { $0 }
|
||||
|
||||
context.send(viewAction: .roomMentionChanged)
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.applyingChange == false
|
||||
}
|
||||
deferred = deferFulfillment(context.observe(\.viewState.applyingChange)) { !$0 }
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
@@ -296,9 +273,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
func testToggleCallsOff() async throws {
|
||||
notificationSettingsProxy.isCallEnabledReturnValue = true
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -320,9 +295,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
func testToggleCallsOn() async throws {
|
||||
notificationSettingsProxy.isCallEnabledReturnValue = false
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -346,9 +319,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
notificationSettingsProxy.setCallEnabledEnabledThrowableError = NotificationSettingsError.Generic(msg: "error")
|
||||
notificationSettingsProxy.isCallEnabledReturnValue = false
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -356,17 +327,13 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
|
||||
context.callsEnabled = true
|
||||
|
||||
var deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.applyingChange == true
|
||||
}
|
||||
var deferred = deferFulfillment(context.observe(\.viewState.applyingChange)) { $0 }
|
||||
|
||||
context.send(viewAction: .callsChanged)
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.applyingChange == false
|
||||
}
|
||||
deferred = deferFulfillment(context.observe(\.viewState.applyingChange)) { !$0 }
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
@@ -376,9 +343,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
func testToggleInvitationsOff() async throws {
|
||||
notificationSettingsProxy.isInviteForMeEnabledReturnValue = true
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -400,9 +365,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
func testToggleInvitationsOn() async throws {
|
||||
notificationSettingsProxy.isInviteForMeEnabledReturnValue = false
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -426,9 +389,7 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
notificationSettingsProxy.setInviteForMeEnabledEnabledThrowableError = NotificationSettingsError.Generic(msg: "error")
|
||||
notificationSettingsProxy.isInviteForMeEnabledReturnValue = false
|
||||
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.$viewState) { state in
|
||||
state.settings != nil
|
||||
}
|
||||
let deferredInitialFetch = deferFulfillment(viewModel.context.observe(\.viewState.settings)) { $0 != nil }
|
||||
|
||||
viewModel.fetchInitialContent()
|
||||
|
||||
@@ -436,17 +397,13 @@ class NotificationSettingsScreenViewModelTests: XCTestCase {
|
||||
|
||||
context.invitationsEnabled = true
|
||||
|
||||
var deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.applyingChange == true
|
||||
}
|
||||
var deferred = deferFulfillment(context.observe(\.viewState.applyingChange)) { $0 }
|
||||
|
||||
context.send(viewAction: .invitationsChanged)
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
deferred = deferFulfillment(context.$viewState) { state in
|
||||
state.applyingChange == false
|
||||
}
|
||||
deferred = deferFulfillment(context.observe(\.viewState.applyingChange)) { !$0 }
|
||||
|
||||
try await deferred.fulfill()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user