diff --git a/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/NewGroupFeature.xcscheme b/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/NewGroupFeature.xcscheme new file mode 100644 index 0000000000000000000000000000000000000000..8a4e4405667c2a1dd517c6d8a3468e2c21a5dc3b --- /dev/null +++ b/Examples/xx-messenger/.swiftpm/xcode/xcshareddata/xcschemes/NewGroupFeature.xcscheme @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "1410" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "NewGroupFeature" + BuildableName = "NewGroupFeature" + BlueprintName = "NewGroupFeature" + 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 = "NewGroupFeatureTests" + BuildableName = "NewGroupFeatureTests" + BlueprintName = "NewGroupFeatureTests" + 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 = "NewGroupFeature" + BuildableName = "NewGroupFeature" + BlueprintName = "NewGroupFeature" + 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 484c0112823ac3949e2cf8a24f32ea1af622b832..84704908d409169e4dd5cfdf8dabff36b8733b0a 100644 --- a/Examples/xx-messenger/Package.swift +++ b/Examples/xx-messenger/Package.swift @@ -25,6 +25,7 @@ let package = Package( .library(name: "GroupsFeature", targets: ["GroupsFeature"]), .library(name: "HomeFeature", targets: ["HomeFeature"]), .library(name: "MyContactFeature", targets: ["MyContactFeature"]), + .library(name: "NewGroupFeature", targets: ["NewGroupFeature"]), .library(name: "RegisterFeature", targets: ["RegisterFeature"]), .library(name: "ResetAuthFeature", targets: ["ResetAuthFeature"]), .library(name: "RestoreFeature", targets: ["RestoreFeature"]), @@ -324,6 +325,25 @@ let package = Package( ], swiftSettings: swiftSettings ), + .target( + name: "NewGroupFeature", + dependencies: [ + .target(name: "AppCore"), + .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), + .product(name: "XXClient", package: "elixxir-dapps-sdk-swift"), + .product(name: "XXMessengerClient", package: "elixxir-dapps-sdk-swift"), + .product(name: "XXModels", package: "client-ios-db"), + ], + swiftSettings: swiftSettings + ), + .testTarget( + name: "NewGroupFeatureTests", + dependencies: [ + .target(name: "NewGroupFeature"), + .product(name: "CustomDump", package: "swift-custom-dump"), + ], + swiftSettings: swiftSettings + ), .target( name: "RegisterFeature", 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 71d6d8c43dbd6f8efa19e8f4c3bd4c36d5e279e8..45d9c2cb833a9f0bda12be9ec2b5b7bf1839b9b7 100644 --- a/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme +++ b/Examples/xx-messenger/Project/XXMessenger.xcodeproj/xcshareddata/xcschemes/XXMessenger.xcscheme @@ -149,6 +149,16 @@ ReferencedContainer = "container:.."> </BuildableReference> </TestableReference> + <TestableReference + skipped = "NO"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "NewGroupFeatureTests" + BuildableName = "NewGroupFeatureTests" + BlueprintName = "NewGroupFeatureTests" + ReferencedContainer = "container:.."> + </BuildableReference> + </TestableReference> <TestableReference skipped = "NO"> <BuildableReference diff --git a/Examples/xx-messenger/Sources/NewGroupFeature/NewGroupComponent.swift b/Examples/xx-messenger/Sources/NewGroupFeature/NewGroupComponent.swift new file mode 100644 index 0000000000000000000000000000000000000000..5182577975d8173e04adb8682bb900877f40256e --- /dev/null +++ b/Examples/xx-messenger/Sources/NewGroupFeature/NewGroupComponent.swift @@ -0,0 +1,20 @@ +import ComposableArchitecture + +public struct NewGroupComponent: ReducerProtocol { + public struct State: Equatable { + public init() {} + } + + public enum Action: Equatable { + case start + } + + public init() {} + + public func reduce(into state: inout State, action: Action) -> EffectTask<Action> { + switch action { + case .start: + return .none + } + } +} diff --git a/Examples/xx-messenger/Sources/NewGroupFeature/NewGroupView.swift b/Examples/xx-messenger/Sources/NewGroupFeature/NewGroupView.swift new file mode 100644 index 0000000000000000000000000000000000000000..fa85a16fc9cfa01b4cee4c8d95bc1a5ce0aaea45 --- /dev/null +++ b/Examples/xx-messenger/Sources/NewGroupFeature/NewGroupView.swift @@ -0,0 +1,41 @@ +import AppCore +import ComposableArchitecture +import SwiftUI +import XXModels + +public struct NewGroupView: View { + public typealias Component = NewGroupComponent + + public init(store: StoreOf<Component>) { + self.store = store + } + + let store: StoreOf<Component> + + struct ViewState: Equatable { + init(state: Component.State) {} + } + + public var body: some View { + WithViewStore(store, observe: ViewState.init) { viewStore in + Form { + + } + .navigationTitle("New Group") + .task { viewStore.send(.start) } + } + } +} + +#if DEBUG +public struct NewGroupView_Previews: PreviewProvider { + public static var previews: some View { + NavigationView { + NewGroupView(store: Store( + initialState: NewGroupComponent.State(), + reducer: EmptyReducer() + )) + } + } +} +#endif diff --git a/Examples/xx-messenger/Tests/NewGroupFeatureTests/NewGroupComponentTests.swift b/Examples/xx-messenger/Tests/NewGroupFeatureTests/NewGroupComponentTests.swift new file mode 100644 index 0000000000000000000000000000000000000000..7054cec91d158f696b306159898bfb6c7c0a7678 --- /dev/null +++ b/Examples/xx-messenger/Tests/NewGroupFeatureTests/NewGroupComponentTests.swift @@ -0,0 +1,14 @@ +import ComposableArchitecture +import XCTest +@testable import NewGroupFeature + +final class NewGroupComponentTests: XCTestCase { + func testStart() { + let store = TestStore( + initialState: NewGroupComponent.State(), + reducer: NewGroupComponent() + ) + + store.send(.start) + } +}