[#757] Modularize batch of leaf features Vol I (#760)

Following features have been modularized:
- AddressDetails
- RecoveryPhraseDisplay
- Welcome
- Profile
This commit is contained in:
Lukas Korba 2023-06-01 16:11:37 +02:00 committed by GitHub
parent 2e4c526272
commit 9b77a57a5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
38 changed files with 334 additions and 262 deletions

View File

@ -6,9 +6,10 @@ import PackageDescription
let package = Package(
name: "modules",
platforms: [
.iOS(.v15),
.iOS(.v15)
],
products: [
.library(name: "AddressDetails", targets: ["AddressDetails"]),
.library(name: "AppVersion", targets: ["AppVersion"]),
.library(name: "AudioServices", targets: ["AudioServices"]),
.library(name: "CaptureDevice", targets: ["CaptureDevice"]),
@ -26,6 +27,8 @@ let package = Package(
.library(name: "Models", targets: ["Models"]),
.library(name: "NumberFormatter", targets: ["NumberFormatter"]),
.library(name: "Pasteboard", targets: ["Pasteboard"]),
.library(name: "Profile", targets: ["Profile"]),
.library(name: "RecoveryPhraseDisplay", targets: ["RecoveryPhraseDisplay"]),
.library(name: "RecoveryPhraseValidationFlow", targets: ["RecoveryPhraseValidationFlow"]),
.library(name: "ReviewRequest", targets: ["ReviewRequest"]),
.library(name: "SDKSynchronizer", targets: ["SDKSynchronizer"]),
@ -38,15 +41,29 @@ let package = Package(
.library(name: "Utils", targets: ["Utils"]),
.library(name: "WalletConfigProvider", targets: ["WalletConfigProvider"]),
.library(name: "WalletStorage", targets: ["WalletStorage"]),
.library(name: "Welcome", targets: ["Welcome"]),
.library(name: "ZcashSDKEnvironment", targets: ["ZcashSDKEnvironment"])
],
dependencies: [
.package(url: "https://github.com/pointfreeco/swift-composable-architecture", from: "0.50.3"),
.package(url: "https://github.com/pointfreeco/swift-case-paths", from: "0.14.1"),
.package(url: "https://github.com/pointfreeco/swift-url-routing", from: "0.5.0"),
.package(url: "https://github.com/zcash/ZcashLightClientKit", revision: "ee3d082155bf542aa3580c84e6140a329633319a"),
.package(url: "https://github.com/zcash-hackworks/MnemonicSwift", from: "2.0.0")
],
targets: [
.target(
name: "AddressDetails",
dependencies: [
"Generated",
"Pasteboard",
"UIComponents",
"Utils",
.product(name: "ComposableArchitecture", package: "swift-composable-architecture"),
.product(name: "ZcashLightClientKit", package: "ZcashLightClientKit")
],
path: "Sources/Features/AddressDetails"
),
.target(
name: "AppVersion",
dependencies: [
@ -177,6 +194,32 @@ let package = Package(
],
path: "Sources/Dependencies/Pasteboard"
),
.target(
name: "Profile",
dependencies: [
"AddressDetails",
"AppVersion",
"Generated",
"SDKSynchronizer",
"UIComponents",
"Utils",
"ZcashSDKEnvironment",
.product(name: "ComposableArchitecture", package: "swift-composable-architecture"),
.product(name: "ZcashLightClientKit", package: "ZcashLightClientKit")
],
path: "Sources/Features/Profile"
),
.target(
name: "RecoveryPhraseDisplay",
dependencies: [
"Generated",
"Models",
"Pasteboard",
"UIComponents",
.product(name: "ComposableArchitecture", package: "swift-composable-architecture")
],
path: "Sources/Features/RecoveryPhraseDisplay"
),
.target(
name: "RecoveryPhraseValidationFlow",
dependencies: [
@ -255,6 +298,7 @@ let package = Package(
.target(
name: "UserPreferencesStorage",
dependencies: [
"UserDefaults",
.product(name: "ComposableArchitecture", package: "swift-composable-architecture")
],
path: "Sources/Dependencies/UserPreferencesStorage"
@ -262,7 +306,8 @@ let package = Package(
.target(
name: "Utils",
dependencies: [
.product(name: "ZcashLightClientKit", package: "ZcashLightClientKit")
.product(name: "ZcashLightClientKit", package: "ZcashLightClientKit"),
.product(name: "CasePaths", package: "swift-case-paths")
],
path: "Sources/Utils"
),
@ -287,6 +332,15 @@ let package = Package(
],
path: "Sources/Dependencies/WalletStorage"
),
.target(
name: "Welcome",
dependencies: [
"Generated",
"UIComponents",
.product(name: "ComposableArchitecture", package: "swift-composable-architecture")
],
path: "Sources/Features/Welcome"
),
.target(
name: "ZcashSDKEnvironment",
dependencies: [

View File

@ -11,17 +11,17 @@ import ZcashLightClientKit
import Pasteboard
import Generated
typealias AddressDetailsStore = Store<AddressDetailsReducer.State, AddressDetailsReducer.Action>
public typealias AddressDetailsStore = Store<AddressDetailsReducer.State, AddressDetailsReducer.Action>
struct AddressDetailsReducer: ReducerProtocol {
struct State: Equatable {
var uAddress: UnifiedAddress?
public struct AddressDetailsReducer: ReducerProtocol {
public struct State: Equatable {
public var uAddress: UnifiedAddress?
var unifiedAddress: String {
public var unifiedAddress: String {
uAddress?.stringEncoded ?? L10n.AddressDetails.Error.cantExtractUnifiedAddress
}
var transparentAddress: String {
public var transparentAddress: String {
do {
let address = try uAddress?.transparentReceiver().stringEncoded ?? L10n.AddressDetails.Error.cantExtractTransparentAddress
return address
@ -30,7 +30,7 @@ struct AddressDetailsReducer: ReducerProtocol {
}
}
var saplingAddress: String {
public var saplingAddress: String {
do {
let address = try uAddress?.saplingReceiver().stringEncoded ?? L10n.AddressDetails.Error.cantExtractSaplingAddress
return address
@ -38,9 +38,13 @@ struct AddressDetailsReducer: ReducerProtocol {
return L10n.AddressDetails.Error.cantExtractSaplingAddress
}
}
public init(uAddress: UnifiedAddress? = nil) {
self.uAddress = uAddress
}
}
enum Action: Equatable {
public enum Action: Equatable {
case copySaplingAddressToPastboard
case copyTransparentAddressToPastboard
case copyUnifiedAddressToPastboard
@ -48,7 +52,9 @@ struct AddressDetailsReducer: ReducerProtocol {
@Dependency(\.pasteboard) var pasteboard
func reduce(into state: inout State, action: Action) -> ComposableArchitecture.EffectTask<Action> {
public init() {}
public func reduce(into state: inout State, action: Action) -> ComposableArchitecture.EffectTask<Action> {
switch action {
case .copySaplingAddressToPastboard:
pasteboard.setString(state.saplingAddress.redacted)
@ -64,11 +70,11 @@ struct AddressDetailsReducer: ReducerProtocol {
// MARK: - Placeholders
extension AddressDetailsReducer.State {
static let placeholder = AddressDetailsReducer.State()
public static let placeholder = AddressDetailsReducer.State()
}
extension AddressDetailsStore {
static let placeholder = AddressDetailsStore(
public static let placeholder = AddressDetailsStore(
initialState: .placeholder,
reducer: AddressDetailsReducer()
)

View File

@ -8,11 +8,17 @@
import SwiftUI
import ComposableArchitecture
import Generated
import UIComponents
import Utils
struct AddressDetailsView: View {
public struct AddressDetailsView: View {
let store: AddressDetailsStore
var body: some View {
public init(store: AddressDetailsStore) {
self.store = store
}
public var body: some View {
WithViewStore(store) { viewStore in
ScrollView {
Text(L10n.AddressDetails.ua)
@ -54,7 +60,7 @@ struct AddressDetailsView: View {
}
extension AddressDetailsView {
func qrCode(_ qrText: String) -> some View {
public func qrCode(_ qrText: String) -> some View {
Group {
if let img = QRCodeGenerator.generate(from: qrText) {
Image(img, scale: 1, label: Text(L10n.qrCodeFor(qrText)))

View File

@ -3,28 +3,45 @@ import SwiftUI
import ZcashLightClientKit
import AppVersion
import Generated
import AddressDetails
import SDKSynchronizer
import ZcashSDKEnvironment
typealias ProfileStore = Store<ProfileReducer.State, ProfileReducer.Action>
typealias ProfileViewStore = ViewStore<ProfileReducer.State, ProfileReducer.Action>
public typealias ProfileStore = Store<ProfileReducer.State, ProfileReducer.Action>
public typealias ProfileViewStore = ViewStore<ProfileReducer.State, ProfileReducer.Action>
struct ProfileReducer: ReducerProtocol {
struct State: Equatable {
enum Destination {
public struct ProfileReducer: ReducerProtocol {
public struct State: Equatable {
public enum Destination {
case addressDetails
}
var addressDetailsState: AddressDetailsReducer.State
var appBuild = ""
var appVersion = ""
var destination: Destination?
var sdkVersion = ""
public var addressDetailsState: AddressDetailsReducer.State
public var appBuild = ""
public var appVersion = ""
public var destination: Destination?
public var sdkVersion = ""
var unifiedAddress: String {
public var unifiedAddress: String {
addressDetailsState.uAddress?.stringEncoded ?? L10n.ReceiveZec.Error.cantExtractUnifiedAddress
}
public init(
addressDetailsState: AddressDetailsReducer.State,
appBuild: String = "",
appVersion: String = "",
destination: Destination? = nil,
sdkVersion: String = ""
) {
self.addressDetailsState = addressDetailsState
self.appBuild = appBuild
self.appVersion = appVersion
self.destination = destination
self.sdkVersion = sdkVersion
}
}
enum Action: Equatable {
public enum Action: Equatable {
case addressDetails(AddressDetailsReducer.Action)
case back
case copyUnifiedAddressToPastboard
@ -38,7 +55,9 @@ struct ProfileReducer: ReducerProtocol {
@Dependency(\.sdkSynchronizer) var sdkSynchronizer
@Dependency(\.zcashSDKEnvironment) var zcashSDKEnvironment
var body: some ReducerProtocol<State, Action> {
public init() {}
public var body: some ReducerProtocol<State, Action> {
Scope(state: \.addressDetailsState, action: /Action.addressDetails) {
AddressDetailsReducer()
}
@ -78,7 +97,7 @@ struct ProfileReducer: ReducerProtocol {
// MARK: - Store
extension ProfileStore {
func addressStore() -> AddressDetailsStore {
public func addressStore() -> AddressDetailsStore {
self.scope(
state: \.addressDetailsState,
action: ProfileReducer.Action.addressDetails
@ -89,14 +108,14 @@ extension ProfileStore {
// MARK: - ViewStore
extension ProfileViewStore {
var destinationBinding: Binding<ProfileReducer.State.Destination?> {
public var destinationBinding: Binding<ProfileReducer.State.Destination?> {
self.binding(
get: \.destination,
send: ProfileReducer.Action.updateDestination
)
}
var bindingForAddressDetails: Binding<Bool> {
public var bindingForAddressDetails: Binding<Bool> {
self.destinationBinding.map(
extract: { $0 == .addressDetails },
embed: { $0 ? .addressDetails : nil }
@ -107,7 +126,7 @@ extension ProfileViewStore {
// MARK: - Placeholders
extension ProfileReducer.State {
static var placeholder: Self {
public static var placeholder: Self {
.init(
addressDetailsState: .placeholder,
destination: nil

View File

@ -1,11 +1,18 @@
import ComposableArchitecture
import SwiftUI
import Generated
import AddressDetails
import Utils
import UIComponents
struct ProfileView: View {
public struct ProfileView: View {
let store: ProfileStore
var body: some View {
public init(store: ProfileStore) {
self.store = store
}
public var body: some View {
WithViewStore(store) { viewStore in
VStack {
qrCodeUA(viewStore.unifiedAddress)
@ -47,7 +54,7 @@ struct ProfileView: View {
}
extension ProfileView {
func qrCodeUA(_ qrText: String) -> some View {
public func qrCodeUA(_ qrText: String) -> some View {
Group {
if let img = QRCodeGenerator.generate(from: qrText) {
Image(img, scale: 1, label: Text(L10n.qrCodeFor(qrText)))

View File

@ -8,16 +8,22 @@
import Foundation
import ComposableArchitecture
import Models
import Pasteboard
typealias RecoveryPhraseDisplayStore = Store<RecoveryPhraseDisplayReducer.State, RecoveryPhraseDisplayReducer.Action>
public typealias RecoveryPhraseDisplayStore = Store<RecoveryPhraseDisplayReducer.State, RecoveryPhraseDisplayReducer.Action>
struct RecoveryPhraseDisplayReducer: ReducerProtocol {
struct State: Equatable {
var phrase: RecoveryPhrase?
var showCopyToBufferAlert = false
public struct RecoveryPhraseDisplayReducer: ReducerProtocol {
public struct State: Equatable {
public var phrase: RecoveryPhrase?
public var showCopyToBufferAlert = false
public init(phrase: RecoveryPhrase? = nil, showCopyToBufferAlert: Bool = false) {
self.phrase = phrase
self.showCopyToBufferAlert = showCopyToBufferAlert
}
}
enum Action: Equatable {
public enum Action: Equatable {
case copyToBufferPressed
case finishedPressed
case phraseResponse(RecoveryPhrase)
@ -25,7 +31,9 @@ struct RecoveryPhraseDisplayReducer: ReducerProtocol {
@Dependency(\.pasteboard) var pasteboard
func reduce(into state: inout State, action: Action) -> EffectTask<Action> {
public init() {}
public func reduce(into state: inout State, action: Action) -> EffectTask<Action> {
switch action {
case .copyToBufferPressed:
guard let phrase = state.phrase?.toString() else { return .none }
@ -44,7 +52,7 @@ struct RecoveryPhraseDisplayReducer: ReducerProtocol {
}
extension RecoveryPhraseDisplayReducer {
static let demo = AnyReducer<RecoveryPhraseDisplayReducer.State, RecoveryPhraseDisplayReducer.Action, Void> { _ in
public static let demo = AnyReducer<RecoveryPhraseDisplayReducer.State, RecoveryPhraseDisplayReducer.Action, Void> { _ in
RecoveryPhraseDisplayReducer()
}
}

View File

@ -8,11 +8,16 @@
import SwiftUI
import ComposableArchitecture
import Generated
import UIComponents
struct RecoveryPhraseDisplayView: View {
public struct RecoveryPhraseDisplayView: View {
let store: RecoveryPhraseDisplayStore
var body: some View {
public init(store: RecoveryPhraseDisplayStore) {
self.store = store
}
public var body: some View {
WithViewStore(self.store) { viewStore in
VStack(alignment: .center, spacing: 0) {
if let groups = viewStore.phrase?.toGroups(groupSizeOverride: 2) {
@ -80,7 +85,7 @@ struct RecoveryPhraseDisplayView: View {
}
// TODO: [#695] This should have a #DEBUG tag, but if so, it's not possible to compile this on release mode and submit it to testflight https://github.com/zcash/ZcashLightClientKit/issues/695
extension RecoveryPhraseDisplayStore {
static var demo: RecoveryPhraseDisplayStore {
public static var demo: RecoveryPhraseDisplayStore {
RecoveryPhraseDisplayStore(
initialState: .init(phrase: .placeholder),
reducer: RecoveryPhraseDisplayReducer.demo,

View File

@ -0,0 +1,40 @@
//
// Welcome.swift
// secant-testnet
//
// Created by Lukáš Korba on 04.04.2022.
//
import Foundation
import ComposableArchitecture
public typealias WelcomeStore = Store<WelcomeReducer.State, WelcomeReducer.Action>
public struct WelcomeReducer: ReducerProtocol {
public struct State: Equatable {}
public enum Action: Equatable {
case debugMenuStartup
}
public init() {}
public func reduce(into state: inout State, action: Action) -> ComposableArchitecture.EffectTask<Action> {
return .none
}
}
// MARK: - Store
extension WelcomeStore {
public static var demo = WelcomeStore(
initialState: .placeholder,
reducer: WelcomeReducer()
)
}
// MARK: - Placeholders
extension WelcomeReducer.State {
public static let placeholder = WelcomeReducer.State()
}

View File

@ -8,11 +8,16 @@
import SwiftUI
import ComposableArchitecture
import Generated
import UIComponents
struct WelcomeView: View {
public struct WelcomeView: View {
var store: WelcomeStore
var body: some View {
public init(store: WelcomeStore) {
self.store = store
}
public var body: some View {
VStack(alignment: .center, spacing: 80) {
VStack {
Image(Asset.Assets.welcomeScreenLogo.name)

View File

@ -10,18 +10,18 @@ import SwiftUI
// TODO: [#273] Make sure this code will never be in the production (app store) build (https://github.com/zcash/secant-ios-wallet/issues/273)
// swiftlint:disable:next private_over_fileprivate strict_fileprivate
fileprivate struct DebugMenuModifier: ViewModifier {
enum DragState {
public struct DebugMenuModifier: ViewModifier {
public enum DragState {
case inactive
case pressing
case dragging(translation: CGSize)
}
@GestureState var dragState = DragState.inactive
var minimumDuration: Double
let action: () -> Void
public var minimumDuration: Double
public let action: () -> Void
func body(content: Content) -> some View {
public func body(content: Content) -> some View {
let longPressDrag = LongPressGesture(minimumDuration: minimumDuration)
.sequenced(before: DragGesture())
.updating($dragState) { value, state, _ in
@ -50,7 +50,7 @@ fileprivate struct DebugMenuModifier: ViewModifier {
}
extension View {
func accessDebugMenuWithHiddenGesture(minimumDuration: Double = 0.75, action: @escaping () -> Void ) -> some View {
public func accessDebugMenuWithHiddenGesture(minimumDuration: Double = 0.75, action: @escaping () -> Void ) -> some View {
self.modifier(
DebugMenuModifier(minimumDuration: minimumDuration) {
action()

View File

@ -13,7 +13,7 @@ extension View {
/// - condition: The condition to evaluate.
/// - transform: The transform to apply to the source `View`.
/// - Returns: Either the original `View` or the modified `View` if the condition is `true`.
@ViewBuilder func `if`<Content: View>(_ condition: @autoclosure () -> Bool, transform: (Self) -> Content) -> some View {
@ViewBuilder public func `if`<Content: View>(_ condition: @autoclosure () -> Bool, transform: (Self) -> Content) -> some View {
if condition() {
transform(self)
} else {

View File

@ -7,12 +7,12 @@
import SwiftUI
struct Wedge: Shape {
public struct Wedge: Shape {
var startAngle: CGFloat
var endAngle: CGFloat
var clockwise = true
var animatableData: AnimatablePair<CGFloat, CGFloat> {
public var animatableData: AnimatablePair<CGFloat, CGFloat> {
get { AnimatablePair(startAngle, endAngle) }
set {
startAngle = newValue.first
@ -20,7 +20,7 @@ struct Wedge: Shape {
}
}
func path(in rect: CGRect) -> Path {
public func path(in rect: CGRect) -> Path {
let callback: (inout Path) -> Void = { path in
path.addArc(
center: CGPoint(

View File

@ -20,9 +20,10 @@ import SwiftUI
|__ __|
|_|
*/
struct ZcashSymbol: Shape {
static let ratio: CGFloat = 0.56
func path(in rect: CGRect) -> Path {
public struct ZcashSymbol: Shape {
public static let ratio: CGFloat = 0.56
public func path(in rect: CGRect) -> Path {
Path { path in
let width = rect.height * Self.ratio
let origin = CGPoint(x: rect.midX - width / 2, y: rect.origin.y)

View File

@ -8,10 +8,12 @@
import SwiftUI
import Generated
struct ZcashBadge: View {
public struct ZcashBadge: View {
@Environment(\.colorScheme) var colorScheme
var body: some View {
public init() {}
public var body: some View {
ZStack {
GeometryReader { proxy in
let outterPadding = proxy.size.height * 0.015

View File

@ -3,7 +3,7 @@ import CasePaths
/// taken largely from: https://github.com/pointfreeco/episode-code-samples/blob/main/0167-navigation-pt8/SwiftUINavigation/SwiftUINavigation/SwiftUIHelpers.swift
extension Binding {
func isPresent<Wrapped>() -> Binding<Bool>
public func isPresent<Wrapped>() -> Binding<Bool>
where Value == Wrapped? {
.init(
get: { self.wrappedValue != nil },
@ -15,7 +15,7 @@ extension Binding {
)
}
func isPresent<Enum, Case>(_ casePath: CasePath<Enum, Case>) -> Binding<Bool>
public func isPresent<Enum, Case>(_ casePath: CasePath<Enum, Case>) -> Binding<Bool>
where Value == Enum? {
Binding<Bool>(
get: {
@ -33,7 +33,7 @@ extension Binding {
)
}
func `case`<Enum, Case>(_ casePath: CasePath<Enum, Case>) -> Binding<Case?>
public func `case`<Enum, Case>(_ casePath: CasePath<Enum, Case>) -> Binding<Case?>
where Value == Enum? {
Binding<Case?>(
get: {
@ -54,7 +54,7 @@ extension Binding {
)
}
func didSet(_ callback: @escaping (Value) -> Void) -> Self {
public func didSet(_ callback: @escaping (Value) -> Void) -> Self {
.init(
get: { self.wrappedValue },
set: {
@ -64,7 +64,7 @@ extension Binding {
)
}
init?(unwrap binding: Binding<Value?>) {
public init?(unwrap binding: Binding<Value?>) {
guard let wrappedValue = binding.wrappedValue
else { return nil }
@ -74,14 +74,14 @@ extension Binding {
)
}
func map<T>(extract: @escaping (Value) -> T, embed: @escaping (T) -> Value) -> Binding<T> {
public func map<T>(extract: @escaping (Value) -> T, embed: @escaping (T) -> Value) -> Binding<T> {
Binding<T>(
get: { extract(wrappedValue) },
set: { wrappedValue = embed($0) }
)
}
func compactMap<T>(extract: @escaping (Value) -> T, embed: @escaping (T) -> Value?) -> Binding<T> {
public func compactMap<T>(extract: @escaping (Value) -> T, embed: @escaping (T) -> Value?) -> Binding<T> {
Binding<T>(
get: { extract(wrappedValue) },
set: {

View File

@ -10,12 +10,12 @@ import Combine
import CoreImage.CIFilterBuiltins
import SwiftUI
enum QRCodeGenerator {
enum QRCodeError: Error {
public enum QRCodeGenerator {
public enum QRCodeError: Error {
case failedToGenerate
}
static func generate(from string: String) -> Future<CGImage, QRCodeError> {
public static func generate(from string: String) -> Future<CGImage, QRCodeError> {
Future<CGImage, QRCodeError> { promise in
DispatchQueue.global().async {
guard let image = generate(from: string) else {
@ -28,7 +28,7 @@ enum QRCodeGenerator {
}
}
static func generate(from string: String, scale: CGFloat = 5) -> CGImage? {
public static func generate(from string: String, scale: CGFloat = 5) -> CGImage? {
let data = string.data(using: String.Encoding.utf8)
let context = CIContext()

View File

@ -7,13 +7,10 @@
objects = {
/* Begin PBXBuildFile section */
0D0781C4278750E30083ACD7 /* WelcomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D0781C3278750E30083ACD7 /* WelcomeView.swift */; };
0D0781C9278776D20083ACD7 /* ZcashSymbol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D0781C7278776D20083ACD7 /* ZcashSymbol.swift */; };
0D26103C298C3E4800CC9DE9 /* CrashReporterInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D26103B298C3E4800CC9DE9 /* CrashReporterInterface.swift */; };
0D26103E298C3FA600CC9DE9 /* CrashReporterLiveKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D26103D298C3FA600CC9DE9 /* CrashReporterLiveKey.swift */; };
0D261040298C406F00CC9DE9 /* CrashReporterTestKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D26103F298C406F00CC9DE9 /* CrashReporterTestKey.swift */; };
0D26AE9B299E8196005260EE /* OnboardingFlowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E5C03802738C570008BFFD3 /* OnboardingFlowView.swift */; };
0D26AE9C299E8196005260EE /* ZcashBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7FE0DE282D2DD600C374E8 /* ZcashBadge.swift */; };
0D26AE9D299E8196005260EE /* CrashReporterTestKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D26103F298C406F00CC9DE9 /* CrashReporterTestKey.swift */; };
0D26AEA0299E8196005260EE /* SandboxStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAFEB8E2808183D00199FC9 /* SandboxStore.swift */; };
0D26AEA5299E8196005260EE /* TransactionSendingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34DA414628E4385800F8CC61 /* TransactionSendingView.swift */; };
@ -22,9 +19,7 @@
0D26AEAC299E8196005260EE /* TCATextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EDA079F27EDE18C00D6F09B /* TCATextField.swift */; };
0D26AEAF299E8196005260EE /* TransactionAmountTextFieldStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EB7758627FC67FD00269373 /* TransactionAmountTextFieldStore.swift */; };
0D26AEB1299E8196005260EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EF8135F27F043CC0075AF48 /* AppDelegate.swift */; };
0D26AEB4299E8196005260EE /* Wedge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34E0AF1028DEE5220034CF37 /* Wedge.swift */; };
0D26AEB5299E8196005260EE /* TransactionDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F96B41E5273B501F0021B49A /* TransactionDetailView.swift */; };
0D26AEBA299E8196005260EE /* AddressDetailsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7CB61F2874143800A02233 /* AddressDetailsStore.swift */; };
0D26AEBC299E8196005260EE /* TCATextFieldStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EB1C5E727D77F6100BC43D7 /* TCATextFieldStore.swift */; };
0D26AEBF299E8196005260EE /* TransactionFailedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5BF640281FD7B600BA3F17 /* TransactionFailedView.swift */; };
0D26AEC2299E8196005260EE /* TransactionRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAB46792861EA6A002904A0 /* TransactionRowView.swift */; };
@ -33,10 +28,8 @@
0D26AEC7299E8196005260EE /* RootInitialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E9ADA7C2938F4C00071767B /* RootInitialization.swift */; };
0D26AECC299E8196005260EE /* OnboardingFlowStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6654C73D2715A41300901167 /* OnboardingFlowStore.swift */; };
0D26AECF299E8196005260EE /* CurrencySelectionStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E6CF8DC27D78319004DCD7A /* CurrencySelectionStore.swift */; };
0D26AED2299E8196005260EE /* BalanceBreakdownStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6713F6289BC58C00A6796F /* BalanceBreakdownStore.swift */; };
0D26AED3299E8196005260EE /* SyncStatusSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E66122B2877188700C75B70 /* SyncStatusSnapshot.swift */; };
0D26AEDA299E8196005260EE /* ImportSeedEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E2DF99A27CF704D00649636 /* ImportSeedEditor.swift */; };
0D26AEDB299E8196005260EE /* ProfileStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A5027680DD000A2DB75 /* ProfileStore.swift */; };
0D26AEDC299E8196005260EE /* CheckCircle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 346D41E328DF0B8600963F36 /* CheckCircle.swift */; };
0D26AEE4299E8196005260EE /* CurrencySelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E8719CC27FB0D3B0082C926 /* CurrencySelectionView.swift */; };
0D26AEE7299E8196005260EE /* TransactionAddressTextFieldStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5BF64E2823E94900BA3F17 /* TransactionAddressTextFieldStore.swift */; };
@ -44,7 +37,6 @@
0D26AEEB299E8196005260EE /* Previews.swift in Sources */ = {isa = PBXBuildFile; fileRef = F93673D52742CB840099C6AF /* Previews.swift */; };
0D26AEEE299E8196005260EE /* QRCodeScanView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7FE0F82832824C00C374E8 /* QRCodeScanView.swift */; };
0D26AEF0299E8196005260EE /* TCALoggerReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E0F5742297EB96C005304FA /* TCALoggerReducer.swift */; };
0D26AEF1299E8196005260EE /* ConditionalModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DF482B92787ADA800EB37D6 /* ConditionalModifier.swift */; };
0D26AEF2299E8196005260EE /* MultipleLineTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7225F2288AB6DD00DF7F17 /* MultipleLineTextField.swift */; };
0D26AEF3299E8196005260EE /* NotEnoughFreeSpaceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3448CB3128E47666006ADEDB /* NotEnoughFreeSpaceView.swift */; };
0D26AEF7299E8196005260EE /* Drawer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E2F1C8E280EDE09004E65FE /* Drawer.swift */; };
@ -52,21 +44,17 @@
0D26AEFC299E8196005260EE /* RootStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A4A27680DC400A2DB75 /* RootStore.swift */; };
0D26AEFD299E8196005260EE /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F93874EF273C4DE200F0E875 /* HomeView.swift */; };
0D26AEFF299E8196005260EE /* SandboxView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAFEB8D2808183D00199FC9 /* SandboxView.swift */; };
0D26AF01299E8196005260EE /* RecoveryPhraseDisplayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D3D04072728B3440032ABC1 /* RecoveryPhraseDisplayView.swift */; };
0D26AF05299E8196005260EE /* ScanView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A5D27680DF600A2DB75 /* ScanView.swift */; };
0D26AF07299E8196005260EE /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A4C27680DC400A2DB75 /* RootView.swift */; };
0D26AF0A299E8196005260EE /* OnboardingFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EA11F5A27467EF800709571 /* OnboardingFooterView.swift */; };
0D26AF0E299E8196005260EE /* MultiLineTextFieldStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7225F5288AC71A00DF7F17 /* MultiLineTextFieldStore.swift */; };
0D26AF0F299E8196005260EE /* DebugFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EDA07A327EDE2A900D6F09B /* DebugFrame.swift */; };
0D26AF11299E8196005260EE /* LottieAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6612322878338C00C75B70 /* LottieAnimation.swift */; };
0D26AF13299E8196005260EE /* RecoveryPhraseDisplayStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D3D04092728B3A10032ABC1 /* RecoveryPhraseDisplayStore.swift */; };
0D26AF18299E8196005260EE /* WalletEventsFlowStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F96B41E3273B501F0021B49A /* WalletEventsFlowStore.swift */; };
0D26AF1B299E8196005260EE /* HomeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F93874ED273C4DE200F0E875 /* HomeStore.swift */; };
0D26AF1E299E8196005260EE /* QRCodeGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7CB619287310EC00A02233 /* QRCodeGenerator.swift */; };
0D26AF20299E8196005260EE /* UInt+SuperscriptText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DACFA8027208D940039EEA5 /* UInt+SuperscriptText.swift */; };
0D26AF23299E8196005260EE /* SendFlowStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9C165B72740403600592F76 /* SendFlowStore.swift */; };
0D26AF24299E8196005260EE /* SecantApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D4E7A0826B364170058B01E /* SecantApp.swift */; };
0D26AF2D299E8196005260EE /* DebugMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E2F1C832809B606004E65FE /* DebugMenu.swift */; };
0D26AF37299E8196005260EE /* ScanUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7FE0F528327F6F00C374E8 /* ScanUIView.swift */; };
0D26AF3A299E8196005260EE /* OnboardingContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EA11F5C27467F7700709571 /* OnboardingContentView.swift */; };
0D26AF3B299E8196005260EE /* CircularProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7CB6142869E8C300A02233 /* CircularProgress.swift */; };
@ -78,23 +66,16 @@
0D26AF44299E8196005260EE /* Memo+toString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BF09082927C98000222134 /* Memo+toString.swift */; };
0D26AF46299E8196005260EE /* CheckCircleStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 346715A428E2027D0035F7C4 /* CheckCircleStore.swift */; };
0D26AF47299E8196005260EE /* CreateTransactionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9C165BB2740403600592F76 /* CreateTransactionView.swift */; };
0D26AF4A299E8196005260EE /* Bindings.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9C165B3274031F600592F76 /* Bindings.swift */; };
0D26AF4B299E8196005260EE /* TextFieldTitleAccessoryButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E35F99927B3E99C00EB79CD /* TextFieldTitleAccessoryButtonStyle.swift */; };
0D26AF4D299E8196005260EE /* ImportWalletStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E2DF99827CF704D00649636 /* ImportWalletStore.swift */; };
0D26AF4E299E8196005260EE /* BalanceBreakdownView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6713F5289BC58C00A6796F /* BalanceBreakdownView.swift */; };
0D26AF4F299E8196005260EE /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A6427680DFE00A2DB75 /* SettingsView.swift */; };
0D26AF53299E8196005260EE /* TextFieldFooter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EDA07A127EDE1AE00D6F09B /* TextFieldFooter.swift */; };
0D26AF54299E8196005260EE /* CrashReporterInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D26103B298C3E4800CC9DE9 /* CrashReporterInterface.swift */; };
0D26AF55299E8196005260EE /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A5227680DD000A2DB75 /* ProfileView.swift */; };
0D26AF56299E8196005260EE /* ScanStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A5E27680DF600A2DB75 /* ScanStore.swift */; };
0D26AF5C299E8196005260EE /* WelcomeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E69A24C27FB002800A55317 /* WelcomeStore.swift */; };
0D26AF5F299E8196005260EE /* SendFlowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9C165CA2741AB5D00592F76 /* SendFlowView.swift */; };
0D26AF62299E8196005260EE /* WelcomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D0781C3278750E30083ACD7 /* WelcomeView.swift */; };
0D26AF64299E8196005260EE /* SettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A6227680DFE00A2DB75 /* SettingsStore.swift */; };
0D26AF65299E8196005260EE /* InitializationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EF8139B27F47AED0075AF48 /* InitializationState.swift */; };
0D26AF66299E8196005260EE /* ZcashSymbol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D0781C7278776D20083ACD7 /* ZcashSymbol.swift */; };
0D26AF68299E8196005260EE /* TransactionAmountTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E8719CA27FB09990082C926 /* TransactionAmountTextField.swift */; };
0D26AF69299E8196005260EE /* AddressDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7CB61E2874143800A02233 /* AddressDetailsView.swift */; };
0D26AF6A299E8196005260EE /* ClearBackgroundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6713F9289BE0E100A6796F /* ClearBackgroundView.swift */; };
0D26AF6C299E8196005260EE /* TransactionSentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9C165BD2740403600592F76 /* TransactionSentView.swift */; };
0D26AF71299E8196005260EE /* Lottie in Frameworks */ = {isa = PBXBuildFile; productRef = 0D26AE8F299E8196005260EE /* Lottie */; };
@ -114,15 +95,12 @@
0D3016B829BFB2FB002371B3 /* PlainOnboardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D3016B729BFB2FB002371B3 /* PlainOnboardingView.swift */; };
0D3016B929BFB2FB002371B3 /* PlainOnboardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D3016B729BFB2FB002371B3 /* PlainOnboardingView.swift */; };
0D3B01EC298DAF89007EBCDA /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 0D3B01EB298DAF89007EBCDA /* GoogleService-Info.plist */; };
0D3D04082728B3440032ABC1 /* RecoveryPhraseDisplayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D3D04072728B3440032ABC1 /* RecoveryPhraseDisplayView.swift */; };
0D3D040A2728B3A10032ABC1 /* RecoveryPhraseDisplayStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D3D04092728B3A10032ABC1 /* RecoveryPhraseDisplayStore.swift */; };
0D4E7A0926B364170058B01E /* SecantApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D4E7A0826B364170058B01E /* SecantApp.swift */; };
0D4E7A1026B364180058B01E /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0D4E7A0F26B364180058B01E /* Preview Assets.xcassets */; };
0D573CB629C106E900B97379 /* About.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E4AA4F729BF76BB00752BB3 /* About.swift */; };
0D5D9B8F2914620700DBD03F /* URLRouting in Frameworks */ = {isa = PBXBuildFile; productRef = 0D5D9B8E2914620700DBD03F /* URLRouting */; };
0DACFA8127208D940039EEA5 /* UInt+SuperscriptText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DACFA8027208D940039EEA5 /* UInt+SuperscriptText.swift */; };
0DB8AA81271DC7520035BC9D /* DesignGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DB8AA80271DC7520035BC9D /* DesignGuide.swift */; };
0DF482BA2787ADA800EB37D6 /* ConditionalModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DF482B92787ADA800EB37D6 /* ConditionalModifier.swift */; };
2E35F99227B28E7600EB79CD /* SingleLineTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E35F99127B28E7600EB79CD /* SingleLineTextField.swift */; };
2E35F99A27B3E99C00EB79CD /* TextFieldTitleAccessoryButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E35F99927B3E99C00EB79CD /* TextFieldTitleAccessoryButtonStyle.swift */; };
2E58E73B274679F000B2B84B /* OnboardingHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E58E73A274679F000B2B84B /* OnboardingHeaderView.swift */; };
@ -150,7 +128,6 @@
34CE032B29C0938600A6626B /* ZcashLightClientKit in Frameworks */ = {isa = PBXBuildFile; productRef = 34CE032A29C0938600A6626B /* ZcashLightClientKit */; };
34DA414728E4385800F8CC61 /* TransactionSendingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34DA414628E4385800F8CC61 /* TransactionSendingView.swift */; };
34DA414928E439CD00F8CC61 /* sendingTransaction.json in Resources */ = {isa = PBXBuildFile; fileRef = 34DA414828E439CD00F8CC61 /* sendingTransaction.json */; };
34E0AF1128DEE5220034CF37 /* Wedge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34E0AF1028DEE5220034CF37 /* Wedge.swift */; };
6654C73A2715A38000901167 /* ComposableArchitecture in Frameworks */ = {isa = PBXBuildFile; productRef = 6654C7392715A38000901167 /* ComposableArchitecture */; };
6654C73E2715A41300901167 /* OnboardingFlowStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6654C73D2715A41300901167 /* OnboardingFlowStore.swift */; };
66A0807B271993C500118B79 /* OnboardingProgressIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66A0807A271993C500118B79 /* OnboardingProgressIndicator.swift */; };
@ -197,6 +174,14 @@
9E0031B42A27723E003DFCEB /* WalletStorage in Frameworks */ = {isa = PBXBuildFile; productRef = 9E0031B32A27723E003DFCEB /* WalletStorage */; };
9E0031B62A27724D003DFCEB /* WalletConfigProvider in Frameworks */ = {isa = PBXBuildFile; productRef = 9E0031B52A27724D003DFCEB /* WalletConfigProvider */; };
9E0031B82A27724D003DFCEB /* WalletStorage in Frameworks */ = {isa = PBXBuildFile; productRef = 9E0031B72A27724D003DFCEB /* WalletStorage */; };
9E0031BA2A2878EE003DFCEB /* AddressDetails in Frameworks */ = {isa = PBXBuildFile; productRef = 9E0031B92A2878EE003DFCEB /* AddressDetails */; };
9E0031BC2A2878F3003DFCEB /* AddressDetails in Frameworks */ = {isa = PBXBuildFile; productRef = 9E0031BB2A2878F3003DFCEB /* AddressDetails */; };
9E0031C02A28B221003DFCEB /* BalanceBreakdownStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E0031BE2A28B221003DFCEB /* BalanceBreakdownStore.swift */; };
9E0031C12A28B221003DFCEB /* BalanceBreakdownView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E0031BF2A28B221003DFCEB /* BalanceBreakdownView.swift */; };
9E0031C32A28BB92003DFCEB /* RecoveryPhraseDisplay in Frameworks */ = {isa = PBXBuildFile; productRef = 9E0031C22A28BB92003DFCEB /* RecoveryPhraseDisplay */; };
9E0031C52A28BB97003DFCEB /* RecoveryPhraseDisplay in Frameworks */ = {isa = PBXBuildFile; productRef = 9E0031C42A28BB97003DFCEB /* RecoveryPhraseDisplay */; };
9E0031C62A28BD54003DFCEB /* BalanceBreakdownStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E0031BE2A28B221003DFCEB /* BalanceBreakdownStore.swift */; };
9E0031C72A28BD54003DFCEB /* BalanceBreakdownView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E0031BF2A28B221003DFCEB /* BalanceBreakdownView.swift */; };
9E0310B52A24A4CA0021F995 /* FileManager in Frameworks */ = {isa = PBXBuildFile; productRef = 9E0310B42A24A4CA0021F995 /* FileManager */; };
9E0310C52A24A4E60021F995 /* FileManager in Frameworks */ = {isa = PBXBuildFile; productRef = 9E0310C42A24A4E60021F995 /* FileManager */; };
9E0F5741297E7F1D005304FA /* TCALogging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E0F5740297E7F1C005304FA /* TCALogging.swift */; };
@ -205,7 +190,6 @@
9E2DF99C27CF704D00649636 /* ImportWalletStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E2DF99827CF704D00649636 /* ImportWalletStore.swift */; };
9E2DF99D27CF704D00649636 /* ImportSeedEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E2DF99A27CF704D00649636 /* ImportSeedEditor.swift */; };
9E2DF99E27CF704D00649636 /* ImportWalletView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E2DF99B27CF704D00649636 /* ImportWalletView.swift */; };
9E2F1C842809B606004E65FE /* DebugMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E2F1C832809B606004E65FE /* DebugMenu.swift */; };
9E2F1C8C280ED6A7004E65FE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9E2F1C8B280ED6A7004E65FE /* LaunchScreen.storyboard */; };
9E2F1C8F280EDE09004E65FE /* Drawer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E2F1C8E280EDE09004E65FE /* Drawer.swift */; };
9E33ECD429D5D99000708DE4 /* AlertRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E33ECD029D4CCB600708DE4 /* AlertRequest.swift */; };
@ -273,6 +257,10 @@
9E486DF929BA09C2003E6945 /* UIKit+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E486DF829BA09C2003E6945 /* UIKit+Extensions.swift */; };
9E486DFA29BA09C2003E6945 /* UIKit+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E486DF829BA09C2003E6945 /* UIKit+Extensions.swift */; };
9E4AA4F829BF76BB00752BB3 /* About.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E4AA4F729BF76BB00752BB3 /* About.swift */; };
9E5452682A28D5500098B887 /* Welcome in Frameworks */ = {isa = PBXBuildFile; productRef = 9E5452672A28D5500098B887 /* Welcome */; };
9E54526A2A28D5570098B887 /* Welcome in Frameworks */ = {isa = PBXBuildFile; productRef = 9E5452692A28D5570098B887 /* Welcome */; };
9E54526C2A28DA4B0098B887 /* Profile in Frameworks */ = {isa = PBXBuildFile; productRef = 9E54526B2A28DA4B0098B887 /* Profile */; };
9E54526E2A28DA510098B887 /* Profile in Frameworks */ = {isa = PBXBuildFile; productRef = 9E54526D2A28DA510098B887 /* Profile */; };
9E5BF641281FD7B600BA3F17 /* TransactionFailedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5BF640281FD7B600BA3F17 /* TransactionFailedView.swift */; };
9E5BF64F2823E94900BA3F17 /* TransactionAddressTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5BF64D2823E94900BA3F17 /* TransactionAddressTextField.swift */; };
9E5BF6502823E94900BA3F17 /* TransactionAddressTextFieldStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5BF64E2823E94900BA3F17 /* TransactionAddressTextFieldStore.swift */; };
@ -280,18 +268,11 @@
9E6612312878337F00C75B70 /* Lottie in Frameworks */ = {isa = PBXBuildFile; productRef = 9E6612302878337F00C75B70 /* Lottie */; };
9E6612332878338C00C75B70 /* LottieAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6612322878338C00C75B70 /* LottieAnimation.swift */; };
9E6612362878345000C75B70 /* endlessCircleProgress.json in Resources */ = {isa = PBXBuildFile; fileRef = 9E6612352878345000C75B70 /* endlessCircleProgress.json */; };
9E6713F7289BC58C00A6796F /* BalanceBreakdownStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6713F6289BC58C00A6796F /* BalanceBreakdownStore.swift */; };
9E6713F8289BC58C00A6796F /* BalanceBreakdownView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6713F5289BC58C00A6796F /* BalanceBreakdownView.swift */; };
9E6713FA289BE0E100A6796F /* ClearBackgroundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6713F9289BE0E100A6796F /* ClearBackgroundView.swift */; };
9E69A24D27FB002800A55317 /* WelcomeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E69A24C27FB002800A55317 /* WelcomeStore.swift */; };
9E7225F3288AB6DD00DF7F17 /* MultipleLineTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7225F2288AB6DD00DF7F17 /* MultipleLineTextField.swift */; };
9E7225F6288AC71A00DF7F17 /* MultiLineTextFieldStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7225F5288AC71A00DF7F17 /* MultiLineTextFieldStore.swift */; };
9E74CCD029DC0628003D6E32 /* ReviewRequestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E74CCCF29DC0628003D6E32 /* ReviewRequestTests.swift */; };
9E7CB6152869E8C300A02233 /* CircularProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7CB6142869E8C300A02233 /* CircularProgress.swift */; };
9E7CB61A287310EC00A02233 /* QRCodeGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7CB619287310EC00A02233 /* QRCodeGenerator.swift */; };
9E7CB6202874143800A02233 /* AddressDetailsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7CB61F2874143800A02233 /* AddressDetailsStore.swift */; };
9E7CB6212874143800A02233 /* AddressDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7CB61E2874143800A02233 /* AddressDetailsView.swift */; };
9E7FE0DF282D2DD600C374E8 /* ZcashBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7FE0DE282D2DD600C374E8 /* ZcashBadge.swift */; };
9E7FE0F628327F6F00C374E8 /* ScanUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7FE0F528327F6F00C374E8 /* ScanUIView.swift */; };
9E7FE0F92832824C00C374E8 /* QRCodeScanView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7FE0F82832824C00C374E8 /* QRCodeScanView.swift */; };
9E80C44C2A25E8EC0049E6A7 /* MnemonicClient in Frameworks */ = {isa = PBXBuildFile; productRef = 9E80C44B2A25E8EC0049E6A7 /* MnemonicClient */; };
@ -327,13 +308,10 @@
F96B41E9273B501F0021B49A /* WalletEventsFlowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F96B41E6273B501F0021B49A /* WalletEventsFlowView.swift */; };
F9971A4D27680DC400A2DB75 /* RootStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A4A27680DC400A2DB75 /* RootStore.swift */; };
F9971A4E27680DC400A2DB75 /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A4C27680DC400A2DB75 /* RootView.swift */; };
F9971A5327680DD000A2DB75 /* ProfileStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A5027680DD000A2DB75 /* ProfileStore.swift */; };
F9971A5427680DD000A2DB75 /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A5227680DD000A2DB75 /* ProfileView.swift */; };
F9971A5F27680DF600A2DB75 /* ScanView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A5D27680DF600A2DB75 /* ScanView.swift */; };
F9971A6027680DF600A2DB75 /* ScanStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A5E27680DF600A2DB75 /* ScanStore.swift */; };
F9971A6527680DFE00A2DB75 /* SettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A6227680DFE00A2DB75 /* SettingsStore.swift */; };
F9971A6627680DFE00A2DB75 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A6427680DFE00A2DB75 /* SettingsView.swift */; };
F9C165B4274031F600592F76 /* Bindings.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9C165B3274031F600592F76 /* Bindings.swift */; };
F9C165BF2740403600592F76 /* SendFlowStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9C165B72740403600592F76 /* SendFlowStore.swift */; };
F9C165C22740403600592F76 /* CreateTransactionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9C165BB2740403600592F76 /* CreateTransactionView.swift */; };
F9C165C42740403600592F76 /* TransactionSentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9C165BD2740403600592F76 /* TransactionSentView.swift */; };
@ -359,8 +337,6 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
0D0781C3278750E30083ACD7 /* WelcomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeView.swift; sourceTree = "<group>"; };
0D0781C7278776D20083ACD7 /* ZcashSymbol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZcashSymbol.swift; sourceTree = "<group>"; };
0D1C1AA227611EFD0004AF6A /* RecoveryPhraseDisplayReducerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecoveryPhraseDisplayReducerTests.swift; sourceTree = "<group>"; };
0D26103B298C3E4800CC9DE9 /* CrashReporterInterface.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrashReporterInterface.swift; sourceTree = "<group>"; };
0D26103D298C3FA600CC9DE9 /* CrashReporterLiveKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrashReporterLiveKey.swift; sourceTree = "<group>"; };
@ -369,8 +345,6 @@
0D3016B429BF94D1002371B3 /* Button+Disabling.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Button+Disabling.swift"; sourceTree = "<group>"; };
0D3016B729BFB2FB002371B3 /* PlainOnboardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlainOnboardingView.swift; sourceTree = "<group>"; };
0D3B01EB298DAF89007EBCDA /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
0D3D04072728B3440032ABC1 /* RecoveryPhraseDisplayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecoveryPhraseDisplayView.swift; sourceTree = "<group>"; };
0D3D04092728B3A10032ABC1 /* RecoveryPhraseDisplayStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecoveryPhraseDisplayStore.swift; sourceTree = "<group>"; };
0D4E7A0526B364170058B01E /* secant-testnet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "secant-testnet.app"; sourceTree = BUILT_PRODUCTS_DIR; };
0D4E7A0826B364170058B01E /* SecantApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecantApp.swift; sourceTree = "<group>"; };
0D4E7A0F26B364180058B01E /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
@ -385,7 +359,6 @@
0DB4E0B02881F2DB00947B78 /* WalletBalance+testing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WalletBalance+testing.swift"; sourceTree = "<group>"; };
0DB8AA80271DC7520035BC9D /* DesignGuide.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DesignGuide.swift; sourceTree = "<group>"; };
0DEF4766299EA5920032708B /* secant-mainnet-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "secant-mainnet-Info.plist"; sourceTree = "<group>"; };
0DF482B92787ADA800EB37D6 /* ConditionalModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConditionalModifier.swift; sourceTree = "<group>"; };
0DFE93DE272C6D4B000FCCA5 /* RecoveryPhraseBackupTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecoveryPhraseBackupTests.swift; sourceTree = "<group>"; };
0DFE93E5272CB6F7000FCCA5 /* RecoveryPhraseValidationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecoveryPhraseValidationTests.swift; sourceTree = "<group>"; };
2E35F99127B28E7600EB79CD /* SingleLineTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleLineTextField.swift; sourceTree = "<group>"; };
@ -415,11 +388,12 @@
34C5658429B60C8B002F3A7C /* ExportLogsStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportLogsStore.swift; sourceTree = "<group>"; };
34DA414628E4385800F8CC61 /* TransactionSendingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionSendingView.swift; sourceTree = "<group>"; };
34DA414828E439CD00F8CC61 /* sendingTransaction.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = sendingTransaction.json; sourceTree = "<group>"; };
34E0AF1028DEE5220034CF37 /* Wedge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Wedge.swift; sourceTree = "<group>"; };
34F039B229ABCE8500CF0053 /* WalletConfigProviderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WalletConfigProviderTests.swift; sourceTree = "<group>"; };
6654C73D2715A41300901167 /* OnboardingFlowStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingFlowStore.swift; sourceTree = "<group>"; };
6654C7432715A4AC00901167 /* OnboardingStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingStoreTests.swift; sourceTree = "<group>"; };
66A0807A271993C500118B79 /* OnboardingProgressIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingProgressIndicator.swift; sourceTree = "<group>"; };
9E0031BE2A28B221003DFCEB /* BalanceBreakdownStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BalanceBreakdownStore.swift; sourceTree = "<group>"; };
9E0031BF2A28B221003DFCEB /* BalanceBreakdownView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BalanceBreakdownView.swift; sourceTree = "<group>"; };
9E01F8272833CDA0000EFC57 /* ScanTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScanTests.swift; sourceTree = "<group>"; };
9E02B56B27FED475005B809B /* DatabaseFilesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatabaseFilesTests.swift; sourceTree = "<group>"; };
9E0F5740297E7F1C005304FA /* TCALogging.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TCALogging.swift; sourceTree = "<group>"; };
@ -430,7 +404,6 @@
9E2DF99827CF704D00649636 /* ImportWalletStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportWalletStore.swift; sourceTree = "<group>"; };
9E2DF99A27CF704D00649636 /* ImportSeedEditor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportSeedEditor.swift; sourceTree = "<group>"; };
9E2DF99B27CF704D00649636 /* ImportWalletView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportWalletView.swift; sourceTree = "<group>"; };
9E2F1C832809B606004E65FE /* DebugMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebugMenu.swift; sourceTree = "<group>"; };
9E2F1C8B280ED6A7004E65FE /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
9E2F1C8E280EDE09004E65FE /* Drawer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Drawer.swift; sourceTree = "<group>"; };
9E33ECD029D4CCB600708DE4 /* AlertRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertRequest.swift; sourceTree = "<group>"; };
@ -455,22 +428,15 @@
9E6612352878345000C75B70 /* endlessCircleProgress.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = endlessCircleProgress.json; sourceTree = "<group>"; };
9E66129D288938A300C75B70 /* SettingsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsTests.swift; sourceTree = "<group>"; };
9E6713F02897F81B00A6796F /* MultiLineTextFieldTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiLineTextFieldTests.swift; sourceTree = "<group>"; };
9E6713F5289BC58C00A6796F /* BalanceBreakdownView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BalanceBreakdownView.swift; sourceTree = "<group>"; };
9E6713F6289BC58C00A6796F /* BalanceBreakdownStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BalanceBreakdownStore.swift; sourceTree = "<group>"; };
9E6713F9289BE0E100A6796F /* ClearBackgroundView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClearBackgroundView.swift; sourceTree = "<group>"; };
9E69A24C27FB002800A55317 /* WelcomeStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeStore.swift; sourceTree = "<group>"; };
9E7225F02889539300DF7F17 /* SettingsSnapshotTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsSnapshotTests.swift; sourceTree = "<group>"; };
9E7225F2288AB6DD00DF7F17 /* MultipleLineTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultipleLineTextField.swift; sourceTree = "<group>"; };
9E7225F5288AC71A00DF7F17 /* MultiLineTextFieldStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiLineTextFieldStore.swift; sourceTree = "<group>"; };
9E74CCCF29DC0628003D6E32 /* ReviewRequestTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewRequestTests.swift; sourceTree = "<group>"; };
9E7CB6112869882D00A02233 /* WalletEventsSnapshotTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletEventsSnapshotTests.swift; sourceTree = "<group>"; };
9E7CB6142869E8C300A02233 /* CircularProgress.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircularProgress.swift; sourceTree = "<group>"; };
9E7CB619287310EC00A02233 /* QRCodeGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QRCodeGenerator.swift; sourceTree = "<group>"; };
9E7CB61E2874143800A02233 /* AddressDetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressDetailsView.swift; sourceTree = "<group>"; };
9E7CB61F2874143800A02233 /* AddressDetailsStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressDetailsStore.swift; sourceTree = "<group>"; };
9E7CB6232874246800A02233 /* ProfileTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileTests.swift; sourceTree = "<group>"; };
9E7CB6262874269F00A02233 /* ProfileSnapshotTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileSnapshotTests.swift; sourceTree = "<group>"; };
9E7FE0DE282D2DD600C374E8 /* ZcashBadge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZcashBadge.swift; sourceTree = "<group>"; };
9E7FE0F528327F6F00C374E8 /* ScanUIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScanUIView.swift; sourceTree = "<group>"; };
9E7FE0F82832824C00C374E8 /* QRCodeScanView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QRCodeScanView.swift; sourceTree = "<group>"; };
9E852D5B29AF8EB200CF4AC1 /* RecoveryPhraseValidationFlowFeatureFlagTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecoveryPhraseValidationFlowFeatureFlagTests.swift; sourceTree = "<group>"; };
@ -513,13 +479,10 @@
F96B41E6273B501F0021B49A /* WalletEventsFlowView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WalletEventsFlowView.swift; sourceTree = "<group>"; };
F9971A4A27680DC400A2DB75 /* RootStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RootStore.swift; sourceTree = "<group>"; };
F9971A4C27680DC400A2DB75 /* RootView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RootView.swift; sourceTree = "<group>"; };
F9971A5027680DD000A2DB75 /* ProfileStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProfileStore.swift; sourceTree = "<group>"; };
F9971A5227680DD000A2DB75 /* ProfileView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = "<group>"; };
F9971A5D27680DF600A2DB75 /* ScanView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScanView.swift; sourceTree = "<group>"; };
F9971A5E27680DF600A2DB75 /* ScanStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScanStore.swift; sourceTree = "<group>"; };
F9971A6227680DFE00A2DB75 /* SettingsStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsStore.swift; sourceTree = "<group>"; };
F9971A6427680DFE00A2DB75 /* SettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
F9C165B3274031F600592F76 /* Bindings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bindings.swift; sourceTree = "<group>"; };
F9C165B72740403600592F76 /* SendFlowStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendFlowStore.swift; sourceTree = "<group>"; };
F9C165BB2740403600592F76 /* CreateTransactionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateTransactionView.swift; sourceTree = "<group>"; };
F9C165BD2740403600592F76 /* TransactionSentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransactionSentView.swift; sourceTree = "<group>"; };
@ -537,6 +500,7 @@
0D26AF71299E8196005260EE /* Lottie in Frameworks */,
0D26AF72299E8196005260EE /* URLRouting in Frameworks */,
0D26AF73299E8196005260EE /* ZcashLightClientKit in Frameworks */,
9E0031BA2A2878EE003DFCEB /* AddressDetails in Frameworks */,
9E0031722A272747003DFCEB /* CaptureDevice in Frameworks */,
9E00316E2A272746003DFCEB /* AppVersion in Frameworks */,
9E0031A02A272BB7003DFCEB /* UserDefaults in Frameworks */,
@ -552,15 +516,18 @@
9E0031982A272AD7003DFCEB /* LocalAuthenticationHandler in Frameworks */,
9E0031762A272747003DFCEB /* Date in Frameworks */,
9E0031702A272746003DFCEB /* AudioServices in Frameworks */,
9E0031C52A28BB97003DFCEB /* RecoveryPhraseDisplay in Frameworks */,
9E0031782A272747003DFCEB /* Deeplink in Frameworks */,
0D26AF75299E8196005260EE /* MnemonicSwift in Frameworks */,
0D26AF76299E8196005260EE /* ComposableArchitecture in Frameworks */,
9E5452682A28D5500098B887 /* Welcome in Frameworks */,
9E00319C2A272BB6003DFCEB /* SDKSynchronizer in Frameworks */,
9E9075062A2689D600269308 /* RecoveryPhraseValidationFlow in Frameworks */,
9E0031B82A27724D003DFCEB /* WalletStorage in Frameworks */,
9E90750C2A268CDC00269308 /* SecItem in Frameworks */,
9E00317A2A272747003DFCEB /* DerivationTool in Frameworks */,
9E0031842A27299A003DFCEB /* FeedbackGenerator in Frameworks */,
9E54526E2A28DA510098B887 /* Profile in Frameworks */,
9E9075042A2681FF00269308 /* Generated in Frameworks */,
9E0031AE2A276C56003DFCEB /* UserPreferencesStorage in Frameworks */,
9E80C4522A25E8FA0049E6A7 /* MnemonicClient in Frameworks */,
@ -578,6 +545,7 @@
9E6612312878337F00C75B70 /* Lottie in Frameworks */,
0D5D9B8F2914620700DBD03F /* URLRouting in Frameworks */,
34CE032B29C0938600A6626B /* ZcashLightClientKit in Frameworks */,
9E0031BC2A2878F3003DFCEB /* AddressDetails in Frameworks */,
9E0031642A272736003DFCEB /* CaptureDevice in Frameworks */,
9E0031602A272736003DFCEB /* AppVersion in Frameworks */,
9E0031A82A272BC8003DFCEB /* UserDefaults in Frameworks */,
@ -593,15 +561,18 @@
9E0031962A272ACF003DFCEB /* LocalAuthenticationHandler in Frameworks */,
9E0031622A272736003DFCEB /* AudioServices in Frameworks */,
9E00316A2A272736003DFCEB /* Deeplink in Frameworks */,
9E0031C32A28BB92003DFCEB /* RecoveryPhraseDisplay in Frameworks */,
9E2AC0FF27D8EC120042AA47 /* MnemonicSwift in Frameworks */,
9E80C44C2A25E8EC0049E6A7 /* MnemonicClient in Frameworks */,
6654C73A2715A38000901167 /* ComposableArchitecture in Frameworks */,
9E54526A2A28D5570098B887 /* Welcome in Frameworks */,
9E0031A42A272BC7003DFCEB /* SDKSynchronizer in Frameworks */,
9E9075082A2689DB00269308 /* RecoveryPhraseValidationFlow in Frameworks */,
9E0031B42A27723E003DFCEB /* WalletStorage in Frameworks */,
9E00316C2A272736003DFCEB /* DerivationTool in Frameworks */,
9E90750A2A268CD700269308 /* SecItem in Frameworks */,
9E0031802A272991003DFCEB /* FeedbackGenerator in Frameworks */,
9E54526C2A28DA4B0098B887 /* Profile in Frameworks */,
9EAB466D285A0468002904A0 /* Parsing in Frameworks */,
9E0031B02A276C5D003DFCEB /* UserPreferencesStorage in Frameworks */,
9E00317C2A2728CC003DFCEB /* FirebaseCrashlytics in Frameworks */,
@ -630,21 +601,10 @@
0D0781C2278750C00083ACD7 /* Welcome */ = {
isa = PBXGroup;
children = (
9E69A24C27FB002800A55317 /* WelcomeStore.swift */,
0D0781C3278750E30083ACD7 /* WelcomeView.swift */,
);
path = Welcome;
sourceTree = "<group>";
};
0D0781C5278776B90083ACD7 /* Shapes */ = {
isa = PBXGroup;
children = (
34E0AF1028DEE5220034CF37 /* Wedge.swift */,
0D0781C7278776D20083ACD7 /* ZcashSymbol.swift */,
);
path = Shapes;
sourceTree = "<group>";
};
0D4E79FC26B364170058B01E = {
isa = PBXGroup;
children = (
@ -755,7 +715,6 @@
0DF2DC5227235E1F00FA31E2 /* Extensions */ = {
isa = PBXGroup;
children = (
0DF482B92787ADA800EB37D6 /* ConditionalModifier.swift */,
0D3016B429BF94D1002371B3 /* Button+Disabling.swift */,
);
path = Extensions;
@ -862,15 +821,13 @@
6654C73B2715A3F000901167 /* Features */ = {
isa = PBXGroup;
children = (
9E0031BD2A28B21A003DFCEB /* BalanceBreakdown */,
9E33ECCF29D4CC9900708DE4 /* Alerts */,
9E7CB61B2874140900A02233 /* AddressDetails */,
9E6713F2289BC51200A6796F /* BalanceBreakdown */,
34C5657F29B60BDF002F3A7C /* ExportLogs */,
F93874EC273C4DE200F0E875 /* Home */,
9E2DF99727CF704D00649636 /* ImportWallet */,
3448CB3028E4764E006ADEDB /* NotEnoughFreeSpace */,
6654C73C2715A3FA00901167 /* OnboardingFlow */,
F9971A4F27680DD000A2DB75 /* Profile */,
9E7FE0E4282E753700C374E8 /* RecoveryPhraseDisplay */,
F9971A4927680DC400A2DB75 /* Root */,
9EAFEB8B2808174900199FC9 /* Sandbox */,
@ -921,6 +878,15 @@
path = ProgressIndicators;
sourceTree = "<group>";
};
9E0031BD2A28B21A003DFCEB /* BalanceBreakdown */ = {
isa = PBXGroup;
children = (
9E0031BE2A28B221003DFCEB /* BalanceBreakdownStore.swift */,
9E0031BF2A28B221003DFCEB /* BalanceBreakdownView.swift */,
);
path = BalanceBreakdown;
sourceTree = "<group>";
};
9E01F8262833CD84000EFC57 /* ScanTests */ = {
isa = PBXGroup;
children = (
@ -1105,15 +1071,6 @@
path = MultiLineTextFieldTests;
sourceTree = "<group>";
};
9E6713F2289BC51200A6796F /* BalanceBreakdown */ = {
isa = PBXGroup;
children = (
9E6713F6289BC58C00A6796F /* BalanceBreakdownStore.swift */,
9E6713F5289BC58C00A6796F /* BalanceBreakdownView.swift */,
);
path = BalanceBreakdown;
sourceTree = "<group>";
};
9E7225EF2889537E00DF7F17 /* SettingsSnapshotTests */ = {
isa = PBXGroup;
children = (
@ -1155,15 +1112,6 @@
path = CircularProgress;
sourceTree = "<group>";
};
9E7CB61B2874140900A02233 /* AddressDetails */ = {
isa = PBXGroup;
children = (
9E7CB61F2874143800A02233 /* AddressDetailsStore.swift */,
9E7CB61E2874143800A02233 /* AddressDetailsView.swift */,
);
path = AddressDetails;
sourceTree = "<group>";
};
9E7CB6222874245400A02233 /* ProfileTests */ = {
isa = PBXGroup;
children = (
@ -1194,15 +1142,12 @@
isa = PBXGroup;
children = (
9E9CEA3C29D47BD100599DF5 /* Reducers */,
F9C165B3274031F600592F76 /* Bindings.swift */,
9E6713F9289BE0E100A6796F /* ClearBackgroundView.swift */,
2EDA07A327EDE2A900D6F09B /* DebugFrame.swift */,
9E2F1C832809B606004E65FE /* DebugMenu.swift */,
9E486DEF29B9EE84003E6945 /* KeyboardAdaptive.swift */,
9E6612322878338C00C75B70 /* LottieAnimation.swift */,
34BF09082927C98000222134 /* Memo+toString.swift */,
F93673D52742CB840099C6AF /* Previews.swift */,
9E7CB619287310EC00A02233 /* QRCodeGenerator.swift */,
0DACFA8027208D940039EEA5 /* UInt+SuperscriptText.swift */,
9E486DF829BA09C2003E6945 /* UIKit+Extensions.swift */,
9E486DF229B9EEC4003E6945 /* UIResponder+Current.swift */,
@ -1230,9 +1175,7 @@
9E7FE0E9282E7CF800C374E8 /* ImportSeedEditor */,
9E2F1C8D280EDDEF004E65FE /* Drawer */,
2E35F99027B28E6800EB79CD /* TextFields */,
0D0781C5278776B90083ACD7 /* Shapes */,
669FDAE5272C2371007B9422 /* ProgressIndicators */,
9E7FE0EA282E7D1A00C374E8 /* ZcashBadge */,
);
path = "UI Components";
sourceTree = "<group>";
@ -1240,8 +1183,6 @@
9E7FE0E4282E753700C374E8 /* RecoveryPhraseDisplay */ = {
isa = PBXGroup;
children = (
0D3D04092728B3A10032ABC1 /* RecoveryPhraseDisplayStore.swift */,
0D3D04072728B3440032ABC1 /* RecoveryPhraseDisplayView.swift */,
);
path = RecoveryPhraseDisplay;
sourceTree = "<group>";
@ -1254,14 +1195,6 @@
path = ImportSeedEditor;
sourceTree = "<group>";
};
9E7FE0EA282E7D1A00C374E8 /* ZcashBadge */ = {
isa = PBXGroup;
children = (
9E7FE0DE282D2DD600C374E8 /* ZcashBadge.swift */,
);
path = ZcashBadge;
sourceTree = "<group>";
};
9E7FE0EF282E7FA900C374E8 /* CurrencySelection */ = {
isa = PBXGroup;
children = (
@ -1444,15 +1377,6 @@
path = Root;
sourceTree = "<group>";
};
F9971A4F27680DD000A2DB75 /* Profile */ = {
isa = PBXGroup;
children = (
F9971A5027680DD000A2DB75 /* ProfileStore.swift */,
F9971A5227680DD000A2DB75 /* ProfileView.swift */,
);
path = Profile;
sourceTree = "<group>";
};
F9971A5B27680DF600A2DB75 /* Scan */ = {
isa = PBXGroup;
children = (
@ -1550,6 +1474,10 @@
9E0031AD2A276C56003DFCEB /* UserPreferencesStorage */,
9E0031B52A27724D003DFCEB /* WalletConfigProvider */,
9E0031B72A27724D003DFCEB /* WalletStorage */,
9E0031B92A2878EE003DFCEB /* AddressDetails */,
9E0031C42A28BB97003DFCEB /* RecoveryPhraseDisplay */,
9E5452672A28D5500098B887 /* Welcome */,
9E54526D2A28DA510098B887 /* Profile */,
);
productName = secant;
productReference = 0D26AF94299E8196005260EE /* secant-mainnet.app */;
@ -1607,6 +1535,10 @@
9E0031AF2A276C5D003DFCEB /* UserPreferencesStorage */,
9E0031B12A27723E003DFCEB /* WalletConfigProvider */,
9E0031B32A27723E003DFCEB /* WalletStorage */,
9E0031BB2A2878F3003DFCEB /* AddressDetails */,
9E0031C22A28BB92003DFCEB /* RecoveryPhraseDisplay */,
9E5452692A28D5570098B887 /* Welcome */,
9E54526B2A28DA4B0098B887 /* Profile */,
);
productName = secant;
productReference = 0D4E7A0526B364170058B01E /* secant-testnet.app */;
@ -1922,7 +1854,6 @@
buildActionMask = 2147483647;
files = (
0D26AE9B299E8196005260EE /* OnboardingFlowView.swift in Sources */,
0D26AE9C299E8196005260EE /* ZcashBadge.swift in Sources */,
0D26AE9D299E8196005260EE /* CrashReporterTestKey.swift in Sources */,
0D26AEA0299E8196005260EE /* SandboxStore.swift in Sources */,
0D26AEA5299E8196005260EE /* TransactionSendingView.swift in Sources */,
@ -1932,9 +1863,7 @@
0D26AEAF299E8196005260EE /* TransactionAmountTextFieldStore.swift in Sources */,
0D26AEB1299E8196005260EE /* AppDelegate.swift in Sources */,
0D3016B929BFB2FB002371B3 /* PlainOnboardingView.swift in Sources */,
0D26AEB4299E8196005260EE /* Wedge.swift in Sources */,
0D26AEB5299E8196005260EE /* TransactionDetailView.swift in Sources */,
0D26AEBA299E8196005260EE /* AddressDetailsStore.swift in Sources */,
0D26AEBC299E8196005260EE /* TCATextFieldStore.swift in Sources */,
0D26AEBF299E8196005260EE /* TransactionFailedView.swift in Sources */,
0D26AEC2299E8196005260EE /* TransactionRowView.swift in Sources */,
@ -1945,10 +1874,8 @@
0D26AEC7299E8196005260EE /* RootInitialization.swift in Sources */,
0D26AECC299E8196005260EE /* OnboardingFlowStore.swift in Sources */,
0D26AECF299E8196005260EE /* CurrencySelectionStore.swift in Sources */,
0D26AED2299E8196005260EE /* BalanceBreakdownStore.swift in Sources */,
0D26AED3299E8196005260EE /* SyncStatusSnapshot.swift in Sources */,
0D26AEDA299E8196005260EE /* ImportSeedEditor.swift in Sources */,
0D26AEDB299E8196005260EE /* ProfileStore.swift in Sources */,
9E486DE629B637AF003E6945 /* ImportBirthdayView.swift in Sources */,
0D26AEDC299E8196005260EE /* CheckCircle.swift in Sources */,
9E33ECD929D5E30200708DE4 /* AlertRequest.swift in Sources */,
@ -1959,7 +1886,6 @@
0D26AEEB299E8196005260EE /* Previews.swift in Sources */,
0D26AEEE299E8196005260EE /* QRCodeScanView.swift in Sources */,
0D26AEF0299E8196005260EE /* TCALoggerReducer.swift in Sources */,
0D26AEF1299E8196005260EE /* ConditionalModifier.swift in Sources */,
0D26AEF2299E8196005260EE /* MultipleLineTextField.swift in Sources */,
0D26AEF3299E8196005260EE /* NotEnoughFreeSpaceView.swift in Sources */,
0D26AEF7299E8196005260EE /* Drawer.swift in Sources */,
@ -1968,26 +1894,23 @@
0D26AEFD299E8196005260EE /* HomeView.swift in Sources */,
0D26AEFF299E8196005260EE /* SandboxView.swift in Sources */,
34C5658329B60C1C002F3A7C /* UIShareDialog.swift in Sources */,
0D26AF01299E8196005260EE /* RecoveryPhraseDisplayView.swift in Sources */,
9E9075002A260FE400269308 /* WalletEvent+View.swift in Sources */,
0D3016B629BF94D1002371B3 /* Button+Disabling.swift in Sources */,
9E852D6229B098F400CF4AC1 /* RootDebug.swift in Sources */,
0D26AF05299E8196005260EE /* ScanView.swift in Sources */,
0D26AF07299E8196005260EE /* RootView.swift in Sources */,
9E0031C62A28BD54003DFCEB /* BalanceBreakdownStore.swift in Sources */,
0D26AF0A299E8196005260EE /* OnboardingFooterView.swift in Sources */,
0D26AF0E299E8196005260EE /* MultiLineTextFieldStore.swift in Sources */,
0D26AF0F299E8196005260EE /* DebugFrame.swift in Sources */,
0D26AF11299E8196005260EE /* LottieAnimation.swift in Sources */,
0D26AF13299E8196005260EE /* RecoveryPhraseDisplayStore.swift in Sources */,
9E486DF129B9EE84003E6945 /* KeyboardAdaptive.swift in Sources */,
0D573CB629C106E900B97379 /* About.swift in Sources */,
0D26AF18299E8196005260EE /* WalletEventsFlowStore.swift in Sources */,
0D26AF1B299E8196005260EE /* HomeStore.swift in Sources */,
0D26AF1E299E8196005260EE /* QRCodeGenerator.swift in Sources */,
0D26AF20299E8196005260EE /* UInt+SuperscriptText.swift in Sources */,
0D26AF23299E8196005260EE /* SendFlowStore.swift in Sources */,
0D26AF24299E8196005260EE /* SecantApp.swift in Sources */,
0D26AF2D299E8196005260EE /* DebugMenu.swift in Sources */,
0D26AF37299E8196005260EE /* ScanUIView.swift in Sources */,
0D26AF3A299E8196005260EE /* OnboardingContentView.swift in Sources */,
0D26AF3B299E8196005260EE /* CircularProgress.swift in Sources */,
@ -2000,26 +1923,20 @@
0D26AF44299E8196005260EE /* Memo+toString.swift in Sources */,
0D26AF46299E8196005260EE /* CheckCircleStore.swift in Sources */,
0D26AF47299E8196005260EE /* CreateTransactionView.swift in Sources */,
0D26AF4A299E8196005260EE /* Bindings.swift in Sources */,
0D26AF4B299E8196005260EE /* TextFieldTitleAccessoryButtonStyle.swift in Sources */,
0D26AF4D299E8196005260EE /* ImportWalletStore.swift in Sources */,
0D26AF4E299E8196005260EE /* BalanceBreakdownView.swift in Sources */,
0D26AF4F299E8196005260EE /* SettingsView.swift in Sources */,
0D26AF53299E8196005260EE /* TextFieldFooter.swift in Sources */,
0D26AF54299E8196005260EE /* CrashReporterInterface.swift in Sources */,
346731A329AE3A5100974482 /* UIMailDialog.swift in Sources */,
0D26AF55299E8196005260EE /* ProfileView.swift in Sources */,
9E0031C72A28BD54003DFCEB /* BalanceBreakdownView.swift in Sources */,
0D26AF56299E8196005260EE /* ScanStore.swift in Sources */,
0D26AF5C299E8196005260EE /* WelcomeStore.swift in Sources */,
0D26AF5F299E8196005260EE /* SendFlowView.swift in Sources */,
0D26AF62299E8196005260EE /* WelcomeView.swift in Sources */,
9E33ECD729D5E30200708DE4 /* AlertReducer.swift in Sources */,
0D26AF64299E8196005260EE /* SettingsStore.swift in Sources */,
0D26AF65299E8196005260EE /* InitializationState.swift in Sources */,
0D26AF66299E8196005260EE /* ZcashSymbol.swift in Sources */,
9E486DF429B9EEC4003E6945 /* UIResponder+Current.swift in Sources */,
0D26AF68299E8196005260EE /* TransactionAmountTextField.swift in Sources */,
0D26AF69299E8196005260EE /* AddressDetailsView.swift in Sources */,
0D26AF6A299E8196005260EE /* ClearBackgroundView.swift in Sources */,
0D26AF6C299E8196005260EE /* TransactionSentView.swift in Sources */,
);
@ -2031,7 +1948,6 @@
files = (
9E33ECD629D5D99A00708DE4 /* AlertStates.swift in Sources */,
2EB660E02747EAB900A06A07 /* OnboardingFlowView.swift in Sources */,
9E7FE0DF282D2DD600C374E8 /* ZcashBadge.swift in Sources */,
0D261040298C406F00CC9DE9 /* CrashReporterTestKey.swift in Sources */,
9EAFEB902808183D00199FC9 /* SandboxStore.swift in Sources */,
34DA414728E4385800F8CC61 /* TransactionSendingView.swift in Sources */,
@ -2043,9 +1959,7 @@
2EB7758727FC67FD00269373 /* TransactionAmountTextFieldStore.swift in Sources */,
9EF8136027F043CC0075AF48 /* AppDelegate.swift in Sources */,
0D3016B829BFB2FB002371B3 /* PlainOnboardingView.swift in Sources */,
34E0AF1128DEE5220034CF37 /* Wedge.swift in Sources */,
F96B41E8273B501F0021B49A /* TransactionDetailView.swift in Sources */,
9E7CB6202874143800A02233 /* AddressDetailsStore.swift in Sources */,
2EB1C5E827D77F6100BC43D7 /* TCATextFieldStore.swift in Sources */,
9E5BF641281FD7B600BA3F17 /* TransactionFailedView.swift in Sources */,
9EAB467A2861EA6A002904A0 /* TransactionRowView.swift in Sources */,
@ -2057,10 +1971,8 @@
6654C73E2715A41300901167 /* OnboardingFlowStore.swift in Sources */,
2E6CF8DD27D78319004DCD7A /* CurrencySelectionStore.swift in Sources */,
9E33ECD529D5D99700708DE4 /* AlertReducer.swift in Sources */,
9E6713F7289BC58C00A6796F /* BalanceBreakdownStore.swift in Sources */,
9E66122C2877188700C75B70 /* SyncStatusSnapshot.swift in Sources */,
9E2DF99D27CF704D00649636 /* ImportSeedEditor.swift in Sources */,
F9971A5327680DD000A2DB75 /* ProfileStore.swift in Sources */,
9E486DE529B637AF003E6945 /* ImportBirthdayView.swift in Sources */,
346D41E428DF0B8600963F36 /* CheckCircle.swift in Sources */,
2E8719CD27FB0D3B0082C926 /* CurrencySelectionView.swift in Sources */,
@ -2070,7 +1982,6 @@
F93673D62742CB840099C6AF /* Previews.swift in Sources */,
9E7FE0F92832824C00C374E8 /* QRCodeScanView.swift in Sources */,
9E0F5743297EB96C005304FA /* TCALoggerReducer.swift in Sources */,
0DF482BA2787ADA800EB37D6 /* ConditionalModifier.swift in Sources */,
9E7225F3288AB6DD00DF7F17 /* MultipleLineTextField.swift in Sources */,
3448CB3228E47666006ADEDB /* NotEnoughFreeSpaceView.swift in Sources */,
9E2F1C8F280EDE09004E65FE /* Drawer.swift in Sources */,
@ -2080,7 +1991,6 @@
9EAFEB8F2808183D00199FC9 /* SandboxView.swift in Sources */,
34C5658229B60C1C002F3A7C /* UIShareDialog.swift in Sources */,
9E9074FF2A260FE400269308 /* WalletEvent+View.swift in Sources */,
0D3D04082728B3440032ABC1 /* RecoveryPhraseDisplayView.swift in Sources */,
0D3016B529BF94D1002371B3 /* Button+Disabling.swift in Sources */,
9E852D6129B098F400CF4AC1 /* RootDebug.swift in Sources */,
F9971A5F27680DF600A2DB75 /* ScanView.swift in Sources */,
@ -2089,15 +1999,13 @@
9E7225F6288AC71A00DF7F17 /* MultiLineTextFieldStore.swift in Sources */,
2EDA07A427EDE2A900D6F09B /* DebugFrame.swift in Sources */,
9E6612332878338C00C75B70 /* LottieAnimation.swift in Sources */,
0D3D040A2728B3A10032ABC1 /* RecoveryPhraseDisplayStore.swift in Sources */,
9E486DF029B9EE84003E6945 /* KeyboardAdaptive.swift in Sources */,
F96B41E7273B501F0021B49A /* WalletEventsFlowStore.swift in Sources */,
9EAFEB9128081E9400199FC9 /* HomeStore.swift in Sources */,
9E7CB61A287310EC00A02233 /* QRCodeGenerator.swift in Sources */,
0DACFA8127208D940039EEA5 /* UInt+SuperscriptText.swift in Sources */,
9E0031C12A28B221003DFCEB /* BalanceBreakdownView.swift in Sources */,
F9C165BF2740403600592F76 /* SendFlowStore.swift in Sources */,
0D4E7A0926B364170058B01E /* SecantApp.swift in Sources */,
9E2F1C842809B606004E65FE /* DebugMenu.swift in Sources */,
9E7FE0F628327F6F00C374E8 /* ScanUIView.swift in Sources */,
2EA11F5D27467F7700709571 /* OnboardingContentView.swift in Sources */,
9E7CB6152869E8C300A02233 /* CircularProgress.swift in Sources */,
@ -2109,25 +2017,19 @@
34BF09092927C98000222134 /* Memo+toString.swift in Sources */,
346715A528E2027D0035F7C4 /* CheckCircleStore.swift in Sources */,
F9C165C22740403600592F76 /* CreateTransactionView.swift in Sources */,
F9C165B4274031F600592F76 /* Bindings.swift in Sources */,
2E35F99A27B3E99C00EB79CD /* TextFieldTitleAccessoryButtonStyle.swift in Sources */,
9E2DF99C27CF704D00649636 /* ImportWalletStore.swift in Sources */,
9E6713F8289BC58C00A6796F /* BalanceBreakdownView.swift in Sources */,
F9971A6627680DFE00A2DB75 /* SettingsView.swift in Sources */,
2EDA07A227EDE1AE00D6F09B /* TextFieldFooter.swift in Sources */,
0D26103C298C3E4800CC9DE9 /* CrashReporterInterface.swift in Sources */,
346731A229AE3A5100974482 /* UIMailDialog.swift in Sources */,
F9971A5427680DD000A2DB75 /* ProfileView.swift in Sources */,
F9971A6027680DF600A2DB75 /* ScanStore.swift in Sources */,
9E69A24D27FB002800A55317 /* WelcomeStore.swift in Sources */,
F9C165CB2741AB5D00592F76 /* SendFlowView.swift in Sources */,
0D0781C4278750E30083ACD7 /* WelcomeView.swift in Sources */,
F9971A6527680DFE00A2DB75 /* SettingsStore.swift in Sources */,
9EF8139C27F47AED0075AF48 /* InitializationState.swift in Sources */,
0D0781C9278776D20083ACD7 /* ZcashSymbol.swift in Sources */,
9E0031C02A28B221003DFCEB /* BalanceBreakdownStore.swift in Sources */,
9E486DF329B9EEC4003E6945 /* UIResponder+Current.swift in Sources */,
2E8719CB27FB09990082C926 /* TransactionAmountTextField.swift in Sources */,
9E7CB6212874143800A02233 /* AddressDetailsView.swift in Sources */,
9E6713FA289BE0E100A6796F /* ClearBackgroundView.swift in Sources */,
F9C165C42740403600592F76 /* TransactionSentView.swift in Sources */,
);
@ -2927,6 +2829,22 @@
isa = XCSwiftPackageProductDependency;
productName = WalletStorage;
};
9E0031B92A2878EE003DFCEB /* AddressDetails */ = {
isa = XCSwiftPackageProductDependency;
productName = AddressDetails;
};
9E0031BB2A2878F3003DFCEB /* AddressDetails */ = {
isa = XCSwiftPackageProductDependency;
productName = AddressDetails;
};
9E0031C22A28BB92003DFCEB /* RecoveryPhraseDisplay */ = {
isa = XCSwiftPackageProductDependency;
productName = RecoveryPhraseDisplay;
};
9E0031C42A28BB97003DFCEB /* RecoveryPhraseDisplay */ = {
isa = XCSwiftPackageProductDependency;
productName = RecoveryPhraseDisplay;
};
9E0310B42A24A4CA0021F995 /* FileManager */ = {
isa = XCSwiftPackageProductDependency;
productName = FileManager;
@ -2940,6 +2858,22 @@
package = 9E2AC0FD27D8EC120042AA47 /* XCRemoteSwiftPackageReference "MnemonicSwift" */;
productName = MnemonicSwift;
};
9E5452672A28D5500098B887 /* Welcome */ = {
isa = XCSwiftPackageProductDependency;
productName = Welcome;
};
9E5452692A28D5570098B887 /* Welcome */ = {
isa = XCSwiftPackageProductDependency;
productName = Welcome;
};
9E54526B2A28DA4B0098B887 /* Profile */ = {
isa = XCSwiftPackageProductDependency;
productName = Profile;
};
9E54526D2A28DA510098B887 /* Profile */ = {
isa = XCSwiftPackageProductDependency;
productName = Profile;
};
9E6612302878337F00C75B70 /* Lottie */ = {
isa = XCSwiftPackageProductDependency;
package = 9E66122F2878337F00C75B70 /* XCRemoteSwiftPackageReference "lottie-ios" */;

View File

@ -158,8 +158,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/pointfreeco/swift-case-paths",
"state" : {
"revision" : "870133b7b2387df136ad301ec67b2e864b51dda1",
"version" : "0.14.0"
"revision" : "fc45e7b2cfece9dd80b5a45e6469ffe67fe67984",
"version" : "0.14.1"
}
},
{

View File

@ -14,6 +14,7 @@ import NumberFormatter
import Utils
import Generated
import WalletStorage
import SDKSynchronizer
typealias BalanceBreakdownStore = Store<BalanceBreakdownReducer.State, BalanceBreakdownReducer.Action>
typealias BalanceBreakdownViewStore = ViewStore<BalanceBreakdownReducer.State, BalanceBreakdownReducer.Action>

View File

@ -9,6 +9,7 @@ import Utils
import Models
import Generated
import ReviewRequest
import Profile
typealias HomeStore = Store<HomeReducer.State, HomeReducer.Action>
typealias HomeViewStore = ViewStore<HomeReducer.State, HomeReducer.Action>

View File

@ -2,6 +2,7 @@ import SwiftUI
import ComposableArchitecture
import StoreKit
import Generated
import Profile
struct HomeView: View {
let store: Store<HomeReducer.State, HomeReducer.Action>

View File

@ -8,6 +8,8 @@ import WalletStorage
import WalletConfigProvider
import UserPreferencesStorage
import Models
import RecoveryPhraseDisplay
import Welcome
typealias RootStore = Store<RootReducer.State, RootReducer.Action>
typealias RootViewStore = ViewStore<RootReducer.State, RootReducer.Action>

View File

@ -4,6 +4,8 @@ import ComposableArchitecture
import Generated
import RecoveryPhraseValidationFlow
import Models
import RecoveryPhraseDisplay
import Welcome
struct RootView: View {
let store: RootStore

View File

@ -1,5 +1,6 @@
import ComposableArchitecture
import SwiftUI
import Profile
typealias SandboxStore = Store<SandboxReducer.State, SandboxReducer.Action>
typealias SandboxViewStore = ViewStore<SandboxReducer.State, SandboxReducer.Action>

View File

@ -1,5 +1,7 @@
import SwiftUI
import ComposableArchitecture
import RecoveryPhraseDisplay
import Profile
struct SandboxView: View {
struct SandboxDestinationValue: Identifiable {

View File

@ -7,6 +7,7 @@ import LogsHandler
import LocalAuthenticationHandler
import SupportDataGenerator
import Models
import RecoveryPhraseDisplay
typealias SettingsStore = Store<SettingsReducer.State, SettingsReducer.Action>
typealias SettingsViewStore = ViewStore<SettingsReducer.State, SettingsReducer.Action>

View File

@ -1,6 +1,7 @@
import SwiftUI
import ComposableArchitecture
import Generated
import RecoveryPhraseDisplay
struct SettingsView: View {
let store: SettingsStore

View File

@ -1,38 +0,0 @@
//
// Welcome.swift
// secant-testnet
//
// Created by Lukáš Korba on 04.04.2022.
//
import Foundation
import ComposableArchitecture
typealias WelcomeStore = Store<WelcomeReducer.State, WelcomeReducer.Action>
struct WelcomeReducer: ReducerProtocol {
struct State: Equatable {}
enum Action: Equatable {
case debugMenuStartup
}
func reduce(into state: inout State, action: Action) -> ComposableArchitecture.EffectTask<Action> {
return .none
}
}
// MARK: - Store
extension WelcomeStore {
static var demo = WelcomeStore(
initialState: .placeholder,
reducer: WelcomeReducer()
)
}
// MARK: - Placeholders
extension WelcomeReducer.State {
static let placeholder = WelcomeReducer.State()
}

View File

@ -9,6 +9,7 @@ import XCTest
import ComposableArchitecture
import ZcashLightClientKit
import Pasteboard
import AddressDetails
@testable import secant_testnet
class AddressDetailsTests: XCTestCase {

View File

@ -9,6 +9,7 @@ import XCTest
import ComposableArchitecture
import Pasteboard
import Models
import RecoveryPhraseDisplay
@testable import secant_testnet
class RecoveryPhraseDisplayReducerTests: XCTestCase {

View File

@ -9,6 +9,8 @@ import XCTest
import ComposableArchitecture
import ZcashLightClientKit
import Pasteboard
import AddressDetails
import Profile
@testable import secant_testnet
class ProfileTests: XCTestCase {

View File

@ -13,6 +13,7 @@ import Models
import UIComponents
import Generated
import WalletConfigProvider
import RecoveryPhraseDisplay
@testable import secant_testnet
// swiftlint:disable:next type_name

View File

@ -12,6 +12,7 @@ import Models
import UIComponents
import RecoveryPhraseValidationFlow
import Generated
import RecoveryPhraseDisplay
@testable import secant_testnet
class AppInitializationTests: XCTestCase {

View File

@ -11,6 +11,7 @@ import ComposableArchitecture
import LogsHandler
import Models
import WalletStorage
import RecoveryPhraseDisplay
@testable import secant_testnet
@MainActor

View File

@ -6,10 +6,11 @@
//
import XCTest
@testable import secant_testnet
import ComposableArchitecture
import ZcashLightClientKit
import SwiftUI
import AddressDetails
@testable import secant_testnet
class AddressDetailsSnapshotTests: XCTestCase {
func testAddressDetailsSnapshot() throws {

View File

@ -6,9 +6,10 @@
//
import XCTest
@testable import secant_testnet
import ComposableArchitecture
import SwiftUI
import Profile
@testable import secant_testnet
class ProfileSnapshotTests: XCTestCase {
func testProfileSnapshot_sent() throws {

View File

@ -6,8 +6,9 @@
//
import XCTest
@testable import secant_testnet
import ComposableArchitecture
import RecoveryPhraseDisplay
@testable import secant_testnet
class RecoveryPhraseDisplaySnapshotTests: XCTestCase {
func testRecoveryPhraseDisplaySnapshot() throws {

View File

@ -6,8 +6,9 @@
//
import XCTest
@testable import secant_testnet
import ComposableArchitecture
import Welcome
@testable import secant_testnet
class WelcomeSnapshotTests: XCTestCase {
func testWelcomeSnapshot() throws {