[#460] Migrate AddressDetails to ReducerProtocol (#473)

- AddressDetails migrated to ReducerProtocol
This commit is contained in:
Lukas Korba 2022-11-07 11:53:05 +01:00 committed by GitHub
parent 13061e7a1a
commit 2afafb1b39
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 60 deletions

View File

@ -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 {
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
enum Action: Equatable {
case copyToPastboard(String)
}
@Dependency(\.pasteboard) var pasteboard
func reduce(into state: inout State, action: Action) -> ComposableArchitecture.EffectTask<Action> {
switch action {
case .copyToPastboard(let value):
environment.pasteboard.setString(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()
)
}

View File

@ -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