2021-11-10 12:09:17 -08:00
|
|
|
import SwiftUI
|
|
|
|
import ComposableArchitecture
|
|
|
|
|
|
|
|
struct HomeView: View {
|
|
|
|
let store: Store<HomeState, HomeAction>
|
|
|
|
|
|
|
|
var body: some View {
|
|
|
|
WithViewStore(store) { viewStore in
|
|
|
|
VStack {
|
|
|
|
Button(
|
|
|
|
action: { viewStore.toggleShowingHistory() },
|
|
|
|
label: { Text(viewStore.historyToggleString()) }
|
|
|
|
)
|
|
|
|
.primaryButtonStyle
|
|
|
|
.frame(height: 50)
|
|
|
|
|
|
|
|
Button(
|
|
|
|
action: { viewStore.toggleSelectedTransaction() },
|
|
|
|
label: { Text("Toggle Selected Transaction") }
|
|
|
|
)
|
|
|
|
.primaryButtonStyle
|
|
|
|
.frame(height: 50)
|
|
|
|
|
2021-10-26 16:14:03 -07:00
|
|
|
Button(
|
|
|
|
action: { viewStore.send(.updateRoute(.recoveryPhraseDisplay)) },
|
|
|
|
label: { Text("Show Recovery Phrase Demo") }
|
|
|
|
)
|
|
|
|
.primaryButtonStyle
|
|
|
|
.frame(height: 50)
|
|
|
|
|
2021-11-21 06:28:10 -08:00
|
|
|
Button(
|
|
|
|
action: { viewStore.send(.updateRoute(.send)) },
|
|
|
|
label: { Text("Go to Send") }
|
|
|
|
)
|
|
|
|
.primaryButtonStyle
|
|
|
|
.frame(height: 50)
|
|
|
|
|
2021-12-08 11:18:08 -08:00
|
|
|
Button(
|
|
|
|
action: { viewStore.send(.updateRoute(.onboarding)) },
|
|
|
|
label: { Text("Show Onboarding") }
|
|
|
|
)
|
|
|
|
.primaryButtonStyle
|
|
|
|
.frame(height: 50)
|
|
|
|
|
2021-11-10 12:09:17 -08:00
|
|
|
Spacer()
|
|
|
|
|
|
|
|
HStack {
|
|
|
|
VStack(alignment: .leading) {
|
|
|
|
Text("Route: \(String(dumping: viewStore.route))")
|
2021-11-09 03:59:03 -08:00
|
|
|
Text(
|
|
|
|
// swiftlint:disable:next line_length
|
|
|
|
"SelectedTransaction: \(String(dumping: viewStore.transactionHistoryState.route.map(/TransactionHistoryState.Route.showTransaction)))"
|
|
|
|
)
|
2021-11-10 12:09:17 -08:00
|
|
|
}
|
|
|
|
.multilineTextAlignment(.leading)
|
|
|
|
.frame(maxWidth: .infinity, alignment: .leading)
|
|
|
|
}
|
|
|
|
|
|
|
|
Spacer()
|
|
|
|
}
|
|
|
|
.padding(.horizontal, 30)
|
|
|
|
.navigationBarTitle("Home", displayMode: .inline)
|
2021-10-26 16:14:03 -07:00
|
|
|
.navigationLinkEmpty(
|
|
|
|
isActive: viewStore.showPhraseDisplayBinding,
|
|
|
|
destination: {
|
|
|
|
RecoveryPhraseDisplayView(store: .demo)
|
|
|
|
}
|
|
|
|
)
|
2021-11-21 06:28:10 -08:00
|
|
|
.navigationLinkEmpty(
|
|
|
|
isActive: viewStore.showSendBinding,
|
|
|
|
destination: {
|
2021-11-21 06:28:12 -08:00
|
|
|
SendView(
|
2021-11-21 06:28:10 -08:00
|
|
|
store: .init(
|
|
|
|
initialState: .init(
|
|
|
|
transaction: .demo,
|
|
|
|
route: nil
|
|
|
|
),
|
2021-11-21 06:28:11 -08:00
|
|
|
reducer: SendReducer.default(
|
|
|
|
whenDone: { viewStore.send(.updateRoute(nil)) }
|
|
|
|
)
|
|
|
|
.debug(),
|
2021-11-21 06:28:10 -08:00
|
|
|
environment: ()
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
)
|
2021-12-08 11:18:08 -08:00
|
|
|
.navigationLinkEmpty(
|
|
|
|
isActive: viewStore.showOnboardingBinding,
|
|
|
|
destination: {
|
|
|
|
OnboardingScreen(
|
|
|
|
store: Store(
|
|
|
|
initialState: OnboardingState(),
|
|
|
|
reducer: .default,
|
|
|
|
environment: ()
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
)
|
2021-11-10 12:20:28 -08:00
|
|
|
.fullScreenCover(
|
|
|
|
isPresented: viewStore.showHistoryBinding,
|
|
|
|
content: {
|
|
|
|
NavigationView {
|
|
|
|
TransactionHistoryView(store: store.historyStore())
|
|
|
|
.toolbar {
|
|
|
|
ToolbarItem {
|
|
|
|
Button("Done") { viewStore.send(.updateRoute(nil)) }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
)
|
2021-11-10 12:09:17 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
extension HomeStore {
|
|
|
|
static var demo: HomeStore {
|
|
|
|
HomeStore(
|
|
|
|
initialState: HomeState(
|
|
|
|
transactionHistoryState: .init(
|
|
|
|
transactions: .demo,
|
|
|
|
route: nil
|
|
|
|
),
|
|
|
|
route: nil
|
|
|
|
),
|
|
|
|
reducer: .default.debug(),
|
|
|
|
environment: ()
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
2021-10-26 16:14:03 -07:00
|
|
|
|
|
|
|
// MARK: - Previews
|
2021-11-10 12:09:17 -08:00
|
|
|
|
|
|
|
struct HomeView_Previews: PreviewProvider {
|
|
|
|
static var previews: some View {
|
|
|
|
NavigationView {
|
|
|
|
HomeView(store: .demo)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|