diff --git a/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/SendRequestFeature.xcscheme b/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/SendRequestFeature.xcscheme new file mode 100644 index 0000000000000000000000000000000000000000..2f70b385a82f17839c21022e2b22b2a67a715333 --- /dev/null +++ b/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/SendRequestFeature.xcscheme @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "1340" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "SendRequestFeature" + BuildableName = "SendRequestFeature" + BlueprintName = "SendRequestFeature" + ReferencedContainer = "container:"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + shouldUseLaunchSchemeArgsEnv = "YES" + codeCoverageEnabled = "YES"> + <Testables> + <TestableReference + skipped = "NO"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "SendRequestFeatureTests" + BuildableName = "SendRequestFeatureTests" + BlueprintName = "SendRequestFeatureTests" + ReferencedContainer = "container:"> + </BuildableReference> + </TestableReference> + </Testables> + </TestAction> + <LaunchAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + debugServiceExtension = "internal" + allowLocationSimulation = "YES"> + </LaunchAction> + <ProfileAction + buildConfiguration = "Release" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + debugDocumentVersioning = "YES"> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "SendRequestFeature" + BuildableName = "SendRequestFeature" + BlueprintName = "SendRequestFeature" + ReferencedContainer = "container:"> + </BuildableReference> + </MacroExpansion> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/Examples/xx-messenger/Package.swift b/Examples/xx-messenger/Package.swift index 79123e057db2e191d888d6732ebcd8b5f82d8196..bbd8afa7cb6f4e32e903459986562397fed96c65 100644 --- a/Examples/xx-messenger/Package.swift +++ b/Examples/xx-messenger/Package.swift @@ -24,6 +24,7 @@ let package = Package( .library(name: "HomeFeature", targets: ["HomeFeature"]), .library(name: "RegisterFeature", targets: ["RegisterFeature"]), .library(name: "RestoreFeature", targets: ["RestoreFeature"]), + .library(name: "SendRequestFeature", targets: ["SendRequestFeature"]), .library(name: "UserSearchFeature", targets: ["UserSearchFeature"]), .library(name: "WelcomeFeature", targets: ["WelcomeFeature"]), ], @@ -74,6 +75,7 @@ let package = Package( .target(name: "HomeFeature"), .target(name: "RegisterFeature"), .target(name: "RestoreFeature"), + .target(name: "SendRequestFeature"), .target(name: "UserSearchFeature"), .target(name: "WelcomeFeature"), .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), @@ -94,6 +96,7 @@ let package = Package( name: "ContactFeature", dependencies: [ .target(name: "AppCore"), + .target(name: "SendRequestFeature"), .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), .product(name: "ComposablePresentation", package: "swift-composable-presentation"), .product(name: "XXMessengerClient", package: "elixxir-dapps-sdk-swift"), @@ -158,6 +161,20 @@ let package = Package( ], swiftSettings: swiftSettings ), + .target( + name: "SendRequestFeature", + dependencies: [ + .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), + ], + swiftSettings: swiftSettings + ), + .testTarget( + name: "SendRequestFeatureTests", + dependencies: [ + .target(name: "SendRequestFeature"), + ], + swiftSettings: swiftSettings + ), .target( name: "UserSearchFeature", dependencies: [ diff --git a/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme b/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme index 0bf8b441edcc8a52e505731c1ced22165235da1e..0d7cb106a1c962bb00f93bd1668ae0e80dbcc173 100644 --- a/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme +++ b/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme @@ -89,6 +89,16 @@ ReferencedContainer = "container:.."> </BuildableReference> </TestableReference> + <TestableReference + skipped = "NO"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "SendRequestFeatureTests" + BuildableName = "SendRequestFeatureTests" + BlueprintName = "SendRequestFeatureTests" + ReferencedContainer = "container:.."> + </BuildableReference> + </TestableReference> <TestableReference skipped = "NO"> <BuildableReference diff --git a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift index 514f56bdf187c4c8048d3410dc96a6c41dd5a854..a060ad4863d5eb979fe6ad26a9d1cb843d345a99 100644 --- a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift +++ b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift @@ -62,7 +62,7 @@ extension AppEnvironment { mainQueue: mainQueue, bgQueue: bgQueue, sendRequest: { - ContactSendRequestEnvironment() + SendRequestEnvironment() } ) } diff --git a/Examples/xx-messenger/Sources/ContactFeature/ContactFeature.swift b/Examples/xx-messenger/Sources/ContactFeature/ContactFeature.swift index 7671559251c4c96066569607dbeaa50aa5d8247f..99b7b2bc00f3ef50e901268eaf3c7dd3370719ba 100644 --- a/Examples/xx-messenger/Sources/ContactFeature/ContactFeature.swift +++ b/Examples/xx-messenger/Sources/ContactFeature/ContactFeature.swift @@ -2,6 +2,7 @@ import AppCore import ComposableArchitecture import ComposablePresentation import Foundation +import SendRequestFeature import XCTestDynamicOverlay import XXClient import XXMessengerClient @@ -12,7 +13,7 @@ public struct ContactState: Equatable { id: Data, dbContact: XXModels.Contact? = nil, xxContact: XXClient.Contact? = nil, - sendRequest: ContactSendRequestState? = nil + sendRequest: SendRequestState? = nil ) { self.id = id self.dbContact = dbContact @@ -23,7 +24,7 @@ public struct ContactState: Equatable { public var id: Data public var dbContact: XXModels.Contact? public var xxContact: XXClient.Contact? - public var sendRequest: ContactSendRequestState? + public var sendRequest: SendRequestState? } public enum ContactAction: Equatable { @@ -32,7 +33,7 @@ public enum ContactAction: Equatable { case saveFactsTapped case sendRequestTapped case sendRequestDismissed - case sendRequest(ContactSendRequestAction) + case sendRequest(SendRequestAction) } public struct ContactEnvironment { @@ -41,7 +42,7 @@ public struct ContactEnvironment { db: DBManagerGetDB, mainQueue: AnySchedulerOf<DispatchQueue>, bgQueue: AnySchedulerOf<DispatchQueue>, - sendRequest: @escaping () -> ContactSendRequestEnvironment + sendRequest: @escaping () -> SendRequestEnvironment ) { self.messenger = messenger self.db = db @@ -54,7 +55,7 @@ public struct ContactEnvironment { public var db: DBManagerGetDB public var mainQueue: AnySchedulerOf<DispatchQueue> public var bgQueue: AnySchedulerOf<DispatchQueue> - public var sendRequest: () -> ContactSendRequestEnvironment + public var sendRequest: () -> SendRequestEnvironment } #if DEBUG @@ -103,7 +104,7 @@ public let contactReducer = Reducer<ContactState, ContactAction, ContactEnvironm .eraseToEffect() case .sendRequestTapped: - state.sendRequest = ContactSendRequestState() + state.sendRequest = SendRequestState() return .none case .sendRequestDismissed: @@ -115,7 +116,7 @@ public let contactReducer = Reducer<ContactState, ContactAction, ContactEnvironm } } .presenting( - contactSendRequestReducer, + sendRequestReducer, state: .keyPath(\.sendRequest), id: .notNil(), action: /ContactAction.sendRequest, diff --git a/Examples/xx-messenger/Sources/ContactFeature/ContactSendRequestFeature.swift b/Examples/xx-messenger/Sources/ContactFeature/ContactSendRequestFeature.swift deleted file mode 100644 index a0a474e586194d1391f7db3322b73812c4bbdb6a..0000000000000000000000000000000000000000 --- a/Examples/xx-messenger/Sources/ContactFeature/ContactSendRequestFeature.swift +++ /dev/null @@ -1,28 +0,0 @@ -import ComposableArchitecture -import XCTestDynamicOverlay - -public struct ContactSendRequestState: Equatable { - public init() {} -} - -public enum ContactSendRequestAction: Equatable { - case start -} - -public struct ContactSendRequestEnvironment { - public init() {} -} - -#if DEBUG -extension ContactSendRequestEnvironment { - public static let unimplemented = ContactSendRequestEnvironment() -} -#endif - -public let contactSendRequestReducer = Reducer<ContactSendRequestState, ContactSendRequestAction, ContactSendRequestEnvironment> -{ state, action, env in - switch action { - case .start: - return .none - } -} diff --git a/Examples/xx-messenger/Sources/ContactFeature/ContactView.swift b/Examples/xx-messenger/Sources/ContactFeature/ContactView.swift index 44a46c563aea7077dc2e8c0827e9a49464bf600f..02f12d62c1b4718b9f77f459ee0d218f6582a49d 100644 --- a/Examples/xx-messenger/Sources/ContactFeature/ContactView.swift +++ b/Examples/xx-messenger/Sources/ContactFeature/ContactView.swift @@ -1,6 +1,7 @@ import AppCore import ComposableArchitecture import ComposablePresentation +import SendRequestFeature import SwiftUI import XXClient import XXModels @@ -167,7 +168,7 @@ public struct ContactView: View { action: ContactAction.sendRequest ), onDeactivate: { viewStore.send(.sendRequestDismissed) }, - destination: ContactSendRequestView.init(store:) + destination: SendRequestView.init(store:) )) } } diff --git a/Examples/xx-messenger/Sources/SendRequestFeature/SendRequestFeature.swift b/Examples/xx-messenger/Sources/SendRequestFeature/SendRequestFeature.swift new file mode 100644 index 0000000000000000000000000000000000000000..a6683c294111334d1d207d1f64cef0fb413ad6e3 --- /dev/null +++ b/Examples/xx-messenger/Sources/SendRequestFeature/SendRequestFeature.swift @@ -0,0 +1,28 @@ +import ComposableArchitecture +import XCTestDynamicOverlay + +public struct SendRequestState: Equatable { + public init() {} +} + +public enum SendRequestAction: Equatable { + case start +} + +public struct SendRequestEnvironment { + public init() {} +} + +#if DEBUG +extension SendRequestEnvironment { + public static let unimplemented = SendRequestEnvironment() +} +#endif + +public let sendRequestReducer = Reducer<SendRequestState, SendRequestAction, SendRequestEnvironment> +{ state, action, env in + switch action { + case .start: + return .none + } +} diff --git a/Examples/xx-messenger/Sources/ContactFeature/ContactSendRequestView.swift b/Examples/xx-messenger/Sources/SendRequestFeature/SendRequestView.swift similarity index 52% rename from Examples/xx-messenger/Sources/ContactFeature/ContactSendRequestView.swift rename to Examples/xx-messenger/Sources/SendRequestFeature/SendRequestView.swift index 4f5048d3d098733425d1f53506c4a60052fae6e5..4004246662915a47849468152b40dc1b25f1ca0d 100644 --- a/Examples/xx-messenger/Sources/ContactFeature/ContactSendRequestView.swift +++ b/Examples/xx-messenger/Sources/SendRequestFeature/SendRequestView.swift @@ -1,15 +1,15 @@ import ComposableArchitecture import SwiftUI -public struct ContactSendRequestView: View { - public init(store: Store<ContactSendRequestState, ContactSendRequestAction>) { +public struct SendRequestView: View { + public init(store: Store<SendRequestState, SendRequestAction>) { self.store = store } - let store: Store<ContactSendRequestState, ContactSendRequestAction> + let store: Store<SendRequestState, SendRequestAction> struct ViewState: Equatable { - init(state: ContactSendRequestState) {} + init(state: SendRequestState) {} } public var body: some View { @@ -24,10 +24,10 @@ public struct ContactSendRequestView: View { } #if DEBUG -public struct ContactSendRequestView_Previews: PreviewProvider { +public struct SendRequestView_Previews: PreviewProvider { public static var previews: some View { - ContactSendRequestView(store: Store( - initialState: ContactSendRequestState(), + SendRequestView(store: Store( + initialState: SendRequestState(), reducer: .empty, environment: () )) diff --git a/Examples/xx-messenger/Tests/ContactFeatureTests/ContactFeatureTests.swift b/Examples/xx-messenger/Tests/ContactFeatureTests/ContactFeatureTests.swift index 64d0d72ad9ffce1186b1002c306c1f1e45ecd2cd..9f3238709229e25edb0c8d27512a66d778bc6234 100644 --- a/Examples/xx-messenger/Tests/ContactFeatureTests/ContactFeatureTests.swift +++ b/Examples/xx-messenger/Tests/ContactFeatureTests/ContactFeatureTests.swift @@ -1,6 +1,7 @@ import Combine import ComposableArchitecture import CustomDump +import SendRequestFeature import XCTest import XXClient import XXModels @@ -104,7 +105,7 @@ final class ContactFeatureTests: XCTestCase { ) store.send(.sendRequestTapped) { - $0.sendRequest = ContactSendRequestState() + $0.sendRequest = SendRequestState() } store.send(.sendRequestDismissed) { diff --git a/Examples/xx-messenger/Tests/ContactFeatureTests/ContactSendRequestFeatureTests.swift b/Examples/xx-messenger/Tests/ContactFeatureTests/ContactSendRequestFeatureTests.swift deleted file mode 100644 index 8d4eb040d37700997205b2d263d25571579bf0f5..0000000000000000000000000000000000000000 --- a/Examples/xx-messenger/Tests/ContactFeatureTests/ContactSendRequestFeatureTests.swift +++ /dev/null @@ -1,15 +0,0 @@ -import ComposableArchitecture -import XCTest -@testable import ContactFeature - -final class ContactSendRequestFeatureTests: XCTestCase { - func testStart() { - let store = TestStore( - initialState: ContactSendRequestState(), - reducer: contactSendRequestReducer, - environment: .unimplemented - ) - - store.send(.start) - } -} diff --git a/Examples/xx-messenger/Tests/SendRequestFeatureTests/SendRequestFeatureTests.swift b/Examples/xx-messenger/Tests/SendRequestFeatureTests/SendRequestFeatureTests.swift new file mode 100644 index 0000000000000000000000000000000000000000..c64665d2408838577cdcf8f5ce5696e7f653940e --- /dev/null +++ b/Examples/xx-messenger/Tests/SendRequestFeatureTests/SendRequestFeatureTests.swift @@ -0,0 +1,15 @@ +import ComposableArchitecture +import XCTest +@testable import SendRequestFeature + +final class SendRequestFeatureTests: XCTestCase { + func testStart() { + let store = TestStore( + initialState: SendRequestState(), + reducer: sendRequestReducer, + environment: .unimplemented + ) + + store.send(.start) + } +}