From f97470fb78aa4fe2048ca2cb3e6fd45f05edc460 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Wed, 7 Sep 2022 11:37:58 +0200 Subject: [PATCH] Update ContactFeature --- .../AppFeature/AppEnvironment+Live.swift | 8 +++- .../ContactFeature/ContactFeature.swift | 43 +++++++++++++++++-- .../Sources/ContactFeature/ContactView.swift | 4 +- .../UserSearchFeature/UserSearchFeature.swift | 5 ++- .../ContactFeatureTests.swift | 4 +- .../UserSearchFeatureTests.swift | 9 +++- 6 files changed, 64 insertions(+), 9 deletions(-) diff --git a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift index 03c8442c..8e3f48dc 100644 --- a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift +++ b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift @@ -1,4 +1,5 @@ import AppCore +import ContactFeature import Foundation import HomeFeature import RegisterFeature @@ -55,7 +56,12 @@ extension AppEnvironment { UserSearchResultEnvironment() }, contact: { - ContactEnvironment() + ContactEnvironment( + messenger: messenger, + db: dbManager.getDB, + mainQueue: mainQueue, + bgQueue: bgQueue + ) } ) } diff --git a/Examples/xx-messenger/Sources/ContactFeature/ContactFeature.swift b/Examples/xx-messenger/Sources/ContactFeature/ContactFeature.swift index 98344db8..80fbcc81 100644 --- a/Examples/xx-messenger/Sources/ContactFeature/ContactFeature.swift +++ b/Examples/xx-messenger/Sources/ContactFeature/ContactFeature.swift @@ -1,8 +1,25 @@ +import AppCore import ComposableArchitecture +import Foundation import XCTestDynamicOverlay +import XXClient +import XXMessengerClient +import XXModels public struct ContactState: Equatable { - public init() {} + public init( + id: Data, + dbContact: XXModels.Contact? = nil, + xxContact: XXClient.Contact? = nil + ) { + self.id = id + self.dbContact = dbContact + self.xxContact = xxContact + } + + public var id: Data + public var dbContact: XXModels.Contact? + public var xxContact: XXClient.Contact? } public enum ContactAction: Equatable { @@ -10,12 +27,32 @@ public enum ContactAction: Equatable { } public struct ContactEnvironment { - public init() {} + public init( + messenger: Messenger, + db: DBManagerGetDB, + mainQueue: AnySchedulerOf<DispatchQueue>, + bgQueue: AnySchedulerOf<DispatchQueue> + ) { + self.messenger = messenger + self.db = db + self.mainQueue = mainQueue + self.bgQueue = bgQueue + } + + public var messenger: Messenger + public var db: DBManagerGetDB + public var mainQueue: AnySchedulerOf<DispatchQueue> + public var bgQueue: AnySchedulerOf<DispatchQueue> } #if DEBUG extension ContactEnvironment { - public static let unimplemented = ContactEnvironment() + public static let unimplemented = ContactEnvironment( + messenger: .unimplemented, + db: .unimplemented, + mainQueue: .unimplemented, + bgQueue: .unimplemented + ) } #endif diff --git a/Examples/xx-messenger/Sources/ContactFeature/ContactView.swift b/Examples/xx-messenger/Sources/ContactFeature/ContactView.swift index 2b403a21..a050747e 100644 --- a/Examples/xx-messenger/Sources/ContactFeature/ContactView.swift +++ b/Examples/xx-messenger/Sources/ContactFeature/ContactView.swift @@ -26,7 +26,9 @@ public struct ContactView: View { public struct ContactView_Previews: PreviewProvider { public static var previews: some View { ContactView(store: Store( - initialState: ContactState(), + initialState: ContactState( + id: "contact-id".data(using: .utf8)! + ), reducer: .empty, environment: () )) diff --git a/Examples/xx-messenger/Sources/UserSearchFeature/UserSearchFeature.swift b/Examples/xx-messenger/Sources/UserSearchFeature/UserSearchFeature.swift index 425832e2..e8cb92c0 100644 --- a/Examples/xx-messenger/Sources/UserSearchFeature/UserSearchFeature.swift +++ b/Examples/xx-messenger/Sources/UserSearchFeature/UserSearchFeature.swift @@ -120,7 +120,10 @@ public let userSearchReducer = Reducer<UserSearchState, UserSearchAction, UserSe return .none case .result(let id, action: .tapped): - state.contact = ContactState() + state.contact = ContactState( + id: id, + xxContact: state.results[id: id]?.xxContact + ) return .none case .binding(_), .result(_, _), .contact(_): diff --git a/Examples/xx-messenger/Tests/ContactFeatureTests/ContactFeatureTests.swift b/Examples/xx-messenger/Tests/ContactFeatureTests/ContactFeatureTests.swift index e22cd95b..4711a132 100644 --- a/Examples/xx-messenger/Tests/ContactFeatureTests/ContactFeatureTests.swift +++ b/Examples/xx-messenger/Tests/ContactFeatureTests/ContactFeatureTests.swift @@ -5,7 +5,9 @@ import XCTest final class ContactFeatureTests: XCTestCase { func testStart() { let store = TestStore( - initialState: ContactState(), + initialState: ContactState( + id: "contact-id".data(using: .utf8)! + ), reducer: contactReducer, environment: .unimplemented ) diff --git a/Examples/xx-messenger/Tests/UserSearchFeatureTests/UserSearchFeatureTests.swift b/Examples/xx-messenger/Tests/UserSearchFeatureTests/UserSearchFeatureTests.swift index 285d359e..c457327c 100644 --- a/Examples/xx-messenger/Tests/UserSearchFeatureTests/UserSearchFeatureTests.swift +++ b/Examples/xx-messenger/Tests/UserSearchFeatureTests/UserSearchFeatureTests.swift @@ -104,14 +104,19 @@ final class UserSearchFeatureTests: XCTestCase { ) store.send(.result(id: "contact-id".data(using: .utf8)!, action: .tapped)) { - $0.contact = ContactState() + $0.contact = ContactState( + id: "contact-id".data(using: .utf8)!, + xxContact: .unimplemented("contact-data".data(using: .utf8)!) + ) } } func testDismissingContact() { let store = TestStore( initialState: UserSearchState( - contact: ContactState() + contact: ContactState( + id: "contact-id".data(using: .utf8)! + ) ), reducer: userSearchReducer, environment: .unimplemented -- GitLab