diff --git a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift index 03c8442cf0431924977536d9b3e84a6318087279..8e3f48dc36217c97ad7f782db7b892c65b0a4487 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 98344db8c7ac419eb96ca2abcab5f9af60ad8887..80fbcc81f5d01ff10dac71a6f2bc831f4d4f91dd 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 2b403a21eb556fed4fa52729192b48cd91c30f3c..a050747e31f2a0ee861bd9e8e17cf93e2777c0bf 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 425832e26ee67b4a71bf3bd6086fd3269c26dbad..e8cb92c04697660c545f3f4fb1e1b4de40147296 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 e22cd95b8f13461d3487452453a14b3dbe6bb070..4711a13269fa4b8576b8280f7a3b90e717fa25a5 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 285d359e7a8582ba52a10a8308f447f1f251b198..c457327c86722f020ffe2ffc55c251c3261fcc8a 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