From 43cbb8aa244b36bc3be4f1cab9a3eb06cf02b5e9 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Thu, 22 Sep 2022 23:40:38 +0200 Subject: [PATCH] Remove AuthHandler and MessageListener from HomeFeature --- .../AppFeature/AppEnvironment+Live.swift | 5 - .../Sources/HomeFeature/HomeFeature.swift | 80 ----------- .../Sources/HomeFeature/HomeView.swift | 30 ---- .../HomeFeatureTests/HomeFeatureTests.swift | 129 ------------------ 4 files changed, 244 deletions(-) diff --git a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift index 77da4aec..3c75f40a 100644 --- a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift +++ b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift @@ -111,11 +111,6 @@ extension AppEnvironment { HomeEnvironment( messenger: messenger, dbManager: dbManager, - authHandler: authHandler, - messageListener: .live( - messenger: messenger, - db: dbManager.getDB - ), mainQueue: mainQueue, bgQueue: bgQueue, register: { diff --git a/Examples/xx-messenger/Sources/HomeFeature/HomeFeature.swift b/Examples/xx-messenger/Sources/HomeFeature/HomeFeature.swift index aa327921..068cdb4d 100644 --- a/Examples/xx-messenger/Sources/HomeFeature/HomeFeature.swift +++ b/Examples/xx-messenger/Sources/HomeFeature/HomeFeature.swift @@ -14,8 +14,6 @@ import XXModels public struct HomeState: Equatable { public init( failure: String? = nil, - authFailure: String? = nil, - messageListenerFailure: String? = nil, isNetworkHealthy: Bool? = nil, networkNodesReport: NodeRegistrationReport? = nil, isDeletingAccount: Bool = false, @@ -25,8 +23,6 @@ public struct HomeState: Equatable { userSearch: UserSearchState? = nil ) { self.failure = failure - self.authFailure = authFailure - self.messageListenerFailure = messageListenerFailure self.isNetworkHealthy = isNetworkHealthy self.isDeletingAccount = isDeletingAccount self.alert = alert @@ -36,8 +32,6 @@ public struct HomeState: Equatable { } public var failure: String? - public var authFailure: String? - public var messageListenerFailure: String? public var isNetworkHealthy: Bool? public var networkNodesReport: NodeRegistrationReport? public var isDeletingAccount: Bool @@ -55,20 +49,6 @@ public enum HomeAction: Equatable { case failure(NSError) } - public enum AuthHandler: Equatable { - case start - case stop - case failure(NSError) - case failureDismissed - } - - public enum MessageListener: Equatable { - case start - case stop - case failure(NSError) - case failureDismissed - } - public enum NetworkMonitor: Equatable { case start case stop @@ -84,8 +64,6 @@ public enum HomeAction: Equatable { } case messenger(Messenger) - case authHandler(AuthHandler) - case messageListener(MessageListener) case networkMonitor(NetworkMonitor) case deleteAccount(DeleteAccount) case didDismissAlert @@ -103,8 +81,6 @@ public struct HomeEnvironment { public init( messenger: Messenger, dbManager: DBManager, - authHandler: AuthCallbackHandler, - messageListener: MessageListenerHandler, mainQueue: AnySchedulerOf<DispatchQueue>, bgQueue: AnySchedulerOf<DispatchQueue>, register: @escaping () -> RegisterEnvironment, @@ -113,8 +89,6 @@ public struct HomeEnvironment { ) { self.messenger = messenger self.dbManager = dbManager - self.authHandler = authHandler - self.messageListener = messageListener self.mainQueue = mainQueue self.bgQueue = bgQueue self.register = register @@ -124,8 +98,6 @@ public struct HomeEnvironment { public var messenger: Messenger public var dbManager: DBManager - public var authHandler: AuthCallbackHandler - public var messageListener: MessageListenerHandler public var mainQueue: AnySchedulerOf<DispatchQueue> public var bgQueue: AnySchedulerOf<DispatchQueue> public var register: () -> RegisterEnvironment @@ -137,8 +109,6 @@ extension HomeEnvironment { public static let unimplemented = HomeEnvironment( messenger: .unimplemented, dbManager: .unimplemented, - authHandler: .unimplemented, - messageListener: .unimplemented, mainQueue: .unimplemented, bgQueue: .unimplemented, register: { .unimplemented }, @@ -151,14 +121,10 @@ public let homeReducer = Reducer<HomeState, HomeAction, HomeEnvironment> { state, action, env in enum NetworkHealthEffectId {} enum NetworkNodesEffectId {} - enum AuthCallbacksEffectId {} - enum MessageListenerEffectId {} switch action { case .messenger(.start): return .merge( - Effect(value: .authHandler(.start)), - Effect(value: .messageListener(.start)), Effect(value: .networkMonitor(.stop)), Effect.result { do { @@ -200,52 +166,6 @@ public let homeReducer = Reducer<HomeState, HomeAction, HomeEnvironment> state.failure = error.localizedDescription return .none - case .authHandler(.start): - return Effect.run { subscriber in - let cancellable = env.authHandler(onError: { error in - subscriber.send(.authHandler(.failure(error as NSError))) - }) - return AnyCancellable { cancellable.cancel() } - } - .subscribe(on: env.bgQueue) - .receive(on: env.mainQueue) - .eraseToEffect() - .cancellable(id: AuthCallbacksEffectId.self, cancelInFlight: true) - - case .authHandler(.stop): - return .cancel(id: AuthCallbacksEffectId.self) - - case .authHandler(.failure(let error)): - state.authFailure = error.localizedDescription - return .none - - case .authHandler(.failureDismissed): - state.authFailure = nil - return .none - - case .messageListener(.start): - return Effect.run { subscriber in - let cancellable = env.messageListener(onError: { error in - subscriber.send(.messageListener(.failure(error as NSError))) - }) - return AnyCancellable { cancellable.cancel() } - } - .subscribe(on: env.bgQueue) - .receive(on: env.mainQueue) - .eraseToEffect() - .cancellable(id: MessageListenerEffectId.self, cancelInFlight: true) - - case .messageListener(.stop): - return .cancel(id: MessageListenerEffectId.self) - - case .messageListener(.failure(let error)): - state.messageListenerFailure = error.localizedDescription - return .none - - case .messageListener(.failureDismissed): - state.messageListenerFailure = nil - return .none - case .networkMonitor(.start): return .merge( Effect.run { subscriber in diff --git a/Examples/xx-messenger/Sources/HomeFeature/HomeView.swift b/Examples/xx-messenger/Sources/HomeFeature/HomeView.swift index 8cd7259b..03907b18 100644 --- a/Examples/xx-messenger/Sources/HomeFeature/HomeView.swift +++ b/Examples/xx-messenger/Sources/HomeFeature/HomeView.swift @@ -15,16 +15,12 @@ public struct HomeView: View { struct ViewState: Equatable { var failure: String? - var authFailure: String? - var messageListenerFailure: String? var isNetworkHealthy: Bool? var networkNodesReport: NodeRegistrationReport? var isDeletingAccount: Bool init(state: HomeState) { failure = state.failure - authFailure = state.authFailure - messageListenerFailure = state.messageListenerFailure isNetworkHealthy = state.isNetworkHealthy isDeletingAccount = state.isDeletingAccount networkNodesReport = state.networkNodesReport @@ -48,32 +44,6 @@ public struct HomeView: View { } } - if let authFailure = viewStore.authFailure { - Section { - Text(authFailure) - Button { - viewStore.send(.authHandler(.failureDismissed)) - } label: { - Text("Dismiss") - } - } header: { - Text("Auth Error") - } - } - - if let messageListenerFailure = viewStore.messageListenerFailure { - Section { - Text(messageListenerFailure) - Button { - viewStore.send(.messageListener(.failureDismissed)) - } label: { - Text("Dismiss") - } - } header: { - Text("Message Listener Error") - } - } - Section { HStack { Text("Health") diff --git a/Examples/xx-messenger/Tests/HomeFeatureTests/HomeFeatureTests.swift b/Examples/xx-messenger/Tests/HomeFeatureTests/HomeFeatureTests.swift index 1dc2ccf2..a40f432c 100644 --- a/Examples/xx-messenger/Tests/HomeFeatureTests/HomeFeatureTests.swift +++ b/Examples/xx-messenger/Tests/HomeFeatureTests/HomeFeatureTests.swift @@ -24,8 +24,6 @@ final class HomeFeatureTests: XCTestCase { store.environment.bgQueue = .immediate store.environment.mainQueue = .immediate - store.environment.authHandler.run = { _ in Cancellable {} } - store.environment.messageListener.run = { _ in Cancellable {} } store.environment.messenger.start.run = { messengerDidStartWithTimeout.append($0) } store.environment.messenger.isConnected.run = { false } store.environment.messenger.connect.run = { messengerDidConnect += 1 } @@ -40,15 +38,10 @@ final class HomeFeatureTests: XCTestCase { XCTAssertNoDifference(messengerDidConnect, 1) XCTAssertNoDifference(messengerDidListenForMessages, 1) - store.receive(.authHandler(.start)) - store.receive(.messageListener(.start)) store.receive(.networkMonitor(.stop)) store.receive(.messenger(.didStartUnregistered)) { $0.register = RegisterState() } - - store.send(.authHandler(.stop)) - store.send(.messageListener(.stop)) } func testMessengerStartRegistered() { @@ -65,8 +58,6 @@ final class HomeFeatureTests: XCTestCase { store.environment.bgQueue = .immediate store.environment.mainQueue = .immediate - store.environment.authHandler.run = { _ in Cancellable {} } - store.environment.messageListener.run = { _ in Cancellable {} } store.environment.messenger.start.run = { messengerDidStartWithTimeout.append($0) } store.environment.messenger.isConnected.run = { false } store.environment.messenger.connect.run = { messengerDidConnect += 1 } @@ -92,15 +83,11 @@ final class HomeFeatureTests: XCTestCase { XCTAssertNoDifference(messengerDidListenForMessages, 1) XCTAssertNoDifference(messengerDidLogIn, 1) - store.receive(.authHandler(.start)) - store.receive(.messageListener(.start)) store.receive(.networkMonitor(.stop)) store.receive(.messenger(.didStartRegistered)) store.receive(.networkMonitor(.start)) store.send(.networkMonitor(.stop)) - store.send(.authHandler(.stop)) - store.send(.messageListener(.stop)) } func testRegisterFinished() { @@ -117,8 +104,6 @@ final class HomeFeatureTests: XCTestCase { store.environment.bgQueue = .immediate store.environment.mainQueue = .immediate - store.environment.authHandler.run = { _ in Cancellable {} } - store.environment.messageListener.run = { _ in Cancellable {} } store.environment.messenger.start.run = { messengerDidStartWithTimeout.append($0) } store.environment.messenger.isConnected.run = { true } store.environment.messenger.isListeningForMessages.run = { true } @@ -144,15 +129,11 @@ final class HomeFeatureTests: XCTestCase { XCTAssertNoDifference(messengerDidStartWithTimeout, [30_000]) XCTAssertNoDifference(messengerDidLogIn, 1) - store.receive(.authHandler(.start)) - store.receive(.messageListener(.start)) store.receive(.networkMonitor(.stop)) store.receive(.messenger(.didStartRegistered)) store.receive(.networkMonitor(.start)) store.send(.networkMonitor(.stop)) - store.send(.authHandler(.stop)) - store.send(.messageListener(.stop)) } func testMessengerStartFailure() { @@ -167,21 +148,14 @@ final class HomeFeatureTests: XCTestCase { store.environment.bgQueue = .immediate store.environment.mainQueue = .immediate - store.environment.authHandler.run = { _ in Cancellable {} } - store.environment.messageListener.run = { _ in Cancellable {} } store.environment.messenger.start.run = { _ in throw error } store.send(.messenger(.start)) - store.receive(.authHandler(.start)) - store.receive(.messageListener(.start)) store.receive(.networkMonitor(.stop)) store.receive(.messenger(.failure(error as NSError))) { $0.failure = error.localizedDescription } - - store.send(.authHandler(.stop)) - store.send(.messageListener(.stop)) } func testMessengerStartConnectFailure() { @@ -196,23 +170,16 @@ final class HomeFeatureTests: XCTestCase { store.environment.bgQueue = .immediate store.environment.mainQueue = .immediate - store.environment.authHandler.run = { _ in Cancellable {} } - store.environment.messageListener.run = { _ in Cancellable {} } store.environment.messenger.start.run = { _ in } store.environment.messenger.isConnected.run = { false } store.environment.messenger.connect.run = { throw error } store.send(.messenger(.start)) - store.receive(.authHandler(.start)) - store.receive(.messageListener(.start)) store.receive(.networkMonitor(.stop)) store.receive(.messenger(.failure(error as NSError))) { $0.failure = error.localizedDescription } - - store.send(.authHandler(.stop)) - store.send(.messageListener(.stop)) } func testMessengerStartIsRegisteredFailure() { @@ -227,8 +194,6 @@ final class HomeFeatureTests: XCTestCase { store.environment.bgQueue = .immediate store.environment.mainQueue = .immediate - store.environment.authHandler.run = { _ in Cancellable {} } - store.environment.messageListener.run = { _ in Cancellable {} } store.environment.messenger.start.run = { _ in } store.environment.messenger.isConnected.run = { true } store.environment.messenger.isListeningForMessages.run = { true } @@ -237,15 +202,10 @@ final class HomeFeatureTests: XCTestCase { store.send(.messenger(.start)) - store.receive(.authHandler(.start)) - store.receive(.messageListener(.start)) store.receive(.networkMonitor(.stop)) store.receive(.messenger(.failure(error as NSError))) { $0.failure = error.localizedDescription } - - store.send(.authHandler(.stop)) - store.send(.messageListener(.stop)) } func testMessengerStartLogInFailure() { @@ -260,8 +220,6 @@ final class HomeFeatureTests: XCTestCase { store.environment.bgQueue = .immediate store.environment.mainQueue = .immediate - store.environment.authHandler.run = { _ in Cancellable {} } - store.environment.messageListener.run = { _ in Cancellable {} } store.environment.messenger.start.run = { _ in } store.environment.messenger.isConnected.run = { true } store.environment.messenger.isListeningForMessages.run = { true } @@ -271,15 +229,10 @@ final class HomeFeatureTests: XCTestCase { store.send(.messenger(.start)) - store.receive(.authHandler(.start)) - store.receive(.messageListener(.start)) store.receive(.networkMonitor(.stop)) store.receive(.messenger(.failure(error as NSError))) { $0.failure = error.localizedDescription } - - store.send(.authHandler(.stop)) - store.send(.messageListener(.stop)) } func testNetworkMonitorStart() { @@ -551,86 +504,4 @@ final class HomeFeatureTests: XCTestCase { $0.contacts = nil } } - - func testAuthCallbacks() { - let store = TestStore( - initialState: HomeState(), - reducer: homeReducer, - environment: .unimplemented - ) - - var didRunAuthHandler = 0 - var didCancelAuthHandler = 0 - var authHandlerOnError: [AuthCallbackHandler.OnError] = [] - - store.environment.mainQueue = .immediate - store.environment.bgQueue = .immediate - store.environment.authHandler.run = { onError in - didRunAuthHandler += 1 - authHandlerOnError.append(onError) - return Cancellable { didCancelAuthHandler += 1 } - } - - store.send(.authHandler(.start)) - - XCTAssertNoDifference(didRunAuthHandler, 1) - - struct AuthHandlerError: Error { var id: Int } - authHandlerOnError.first?(AuthHandlerError(id: 1)) - - store.receive(.authHandler(.failure(AuthHandlerError(id: 1) as NSError))) { - $0.authFailure = AuthHandlerError(id: 1).localizedDescription - } - - store.send(.authHandler(.failureDismissed)) { - $0.authFailure = nil - } - - store.send(.authHandler(.stop)) - - XCTAssertNoDifference(didCancelAuthHandler, 1) - - authHandlerOnError.first?(AuthHandlerError(id: 2)) - } - - func testMessageListener() { - let store = TestStore( - initialState: HomeState(), - reducer: homeReducer, - environment: .unimplemented - ) - - var didRunMessageListener = 0 - var didCancelMessageListener = 0 - var messageListenerOnError: [MessageListenerHandler.OnError] = [] - - store.environment.mainQueue = .immediate - store.environment.bgQueue = .immediate - store.environment.messageListener.run = { onError in - didRunMessageListener += 1 - messageListenerOnError.append(onError) - return Cancellable { didCancelMessageListener += 1 } - } - - store.send(.messageListener(.start)) - - XCTAssertNoDifference(didRunMessageListener, 1) - - struct MessageListenerError: Error { var id: Int } - messageListenerOnError.first?(MessageListenerError(id: 1)) - - store.receive(.messageListener(.failure(MessageListenerError(id: 1) as NSError))) { - $0.messageListenerFailure = MessageListenerError(id: 1).localizedDescription - } - - store.send(.messageListener(.failureDismissed)) { - $0.messageListenerFailure = nil - } - - store.send(.messageListener(.stop)) - - XCTAssertNoDifference(didCancelMessageListener, 1) - - messageListenerOnError.first?(MessageListenerError(id: 2)) - } } -- GitLab