- AddressDetails migrated to ReducerProtocol
This commit is contained in:
parent
13061e7a1a
commit
2afafb1b39
|
@ -8,73 +8,35 @@
|
|||
import Foundation
|
||||
import ComposableArchitecture
|
||||
|
||||
typealias AddressDetailsReducer = Reducer<AddressDetailsState, AddressDetailsAction, AddressDetailsEnvironment>
|
||||
typealias AddressDetailsStore = Store<AddressDetailsState, AddressDetailsAction>
|
||||
typealias AddressDetailsViewStore = ViewStore<AddressDetailsState, AddressDetailsAction>
|
||||
typealias AddressDetailsStore = Store<AddressDetailsReducer.State, AddressDetailsReducer.Action>
|
||||
|
||||
// MARK: - State
|
||||
struct AddressDetailsReducer: ReducerProtocol {
|
||||
struct State: Equatable { }
|
||||
|
||||
struct AddressDetailsState: Equatable {
|
||||
}
|
||||
|
||||
// MARK: - Action
|
||||
|
||||
enum AddressDetailsAction: Equatable {
|
||||
enum Action: Equatable {
|
||||
case copyToPastboard(String)
|
||||
}
|
||||
|
||||
// MARK: - Environment
|
||||
|
||||
struct AddressDetailsEnvironment {
|
||||
let pasteboard: WrappedPasteboard
|
||||
}
|
||||
|
||||
extension AddressDetailsEnvironment {
|
||||
static let live = AddressDetailsEnvironment(
|
||||
pasteboard: .live
|
||||
)
|
||||
|
||||
static let mock = AddressDetailsEnvironment(
|
||||
pasteboard: .test
|
||||
)
|
||||
}
|
||||
|
||||
// MARK: - Reducer
|
||||
|
||||
extension AddressDetailsReducer {
|
||||
static let `default` = AddressDetailsReducer { _, action, environment in
|
||||
switch action {
|
||||
case .copyToPastboard(let value):
|
||||
environment.pasteboard.setString(value)
|
||||
}
|
||||
|
||||
@Dependency(\.pasteboard) var pasteboard
|
||||
|
||||
func reduce(into state: inout State, action: Action) -> ComposableArchitecture.EffectTask<Action> {
|
||||
switch action {
|
||||
case .copyToPastboard(let value):
|
||||
pasteboard.setString(value)
|
||||
}
|
||||
return .none
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Store
|
||||
|
||||
extension AddressDetailsStore {
|
||||
}
|
||||
|
||||
// MARK: - ViewStore
|
||||
|
||||
extension AddressDetailsViewStore {
|
||||
}
|
||||
|
||||
// MARK: - Placeholders
|
||||
|
||||
extension AddressDetailsState {
|
||||
static let placeholder = AddressDetailsState(
|
||||
)
|
||||
extension AddressDetailsReducer.State {
|
||||
static let placeholder = AddressDetailsReducer.State()
|
||||
}
|
||||
|
||||
extension AddressDetailsStore {
|
||||
static let placeholder = AddressDetailsStore(
|
||||
initialState: .placeholder,
|
||||
reducer: .default,
|
||||
environment: AddressDetailsEnvironment(
|
||||
pasteboard: .test
|
||||
)
|
||||
reducer: AddressDetailsReducer()
|
||||
)
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ typealias ProfileStore = Store<ProfileState, ProfileAction>
|
|||
typealias ProfileViewStore = ViewStore<ProfileState, ProfileAction>
|
||||
|
||||
typealias AnySettingsReducer = AnyReducer<SettingsReducer.State, SettingsReducer.Action, ProfileEnvironment>
|
||||
typealias AnyAddressDetailsReducer = AnyReducer<AddressDetailsReducer.State, AddressDetailsReducer.Action, ProfileEnvironment>
|
||||
|
||||
// MARK: - State
|
||||
|
||||
|
@ -16,7 +17,7 @@ struct ProfileState: Equatable {
|
|||
}
|
||||
|
||||
var address = ""
|
||||
var addressDetailsState: AddressDetailsState
|
||||
var addressDetailsState: AddressDetailsReducer.State
|
||||
var appBuild = ""
|
||||
var appVersion = ""
|
||||
var route: Route?
|
||||
|
@ -27,7 +28,7 @@ struct ProfileState: Equatable {
|
|||
// MARK: - Action
|
||||
|
||||
enum ProfileAction: Equatable {
|
||||
case addressDetails(AddressDetailsAction)
|
||||
case addressDetails(AddressDetailsReducer.Action)
|
||||
case back
|
||||
case onAppear
|
||||
case settings(SettingsReducer.Action)
|
||||
|
@ -97,14 +98,13 @@ extension ProfileReducer {
|
|||
}
|
||||
}
|
||||
|
||||
private static let addressDetailsReducer: ProfileReducer = AddressDetailsReducer.default.pullback(
|
||||
private static let addressDetailsReducer: ProfileReducer = AnyAddressDetailsReducer { _ in
|
||||
AddressDetailsReducer()
|
||||
}
|
||||
.pullback(
|
||||
state: \ProfileState.addressDetailsState,
|
||||
action: /ProfileAction.addressDetails,
|
||||
environment: { _ in
|
||||
AddressDetailsEnvironment(
|
||||
pasteboard: .live
|
||||
)
|
||||
}
|
||||
environment: { $0 }
|
||||
)
|
||||
|
||||
private static let settingsReducer: ProfileReducer = AnySettingsReducer { _ in
|
||||
|
|
Loading…
Reference in New Issue