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