[#566] Change colors app-wide (#603)

This commit is contained in:
Lukas Korba 2023-03-06 15:14:18 +01:00 committed by GitHub
parent 8e445f8b09
commit 8e46737321
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
133 changed files with 532 additions and 1773 deletions

View File

@ -37,7 +37,6 @@
0D26AEAD299E8196005260EE /* DeeplinkInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBDF95D291E657B000A1A05 /* DeeplinkInterface.swift */; };
0D26AEAE299E8196005260EE /* DerivationToolTestKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBDF974291F79F9000A1A05 /* DerivationToolTestKey.swift */; };
0D26AEAF299E8196005260EE /* TransactionAmountTextFieldStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EB7758627FC67FD00269373 /* TransactionAmountTextFieldStore.swift */; };
0D26AEB0299E8196005260EE /* CircularFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 669FDAE8272C23B3007B9422 /* CircularFrame.swift */; };
0D26AEB1299E8196005260EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EF8135F27F043CC0075AF48 /* AppDelegate.swift */; };
0D26AEB2299E8196005260EE /* LogsHandlerInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E612C7129880E9200D09B09 /* LogsHandlerInterface.swift */; };
0D26AEB3299E8196005260EE /* DeeplinkTestKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBDF95C291E657B000A1A05 /* DeeplinkTestKey.swift */; };
@ -46,14 +45,12 @@
0D26AEB6299E8196005260EE /* NumberFormatterLiveKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EB863912922D035003D0F8B /* NumberFormatterLiveKey.swift */; };
0D26AEB7299E8196005260EE /* DiskSpaceCheckerInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBDF946291D75B2000A1A05 /* DiskSpaceCheckerInterface.swift */; };
0D26AEB8299E8196005260EE /* FileManagerInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E02B56927FED43E005B809B /* FileManagerInterface.swift */; };
0D26AEB9299E8196005260EE /* SecondaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 663FABA1271D876C00E495F8 /* SecondaryButton.swift */; };
0D26AEBA299E8196005260EE /* AddressDetailsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7CB61F2874143800A02233 /* AddressDetailsStore.swift */; };
0D26AEBB299E8196005260EE /* RecoveryPhraseBackupSucceededView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DC487C22772574C00BE6A63 /* RecoveryPhraseBackupSucceededView.swift */; };
0D26AEBC299E8196005260EE /* TCATextFieldStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EB1C5E727D77F6100BC43D7 /* TCATextFieldStore.swift */; };
0D26AEBD299E8196005260EE /* NotificationCenterInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5BF647282277BE00BA3F17 /* NotificationCenterInterface.swift */; };
0D26AEBE299E8196005260EE /* SecantTextStyles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D8A43C3272AEEDE005A6414 /* SecantTextStyles.swift */; };
0D26AEBF299E8196005260EE /* TransactionFailedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5BF640281FD7B600BA3F17 /* TransactionFailedView.swift */; };
0D26AEC0299E8196005260EE /* NeumorphicDesignModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E4DC6DF27C409A100E657F4 /* NeumorphicDesignModifier.swift */; };
0D26AEC1299E8196005260EE /* Clamped.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DACFA7E27208CE00039EEA5 /* Clamped.swift */; };
0D26AEC2299E8196005260EE /* TransactionRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAB46792861EA6A002904A0 /* TransactionRowView.swift */; };
0D26AEC3299E8196005260EE /* FeedbackGeneratorTestKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EB863892922CC4D003D0F8B /* FeedbackGeneratorTestKey.swift */; };
@ -86,12 +83,10 @@
0D26AEDE299E8196005260EE /* RecoveryPhraseRandomizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E3911422848EEB90073DD9A /* RecoveryPhraseRandomizer.swift */; };
0D26AEDF299E8196005260EE /* FileManagerTestKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EB863C42923C8AF003D0F8B /* FileManagerTestKey.swift */; };
0D26AEE0299E8196005260EE /* SecItemLive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EB863BE2923C72C003D0F8B /* SecItemLive.swift */; };
0D26AEE1299E8196005260EE /* CircularFrameBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 669FDAEA272C23C2007B9422 /* CircularFrameBadge.swift */; };
0D26AEE2299E8196005260EE /* FileManagerLiveKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EB863B82923C6D7003D0F8B /* FileManagerLiveKey.swift */; };
0D26AEE3299E8196005260EE /* AppVersionTestKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBDF979291F7EB0000A1A05 /* AppVersionTestKey.swift */; };
0D26AEE4299E8196005260EE /* CurrencySelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E8719CC27FB0D3B0082C926 /* CurrencySelectionView.swift */; };
0D26AEE5299E8196005260EE /* RecoveryPhraseRandomizerTestKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EB863A429239DCB003D0F8B /* RecoveryPhraseRandomizerTestKey.swift */; };
0D26AEE6299E8196005260EE /* WalletInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A6A27680E1000A2DB75 /* WalletInfoView.swift */; };
0D26AEE7299E8196005260EE /* TransactionAddressTextFieldStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5BF64E2823E94900BA3F17 /* TransactionAddressTextFieldStore.swift */; };
0D26AEE8299E8196005260EE /* NumberFormatterInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EB863902922D035003D0F8B /* NumberFormatterInterface.swift */; };
0D26AEE9299E8196005260EE /* WithStateBinding.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9EEB8152742C2210032EEB8 /* WithStateBinding.swift */; };
@ -109,7 +104,6 @@
0D26AEF5299E8196005260EE /* TransactionState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5BF63B2818305D00BA3F17 /* TransactionState.swift */; };
0D26AEF6299E8196005260EE /* SDKSynchronizerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EB863CC2923CA28003D0F8B /* SDKSynchronizerTest.swift */; };
0D26AEF7299E8196005260EE /* Drawer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E2F1C8E280EDE09004E65FE /* Drawer.swift */; };
0D26AEF8299E8196005260EE /* CircularFrameBackground.swift in Sources */ = {isa = PBXBuildFile; fileRef = 665C963E272C26E600BC04FB /* CircularFrameBackground.swift */; };
0D26AEF9299E8196005260EE /* SDKSynchronizerInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAFEB872806E5AE00199FC9 /* SDKSynchronizerInterface.swift */; };
0D26AEFA299E8196005260EE /* DesignGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DB8AA80271DC7520035BC9D /* DesignGuide.swift */; };
0D26AEFB299E8196005260EE /* SensitiveData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E612C7C2991476F00D09B09 /* SensitiveData.swift */; };
@ -130,7 +124,6 @@
0D26AF0A299E8196005260EE /* OnboardingFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EA11F5A27467EF800709571 /* OnboardingFooterView.swift */; };
0D26AF0B299E8196005260EE /* CaptureDeviceTestKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBDF96C291ECED4000A1A05 /* CaptureDeviceTestKey.swift */; };
0D26AF0C299E8196005260EE /* DiskSpaceCheckerLiveKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBDF948291D75BF000A1A05 /* DiskSpaceCheckerLiveKey.swift */; };
0D26AF0D299E8196005260EE /* NavigationButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66D50667271D9B6100E51F0D /* NavigationButtonStyle.swift */; };
0D26AF0E299E8196005260EE /* MultiLineTextFieldStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7225F5288AC71A00DF7F17 /* MultiLineTextFieldStore.swift */; };
0D26AF0F299E8196005260EE /* DebugFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EDA07A327EDE2A900D6F09B /* DebugFrame.swift */; };
0D26AF10299E8196005260EE /* MnemonicLiveKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E153A5C2920CD5100112F41 /* MnemonicLiveKey.swift */; };
@ -146,7 +139,6 @@
0D26AF1A299E8196005260EE /* UserDefaultsInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E153A7329216EFB00112F41 /* UserDefaultsInterface.swift */; };
0D26AF1B299E8196005260EE /* HomeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F93874ED273C4DE200F0E875 /* HomeStore.swift */; };
0D26AF1C299E8196005260EE /* AppVersionMocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBDF97F291F8261000A1A05 /* AppVersionMocks.swift */; };
0D26AF1D299E8196005260EE /* RequestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A5827680DDE00A2DB75 /* RequestView.swift */; };
0D26AF1E299E8196005260EE /* QRCodeGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7CB619287310EC00A02233 /* QRCodeGenerator.swift */; };
0D26AF1F299E8196005260EE /* Array+Chunked.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7FE0D4282D281800C374E8 /* Array+Chunked.swift */; };
0D26AF20299E8196005260EE /* UInt+SuperscriptText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DACFA8027208D940039EEA5 /* UInt+SuperscriptText.swift */; };
@ -158,7 +150,6 @@
0D26AF26299E8196005260EE /* WalletStorageLiveKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EB863992923935B003D0F8B /* WalletStorageLiveKey.swift */; };
0D26AF27299E8196005260EE /* WalletStorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EB863982923935B003D0F8B /* WalletStorageInterface.swift */; };
0D26AF28299E8196005260EE /* StandardButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66DC733E271D88CC0053CBB6 /* StandardButtonStyle.swift */; };
0D26AF29299E8196005260EE /* PrimaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 663FAB9F271D876200E495F8 /* PrimaryButton.swift */; };
0D26AF2A299E8196005260EE /* ActiveButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 663FAB9B271D874D00E495F8 /* ActiveButton.swift */; };
0D26AF2B299E8196005260EE /* UIShareDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E612C6E2987A9B100D09B09 /* UIShareDialog.swift */; };
0D26AF2C299E8196005260EE /* DatabaseFilesLiveKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBDF952291E5E86000A1A05 /* DatabaseFilesLiveKey.swift */; };
@ -168,7 +159,6 @@
0D26AF32299E8196005260EE /* View+InnerShadow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DF2DC5327235E3E00FA31E2 /* View+InnerShadow.swift */; };
0D26AF33299E8196005260EE /* ZcashSDKEnvironmentInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E153A6D292167FF00112F41 /* ZcashSDKEnvironmentInterface.swift */; };
0D26AF34299E8196005260EE /* SecItemInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAFEB83280597B700199FC9 /* SecItemInterface.swift */; };
0D26AF35299E8196005260EE /* WalletInfoStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A6827680E1000A2DB75 /* WalletInfoStore.swift */; };
0D26AF36299E8196005260EE /* DatabaseFilesTestKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBDF94F291E5E86000A1A05 /* DatabaseFilesTestKey.swift */; };
0D26AF37299E8196005260EE /* ScanUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E7FE0F528327F6F00C374E8 /* ScanUIView.swift */; };
0D26AF38299E8196005260EE /* AppVersionLiveKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBDF97A291F7EB0000A1A05 /* AppVersionLiveKey.swift */; };
@ -226,7 +216,6 @@
0D26AF6C299E8196005260EE /* TransactionSentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9C165BD2740403600592F76 /* TransactionSentView.swift */; };
0D26AF6D299E8196005260EE /* ZcashSDKEnvironmentLiveKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E153A6B292167FF00112F41 /* ZcashSDKEnvironmentLiveKey.swift */; };
0D26AF6E299E8196005260EE /* WalletLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E0F5746297EE5F3005304FA /* WalletLogger.swift */; };
0D26AF6F299E8196005260EE /* RequestStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A5627680DDE00A2DB75 /* RequestStore.swift */; };
0D26AF71299E8196005260EE /* Lottie in Frameworks */ = {isa = PBXBuildFile; productRef = 0D26AE8F299E8196005260EE /* Lottie */; };
0D26AF72299E8196005260EE /* URLRouting in Frameworks */ = {isa = PBXBuildFile; productRef = 0D26AE93299E8196005260EE /* URLRouting */; };
0D26AF73299E8196005260EE /* ZcashLightClientKit in Frameworks */ = {isa = PBXBuildFile; productRef = 0D26AE91299E8196005260EE /* ZcashLightClientKit */; };
@ -354,16 +343,10 @@
660558F7270C862F009D6954 /* Fonts+Generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 660558F5270C862F009D6954 /* Fonts+Generated.swift */; };
660558F8270C862F009D6954 /* XCAssets+Generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 660558F6270C862F009D6954 /* XCAssets+Generated.swift */; };
663FAB9C271D874D00E495F8 /* ActiveButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 663FAB9B271D874D00E495F8 /* ActiveButton.swift */; };
663FABA0271D876200E495F8 /* PrimaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 663FAB9F271D876200E495F8 /* PrimaryButton.swift */; };
663FABA2271D876C00E495F8 /* SecondaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 663FABA1271D876C00E495F8 /* SecondaryButton.swift */; };
6654C73A2715A38000901167 /* ComposableArchitecture in Frameworks */ = {isa = PBXBuildFile; productRef = 6654C7392715A38000901167 /* ComposableArchitecture */; };
6654C73E2715A41300901167 /* OnboardingFlowStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6654C73D2715A41300901167 /* OnboardingFlowStore.swift */; };
6654C7442715A4AC00901167 /* OnboardingStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6654C7432715A4AC00901167 /* OnboardingStoreTests.swift */; };
665C963F272C26E600BC04FB /* CircularFrameBackground.swift in Sources */ = {isa = PBXBuildFile; fileRef = 665C963E272C26E600BC04FB /* CircularFrameBackground.swift */; };
669FDAE9272C23B3007B9422 /* CircularFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 669FDAE8272C23B3007B9422 /* CircularFrame.swift */; };
669FDAEB272C23C2007B9422 /* CircularFrameBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 669FDAEA272C23C2007B9422 /* CircularFrameBadge.swift */; };
66A0807B271993C500118B79 /* OnboardingProgressIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66A0807A271993C500118B79 /* OnboardingProgressIndicator.swift */; };
66D50668271D9B6100E51F0D /* NavigationButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66D50667271D9B6100E51F0D /* NavigationButtonStyle.swift */; };
66DC733F271D88CC0053CBB6 /* StandardButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66DC733E271D88CC0053CBB6 /* StandardButtonStyle.swift */; };
9E01F8282833CDA0000EFC57 /* ScanTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E01F8272833CDA0000EFC57 /* ScanTests.swift */; };
9E02B56A27FED43E005B809B /* FileManagerInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E02B56927FED43E005B809B /* FileManagerInterface.swift */; };
@ -403,7 +386,6 @@
9E39114A2848EEB90073DD9A /* UserPreferencesStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E3911442848EEB90073DD9A /* UserPreferencesStorage.swift */; };
9E39114C2848EEB90073DD9A /* DatabaseFiles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E3911462848EEB90073DD9A /* DatabaseFiles.swift */; };
9E39115E284E3E350073DD9A /* secantUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D4E7A2526B364180058B01E /* secantUITests.swift */; };
9E4DC6E027C409A100E657F4 /* NeumorphicDesignModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E4DC6DF27C409A100E657F4 /* NeumorphicDesignModifier.swift */; };
9E4DC6E227C4C6B700E657F4 /* SecantButtonStyles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E4DC6E127C4C6B700E657F4 /* SecantButtonStyles.swift */; };
9E5BF63F2819542C00BA3F17 /* WalletEventsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5BF63E2819542C00BA3F17 /* WalletEventsTests.swift */; };
9E5BF641281FD7B600BA3F17 /* TransactionFailedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E5BF640281FD7B600BA3F17 /* TransactionFailedView.swift */; };
@ -547,14 +529,10 @@
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 */; };
F9971A5927680DDE00A2DB75 /* RequestStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A5627680DDE00A2DB75 /* RequestStore.swift */; };
F9971A5A27680DDE00A2DB75 /* RequestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A5827680DDE00A2DB75 /* RequestView.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 */; };
F9971A6B27680E1000A2DB75 /* WalletInfoStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A6827680E1000A2DB75 /* WalletInfoStore.swift */; };
F9971A6C27680E1000A2DB75 /* WalletInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971A6A27680E1000A2DB75 /* WalletInfoView.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 */; };
@ -682,15 +660,9 @@
660558F5270C862F009D6954 /* Fonts+Generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Fonts+Generated.swift"; sourceTree = "<group>"; };
660558F6270C862F009D6954 /* XCAssets+Generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "XCAssets+Generated.swift"; sourceTree = "<group>"; };
663FAB9B271D874D00E495F8 /* ActiveButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActiveButton.swift; sourceTree = "<group>"; };
663FAB9F271D876200E495F8 /* PrimaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimaryButton.swift; sourceTree = "<group>"; };
663FABA1271D876C00E495F8 /* SecondaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecondaryButton.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>"; };
665C963E272C26E600BC04FB /* CircularFrameBackground.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircularFrameBackground.swift; sourceTree = "<group>"; };
669FDAE8272C23B3007B9422 /* CircularFrame.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircularFrame.swift; sourceTree = "<group>"; };
669FDAEA272C23C2007B9422 /* CircularFrameBadge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircularFrameBadge.swift; sourceTree = "<group>"; };
66A0807A271993C500118B79 /* OnboardingProgressIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingProgressIndicator.swift; sourceTree = "<group>"; };
66D50667271D9B6100E51F0D /* NavigationButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationButtonStyle.swift; sourceTree = "<group>"; };
66DC733E271D88CC0053CBB6 /* StandardButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StandardButtonStyle.swift; sourceTree = "<group>"; };
9E01F8272833CDA0000EFC57 /* ScanTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScanTests.swift; sourceTree = "<group>"; };
9E02B56927FED43E005B809B /* FileManagerInterface.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileManagerInterface.swift; sourceTree = "<group>"; };
@ -730,7 +702,6 @@
9E3911442848EEB90073DD9A /* UserPreferencesStorage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserPreferencesStorage.swift; sourceTree = "<group>"; };
9E3911462848EEB90073DD9A /* DatabaseFiles.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DatabaseFiles.swift; sourceTree = "<group>"; };
9E3911472848EEB90073DD9A /* WalletStorage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WalletStorage.swift; sourceTree = "<group>"; };
9E4DC6DF27C409A100E657F4 /* NeumorphicDesignModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NeumorphicDesignModifier.swift; sourceTree = "<group>"; };
9E4DC6E127C4C6B700E657F4 /* SecantButtonStyles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecantButtonStyles.swift; sourceTree = "<group>"; };
9E5BF63B2818305D00BA3F17 /* TransactionState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionState.swift; sourceTree = "<group>"; };
9E5BF63E2819542C00BA3F17 /* WalletEventsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletEventsTests.swift; sourceTree = "<group>"; };
@ -869,14 +840,10 @@
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>"; };
F9971A5627680DDE00A2DB75 /* RequestStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestStore.swift; sourceTree = "<group>"; };
F9971A5827680DDE00A2DB75 /* RequestView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestView.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>"; };
F9971A6827680E1000A2DB75 /* WalletInfoStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WalletInfoStore.swift; sourceTree = "<group>"; };
F9971A6A27680E1000A2DB75 /* WalletInfoView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WalletInfoView.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>"; };
@ -1241,10 +1208,6 @@
children = (
66DC733E271D88CC0053CBB6 /* StandardButtonStyle.swift */,
663FAB9B271D874D00E495F8 /* ActiveButton.swift */,
663FAB9F271D876200E495F8 /* PrimaryButton.swift */,
663FABA1271D876C00E495F8 /* SecondaryButton.swift */,
66D50667271D9B6100E51F0D /* NavigationButtonStyle.swift */,
9E4DC6DF27C409A100E657F4 /* NeumorphicDesignModifier.swift */,
);
path = Buttons;
sourceTree = "<group>";
@ -1261,14 +1224,12 @@
F9971A4F27680DD000A2DB75 /* Profile */,
9E7FE0E4282E753700C374E8 /* RecoveryPhraseDisplay */,
9E7FE0E3282E751A00C374E8 /* RecoveryPhraseValidationFlow */,
F9971A5527680DDE00A2DB75 /* Request */,
F9971A4927680DC400A2DB75 /* Root */,
9EAFEB8B2808174900199FC9 /* Sandbox */,
F9971A5B27680DF600A2DB75 /* Scan */,
F9C165B62740403600592F76 /* SendFlow */,
F9971A6127680DFE00A2DB75 /* Settings */,
F96B41E2273B501F0021B49A /* WalletEventsFlow */,
F9971A6727680E1000A2DB75 /* WalletInfo */,
0D0781C2278750C00083ACD7 /* Welcome */,
);
path = Features;
@ -1319,16 +1280,6 @@
path = Backgrounds;
sourceTree = "<group>";
};
669FDAE7272C239D007B9422 /* CircularFrame */ = {
isa = PBXGroup;
children = (
669FDAE8272C23B3007B9422 /* CircularFrame.swift */,
669FDAEA272C23C2007B9422 /* CircularFrameBadge.swift */,
665C963E272C26E600BC04FB /* CircularFrameBackground.swift */,
);
path = CircularFrame;
sourceTree = "<group>";
};
9E01F8262833CD84000EFC57 /* ScanTests */ = {
isa = PBXGroup;
children = (
@ -1707,7 +1658,6 @@
2E35F99027B28E6800EB79CD /* TextFields */,
0D0781C5278776B90083ACD7 /* Shapes */,
0D8A43C2272AEEA7005A6414 /* FontStyles */,
669FDAE7272C239D007B9422 /* CircularFrame */,
0D535FE0271F945C009A9E3E /* Chips */,
663FAB9A271D873300E495F8 /* Buttons */,
669FDAE5272C2371007B9422 /* ProgressIndicators */,
@ -2124,15 +2074,6 @@
path = Profile;
sourceTree = "<group>";
};
F9971A5527680DDE00A2DB75 /* Request */ = {
isa = PBXGroup;
children = (
F9971A5627680DDE00A2DB75 /* RequestStore.swift */,
F9971A5827680DDE00A2DB75 /* RequestView.swift */,
);
path = Request;
sourceTree = "<group>";
};
F9971A5B27680DF600A2DB75 /* Scan */ = {
isa = PBXGroup;
children = (
@ -2153,15 +2094,6 @@
path = Settings;
sourceTree = "<group>";
};
F9971A6727680E1000A2DB75 /* WalletInfo */ = {
isa = PBXGroup;
children = (
F9971A6827680E1000A2DB75 /* WalletInfoStore.swift */,
F9971A6A27680E1000A2DB75 /* WalletInfoView.swift */,
);
path = WalletInfo;
sourceTree = "<group>";
};
F9C165B62740403600592F76 /* SendFlow */ = {
isa = PBXGroup;
children = (
@ -2605,7 +2537,6 @@
0D26AEAD299E8196005260EE /* DeeplinkInterface.swift in Sources */,
0D26AEAE299E8196005260EE /* DerivationToolTestKey.swift in Sources */,
0D26AEAF299E8196005260EE /* TransactionAmountTextFieldStore.swift in Sources */,
0D26AEB0299E8196005260EE /* CircularFrame.swift in Sources */,
0D26AEB1299E8196005260EE /* AppDelegate.swift in Sources */,
0D26AEB2299E8196005260EE /* LogsHandlerInterface.swift in Sources */,
0D26AEB3299E8196005260EE /* DeeplinkTestKey.swift in Sources */,
@ -2615,14 +2546,12 @@
0D26AEB6299E8196005260EE /* NumberFormatterLiveKey.swift in Sources */,
0D26AEB7299E8196005260EE /* DiskSpaceCheckerInterface.swift in Sources */,
0D26AEB8299E8196005260EE /* FileManagerInterface.swift in Sources */,
0D26AEB9299E8196005260EE /* SecondaryButton.swift in Sources */,
0D26AEBA299E8196005260EE /* AddressDetailsStore.swift in Sources */,
0D26AEBB299E8196005260EE /* RecoveryPhraseBackupSucceededView.swift in Sources */,
0D26AEBC299E8196005260EE /* TCATextFieldStore.swift in Sources */,
0D26AEBD299E8196005260EE /* NotificationCenterInterface.swift in Sources */,
0D26AEBE299E8196005260EE /* SecantTextStyles.swift in Sources */,
0D26AEBF299E8196005260EE /* TransactionFailedView.swift in Sources */,
0D26AEC0299E8196005260EE /* NeumorphicDesignModifier.swift in Sources */,
0D26AEC1299E8196005260EE /* Clamped.swift in Sources */,
0D26AEC2299E8196005260EE /* TransactionRowView.swift in Sources */,
0D26AEC3299E8196005260EE /* FeedbackGeneratorTestKey.swift in Sources */,
@ -2658,12 +2587,10 @@
3467319D29AE374A00974482 /* SupportDataGeneratorLiveKey.swift in Sources */,
0D26AEDF299E8196005260EE /* FileManagerTestKey.swift in Sources */,
0D26AEE0299E8196005260EE /* SecItemLive.swift in Sources */,
0D26AEE1299E8196005260EE /* CircularFrameBadge.swift in Sources */,
0D26AEE2299E8196005260EE /* FileManagerLiveKey.swift in Sources */,
0D26AEE3299E8196005260EE /* AppVersionTestKey.swift in Sources */,
0D26AEE4299E8196005260EE /* CurrencySelectionView.swift in Sources */,
0D26AEE5299E8196005260EE /* RecoveryPhraseRandomizerTestKey.swift in Sources */,
0D26AEE6299E8196005260EE /* WalletInfoView.swift in Sources */,
0D26AEE7299E8196005260EE /* TransactionAddressTextFieldStore.swift in Sources */,
0D26AEE8299E8196005260EE /* NumberFormatterInterface.swift in Sources */,
0D26AEE9299E8196005260EE /* WithStateBinding.swift in Sources */,
@ -2681,7 +2608,6 @@
0D26AEF5299E8196005260EE /* TransactionState.swift in Sources */,
0D26AEF6299E8196005260EE /* SDKSynchronizerTest.swift in Sources */,
0D26AEF7299E8196005260EE /* Drawer.swift in Sources */,
0D26AEF8299E8196005260EE /* CircularFrameBackground.swift in Sources */,
0D26AEF9299E8196005260EE /* SDKSynchronizerInterface.swift in Sources */,
0D26AEFA299E8196005260EE /* DesignGuide.swift in Sources */,
0D26AEFB299E8196005260EE /* SensitiveData.swift in Sources */,
@ -2704,7 +2630,6 @@
0D26AF0A299E8196005260EE /* OnboardingFooterView.swift in Sources */,
0D26AF0B299E8196005260EE /* CaptureDeviceTestKey.swift in Sources */,
0D26AF0C299E8196005260EE /* DiskSpaceCheckerLiveKey.swift in Sources */,
0D26AF0D299E8196005260EE /* NavigationButtonStyle.swift in Sources */,
0D26AF0E299E8196005260EE /* MultiLineTextFieldStore.swift in Sources */,
0D26AF0F299E8196005260EE /* DebugFrame.swift in Sources */,
0D26AF10299E8196005260EE /* MnemonicLiveKey.swift in Sources */,
@ -2721,7 +2646,6 @@
34F682E629A75EB60022C079 /* WalletConfig.swift in Sources */,
0D26AF1B299E8196005260EE /* HomeStore.swift in Sources */,
0D26AF1C299E8196005260EE /* AppVersionMocks.swift in Sources */,
0D26AF1D299E8196005260EE /* RequestView.swift in Sources */,
0D26AF1E299E8196005260EE /* QRCodeGenerator.swift in Sources */,
0D26AF1F299E8196005260EE /* Array+Chunked.swift in Sources */,
0D26AF20299E8196005260EE /* UInt+SuperscriptText.swift in Sources */,
@ -2733,7 +2657,6 @@
0D26AF26299E8196005260EE /* WalletStorageLiveKey.swift in Sources */,
0D26AF27299E8196005260EE /* WalletStorageInterface.swift in Sources */,
0D26AF28299E8196005260EE /* StandardButtonStyle.swift in Sources */,
0D26AF29299E8196005260EE /* PrimaryButton.swift in Sources */,
0D26AF2A299E8196005260EE /* ActiveButton.swift in Sources */,
0D26AF2B299E8196005260EE /* UIShareDialog.swift in Sources */,
0D26AF2C299E8196005260EE /* DatabaseFilesLiveKey.swift in Sources */,
@ -2743,7 +2666,6 @@
0D26AF32299E8196005260EE /* View+InnerShadow.swift in Sources */,
0D26AF33299E8196005260EE /* ZcashSDKEnvironmentInterface.swift in Sources */,
0D26AF34299E8196005260EE /* SecItemInterface.swift in Sources */,
0D26AF35299E8196005260EE /* WalletInfoStore.swift in Sources */,
0D26AF36299E8196005260EE /* DatabaseFilesTestKey.swift in Sources */,
34F682F629A7641B0022C079 /* WalletConfigProviderTestKey.swift in Sources */,
0D26AF37299E8196005260EE /* ScanUIView.swift in Sources */,
@ -2803,7 +2725,6 @@
0D26AF6C299E8196005260EE /* TransactionSentView.swift in Sources */,
0D26AF6D299E8196005260EE /* ZcashSDKEnvironmentLiveKey.swift in Sources */,
0D26AF6E299E8196005260EE /* WalletLogger.swift in Sources */,
0D26AF6F299E8196005260EE /* RequestStore.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2835,7 +2756,6 @@
9EBDF961291E657B000A1A05 /* DeeplinkInterface.swift in Sources */,
9EBDF977291F79F9000A1A05 /* DerivationToolTestKey.swift in Sources */,
2EB7758727FC67FD00269373 /* TransactionAmountTextFieldStore.swift in Sources */,
669FDAE9272C23B3007B9422 /* CircularFrame.swift in Sources */,
9EF8136027F043CC0075AF48 /* AppDelegate.swift in Sources */,
9E612C7229880E9200D09B09 /* LogsHandlerInterface.swift in Sources */,
9EBDF960291E657B000A1A05 /* DeeplinkTestKey.swift in Sources */,
@ -2845,14 +2765,12 @@
9EB863942922D036003D0F8B /* NumberFormatterLiveKey.swift in Sources */,
9EBDF947291D75B2000A1A05 /* DiskSpaceCheckerInterface.swift in Sources */,
9E02B56A27FED43E005B809B /* FileManagerInterface.swift in Sources */,
663FABA2271D876C00E495F8 /* SecondaryButton.swift in Sources */,
9E7CB6202874143800A02233 /* AddressDetailsStore.swift in Sources */,
0DC487C32772574C00BE6A63 /* RecoveryPhraseBackupSucceededView.swift in Sources */,
2EB1C5E827D77F6100BC43D7 /* TCATextFieldStore.swift in Sources */,
9E5BF648282277BE00BA3F17 /* NotificationCenterInterface.swift in Sources */,
0D8A43C4272AEEDE005A6414 /* SecantTextStyles.swift in Sources */,
9E5BF641281FD7B600BA3F17 /* TransactionFailedView.swift in Sources */,
9E4DC6E027C409A100E657F4 /* NeumorphicDesignModifier.swift in Sources */,
0DACFA7F27208CE00039EEA5 /* Clamped.swift in Sources */,
9EAB467A2861EA6A002904A0 /* TransactionRowView.swift in Sources */,
9EB8638C2922CD4A003D0F8B /* FeedbackGeneratorTestKey.swift in Sources */,
@ -2888,12 +2806,10 @@
3467319C29AE374A00974482 /* SupportDataGeneratorLiveKey.swift in Sources */,
9EB863C52923C8AF003D0F8B /* FileManagerTestKey.swift in Sources */,
9EB863BF2923C72C003D0F8B /* SecItemLive.swift in Sources */,
669FDAEB272C23C2007B9422 /* CircularFrameBadge.swift in Sources */,
9EB863B92923C6D7003D0F8B /* FileManagerLiveKey.swift in Sources */,
9EBDF97C291F7EB0000A1A05 /* AppVersionTestKey.swift in Sources */,
2E8719CD27FB0D3B0082C926 /* CurrencySelectionView.swift in Sources */,
9EB863A729239DCB003D0F8B /* RecoveryPhraseRandomizerTestKey.swift in Sources */,
F9971A6C27680E1000A2DB75 /* WalletInfoView.swift in Sources */,
9E5BF6502823E94900BA3F17 /* TransactionAddressTextFieldStore.swift in Sources */,
9EB863932922D036003D0F8B /* NumberFormatterInterface.swift in Sources */,
F9EEB8162742C2210032EEB8 /* WithStateBinding.swift in Sources */,
@ -2911,7 +2827,6 @@
9E7FE0EC282E7D9400C374E8 /* TransactionState.swift in Sources */,
9EB863CD2923CA28003D0F8B /* SDKSynchronizerTest.swift in Sources */,
9E2F1C8F280EDE09004E65FE /* Drawer.swift in Sources */,
665C963F272C26E600BC04FB /* CircularFrameBackground.swift in Sources */,
9EAFEB882806E5AE00199FC9 /* SDKSynchronizerInterface.swift in Sources */,
0DB8AA81271DC7520035BC9D /* DesignGuide.swift in Sources */,
9E612C7E2991491200D09B09 /* SensitiveData.swift in Sources */,
@ -2934,7 +2849,6 @@
2EA11F5B27467EF800709571 /* OnboardingFooterView.swift in Sources */,
9EBDF96F291ECED4000A1A05 /* CaptureDeviceTestKey.swift in Sources */,
9EBDF949291D75BF000A1A05 /* DiskSpaceCheckerLiveKey.swift in Sources */,
66D50668271D9B6100E51F0D /* NavigationButtonStyle.swift in Sources */,
9E7225F6288AC71A00DF7F17 /* MultiLineTextFieldStore.swift in Sources */,
2EDA07A427EDE2A900D6F09B /* DebugFrame.swift in Sources */,
9E153A602920CE2700112F41 /* MnemonicLiveKey.swift in Sources */,
@ -2951,7 +2865,6 @@
34F682E529A75EB60022C079 /* WalletConfig.swift in Sources */,
9EAFEB9128081E9400199FC9 /* HomeStore.swift in Sources */,
9EBDF980291F8261000A1A05 /* AppVersionMocks.swift in Sources */,
F9971A5A27680DDE00A2DB75 /* RequestView.swift in Sources */,
9E7CB61A287310EC00A02233 /* QRCodeGenerator.swift in Sources */,
9E7FE0D5282D281800C374E8 /* Array+Chunked.swift in Sources */,
0DACFA8127208D940039EEA5 /* UInt+SuperscriptText.swift in Sources */,
@ -2963,7 +2876,6 @@
9EB8639C2923935B003D0F8B /* WalletStorageLiveKey.swift in Sources */,
9EB8639B2923935B003D0F8B /* WalletStorageInterface.swift in Sources */,
66DC733F271D88CC0053CBB6 /* StandardButtonStyle.swift in Sources */,
663FABA0271D876200E495F8 /* PrimaryButton.swift in Sources */,
663FAB9C271D874D00E495F8 /* ActiveButton.swift in Sources */,
9E612C6F2987A9B100D09B09 /* UIShareDialog.swift in Sources */,
9EBDF956291E5E86000A1A05 /* DatabaseFilesLiveKey.swift in Sources */,
@ -2973,7 +2885,6 @@
0DF2DC5427235E3E00FA31E2 /* View+InnerShadow.swift in Sources */,
9E153A70292167FF00112F41 /* ZcashSDKEnvironmentInterface.swift in Sources */,
9EAFEB84280597B700199FC9 /* SecItemInterface.swift in Sources */,
F9971A6B27680E1000A2DB75 /* WalletInfoStore.swift in Sources */,
9EBDF953291E5E86000A1A05 /* DatabaseFilesTestKey.swift in Sources */,
34F682F529A7641B0022C079 /* WalletConfigProviderTestKey.swift in Sources */,
9E7FE0F628327F6F00C374E8 /* ScanUIView.swift in Sources */,
@ -3033,7 +2944,6 @@
F9C165C42740403600592F76 /* TransactionSentView.swift in Sources */,
9E153A6E292167FF00112F41 /* ZcashSDKEnvironmentLiveKey.swift in Sources */,
9E0F5747297EE5F3005304FA /* WalletLogger.swift in Sources */,
F9971A5927680DDE00A2DB75 /* RequestStore.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@ -102,7 +102,7 @@ class LiveSDKSynchronizerClient: SDKSynchronizerClient {
}
func statusSnapshot() -> SyncStatusSnapshot {
guard let synchronizer = synchronizer else {
guard let synchronizer else {
return .default
}

View File

@ -10,11 +10,11 @@ import ComposableArchitecture
struct AddressDetailsView: View {
let store: AddressDetailsStore
var body: some View {
WithViewStore(store) { viewStore in
ScrollView {
Text("Unified Address")
Text("addressDetails.ua")
.fontWeight(.bold)
qrCode(viewStore.unifiedAddress)
.padding(30)
@ -24,7 +24,7 @@ struct AddressDetailsView: View {
viewStore.send(.copyUnifiedAddressToPastboard)
}
Text("Sapling Address")
Text("addressDetails.sa")
.fontWeight(.bold)
.padding(.top, 20)
qrCode(viewStore.saplingAddress)
@ -35,7 +35,7 @@ struct AddressDetailsView: View {
viewStore.send(.copySaplingAddressToPastboard)
}
Text("Transparent Address")
Text("addressDetails.ta")
.fontWeight(.bold)
.padding(.top, 20)
qrCode(viewStore.transparentAddress)
@ -56,7 +56,7 @@ extension AddressDetailsView {
func qrCode(_ qrText: String) -> some View {
Group {
if let img = QRCodeGenerator.generate(from: qrText) {
Image(img, scale: 1, label: Text(String(format: NSLocalizedString("QR Code for %@", comment: ""), "\(qrText)") ))
Image(img, scale: 1, label: Text("qrCodeFor".localized("\(qrText)")))
.cornerRadius(20)
.overlay(
RoundedRectangle(cornerRadius: 20)

View File

@ -17,27 +17,32 @@ struct BalanceBreakdownView: View {
VStack {
HStack {
Spacer()
Text("Block: \(viewStore.latestBlock)")
Text("balanceBreakdown.blockId".localized("\(viewStore.latestBlock)"))
.foregroundColor(Asset.Colors.Mfp.fontLight.color)
}
.padding(.horizontal, 50)
VStack(alignment: .leading, spacing: 10) {
balanceView(
title: "SHIELDED ZEC (SPENDABLE)",
title: "balanceBreakdown.ShieldedZec",
viewStore.shieldedBalance.data.total,
titleColor: Asset.Colors.Text.balanceText.color
titleColor: Asset.Colors.Mfp.fontDark.color
)
balanceView(title: "TRANSPARENT BALANCE", viewStore.transparentBalance.data.total)
balanceView(title: "TOTAL BALANCE", viewStore.totalBalance)
balanceView(title: "balanceBreakdown.transparentBalance", viewStore.transparentBalance.data.total)
balanceView(title: "balanceBreakdown.totalBalance", viewStore.totalBalance)
}
.padding(30)
.background(Asset.Colors.ScreenBackground.modalDialog.color)
.cornerRadius(8)
.background(Asset.Colors.Mfp.background.color)
.onAppear { viewStore.send(.onAppear) }
HStack {
Spacer()
Text("Auto Shielding Threshold: \(viewStore.autoShieldingThreshold.decimalString()) ZEC")
Text(
"balanceBreakdown.autoShieldingThreshold".localized(
"\(viewStore.autoShieldingThreshold.decimalString())"
)
)
.foregroundColor(Asset.Colors.Mfp.fontLight.color)
}
.padding(.horizontal, 50)
}
@ -53,13 +58,18 @@ struct BalanceBreakdownView: View {
}
extension BalanceBreakdownView {
func balanceView(title: String, _ balance: Zatoshi, titleColor: Color = .white) -> some View {
func balanceView(title: String, _ balance: Zatoshi, titleColor: Color = Asset.Colors.Mfp.fontDark.color) -> some View {
VStack(alignment: .leading) {
Text("\(title)")
.foregroundColor(titleColor)
Text("$\(balance.decimalString(formatter: NumberFormatter.zcashNumberFormatter8FractionDigits))")
.font(.custom(FontFamily.Zboto.regular.name, size: 40))
.foregroundColor(Color.white)
Text(
"balance".localized(
"\(balance.decimalString(formatter: NumberFormatter.zcashNumberFormatter8FractionDigits))"
)
)
.font(.system(size: 32))
.fontWeight(.bold)
.foregroundColor(Asset.Colors.Mfp.fontDark.color)
}
}
}
@ -67,6 +77,6 @@ extension BalanceBreakdownView {
struct BalanceBreakdown_Previews: PreviewProvider {
static var previews: some View {
BalanceBreakdownView(store: .placeholder)
.preferredColorScheme(.dark)
.preferredColorScheme(.light)
}
}

View File

@ -24,11 +24,13 @@ struct HomeView: View {
Button {
viewStore.send(.updateDestination(.transactionHistory))
} label: {
Text("See transaction history")
Text("home.transactionHistory")
.foregroundColor(Asset.Colors.Mfp.fontDark.color)
}
}
.applyScreenBackground()
.navigationBarHidden(true)
.navigationTitle("home.title")
.navigationBarTitleDisplayMode(.inline)
.onAppear(perform: { viewStore.send(.onAppear) })
.onDisappear(perform: { viewStore.send(.onDisappear) })
.alert(self.store.scope(state: \.alert), dismiss: .dismissAlert)
@ -43,6 +45,14 @@ struct HomeView: View {
isActive: viewStore.bindingForDestination(.transactionHistory),
destination: { WalletEventsFlowView(store: store.historyStore()) }
)
.navigationLinkEmpty(
isActive: viewStore.bindingForDestination(.send),
destination: { SendFlowView(store: store.sendStore()) }
)
.navigationLinkEmpty(
isActive: viewStore.bindingForDestination(.profile),
destination: { ProfileView(store: store.profileStore()) }
)
}
}
}
@ -51,64 +61,37 @@ struct HomeView: View {
extension HomeView {
func settingsButton(_ viewStore: HomeViewStore) -> some View {
Image(Asset.Assets.Icons.profile.name)
Image(systemName: "gear")
.resizable()
.frame(width: 60, height: 60)
.padding(.trailing, 15)
.frame(width: 30, height: 30)
.padding(15)
.navigationLink(
isActive: viewStore.bindingForDestination(.settings),
destination: {
SettingsView(store: store.settingsStore())
}
)
.tint(Asset.Colors.Mfp.primary.color)
}
func sendButton(_ viewStore: HomeViewStore) -> some View {
Text("Send ZEC")
.shadow(color: Asset.Colors.Buttons.buttonsTitleShadow.color, radius: 2, x: 0, y: 2)
.frame(
minWidth: 0,
maxWidth: .infinity,
minHeight: 0,
maxHeight: .infinity
)
.foregroundColor(Asset.Colors.Text.activeButtonText.color)
.background(Asset.Colors.Buttons.activeButton.color)
.cornerRadius(12)
.frame(height: 60)
.padding(.horizontal, 50)
.neumorphicButton()
.navigationLink(
isActive: viewStore.bindingForDestination(.send),
destination: {
SendFlowView(store: store.sendStore())
}
)
.padding(.bottom, 30)
Button(action: {
viewStore.send(.updateDestination(.send))
}, label: {
Text("home.sendZec")
})
.activeButtonStyle
.padding(.bottom, 30)
}
func receiveButton(_ viewStore: HomeViewStore) -> some View {
Text("Receive ZEC")
.shadow(color: Asset.Colors.Buttons.buttonsTitleShadow.color, radius: 2, x: 0, y: 2)
.frame(
minWidth: 0,
maxWidth: .infinity,
minHeight: 0,
maxHeight: .infinity
)
.foregroundColor(Asset.Colors.Text.activeButtonText.color)
.background(Asset.Colors.Buttons.activeButton.color)
.cornerRadius(12)
.frame(height: 60)
.padding(.horizontal, 50)
.neumorphicButton()
.navigationLink(
isActive: viewStore.bindingForDestination(.profile),
destination: {
ProfileView(store: store.profileStore())
}
)
.padding(.bottom, 30)
Button(action: {
viewStore.send(.updateDestination(.profile))
}, label: {
Text("home.receiveZec")
})
.activeButtonStyle
.padding(.bottom, 30)
}
func balance(_ viewStore: HomeViewStore) -> some View {
@ -116,20 +99,17 @@ extension HomeView {
Button {
viewStore.send(.updateDestination(.balanceBreakdown))
} label: {
Text("$\(viewStore.shieldedBalance.data.total.decimalString())")
.font(.custom(FontFamily.Zboto.regular.name, size: 40))
.foregroundColor(Asset.Colors.Text.balanceText.color)
Text("balance".localized("\(viewStore.shieldedBalance.data.total.decimalString())"))
.font(.system(size: 32))
.fontWeight(.bold)
.accessDebugMenuWithHiddenGesture {
viewStore.send(.debugMenuStartup)
}
}
Text("$\(viewStore.totalCurrencyBalance.decimalString())")
.font(.custom(FontFamily.Rubik.regular.name, size: 13))
.opacity(0.6)
Text("\(viewStore.synchronizerStatusSnapshot.message)")
.accessDebugMenuWithHiddenGesture {
viewStore.send(.debugMenuStartup)
}
}
.foregroundColor(Asset.Colors.Mfp.primary.color)
}
}
@ -140,10 +120,5 @@ struct HomeView_Previews: PreviewProvider {
NavigationView {
HomeView(store: .placeholder)
}
NavigationView {
HomeView(store: .placeholder)
.preferredColorScheme(.dark)
}
}
}

View File

@ -9,29 +9,15 @@ import SwiftUI
import ComposableArchitecture
struct ImportWalletView: View {
@Environment(\.presentationMode) var presentationMode
var store: ImportWalletStore
var body: some View {
WithViewStore(store) { viewStore in
VStack {
VStack(alignment: .leading, spacing: 30) {
HStack {
Button("Back") { presentationMode.wrappedValue.dismiss() }
.navigationButtonStyle
.frame(width: 75, height: 40)
Text("importWallet.title")
.titleText()
}
Text("importWallet.description")
.paragraphText()
.lineSpacing(4)
.opacity(0.53)
}
.padding(18)
Text("importWallet.description")
.font(.system(size: 27))
.fontWeight(.bold)
.foregroundColor(Asset.Colors.Mfp.fontDark.color)
ZStack {
ImportSeedEditor(store: store)
@ -42,7 +28,9 @@ struct ImportWalletView: View {
VStack {
Text("importWallet.birthday.description")
.paragraphText()
.font(.system(size: 16))
.fontWeight(.bold)
.foregroundColor(Asset.Colors.Mfp.fontDark.color)
TextField(
"importWallet.birthday.placeholder",
@ -61,12 +49,6 @@ struct ImportWalletView: View {
.importWalletButtonLayout()
.disabled(!viewStore.isValidForm)
Button("importWallet.button.importPrivateKey") {
viewStore.send(.importPrivateOrViewingKey)
}
.secondaryButtonStyle
.importWalletButtonLayout()
Spacer()
}
.navigationBarHidden(true)
@ -129,12 +111,8 @@ struct ImportWalletView_Previews: PreviewProvider {
ImportWalletView(store: .demo)
.preferredColorScheme(.light)
ImportWalletView(store: .demo)
.preferredColorScheme(.dark)
ImportWalletView(store: .demo)
.previewDevice(PreviewDevice(rawValue: "iPhone SE (2nd generation)"))
.preferredColorScheme(.light)
.environment(\.sizeCategory, .accessibilityLarge)
}
}

View File

@ -13,7 +13,7 @@ struct NotEnoughFreeSpaceView: View {
let viewStore: HomeViewStore
var body: some View {
Text("Not enough space on disk to do synchronisation!")
Text("nefs.message")
.applyScreenBackground()
}
}

View File

@ -24,7 +24,6 @@ struct OnboardingFlowReducer: ReducerProtocol {
let title: LocalizedStringKey
let description: LocalizedStringKey
let background: Image
let badge: Badge
}
var destination: Destination?
@ -117,29 +116,25 @@ extension OnboardingFlowReducer.State {
id: UUID(),
title: "onboarding.step1.title",
description: "onboarding.step1.description",
background: Asset.Assets.Backgrounds.callout1.image,
badge: .shield
background: Asset.Assets.Backgrounds.callout1.image
),
Step(
id: UUID(),
title: "onboarding.step2.title",
description: "onboarding.step2.description",
background: Asset.Assets.Backgrounds.callout2.image,
badge: .person
background: Asset.Assets.Backgrounds.callout2.image
),
Step(
id: UUID(),
title: "onboarding.step3.title",
description: "onboarding.step3.description",
background: Asset.Assets.Backgrounds.callout3.image,
badge: .list
background: Asset.Assets.Backgrounds.callout3.image
),
Step(
id: UUID(),
title: "onboarding.step4.title",
description: "onboarding.step4.description",
background: Asset.Assets.Backgrounds.callout4.image,
badge: .shield
background: Asset.Assets.Backgrounds.callout4.image
)
]
)

View File

@ -40,6 +40,8 @@ struct OnboardingScreen: View {
Spacer()
OnboardingFooterView(store: store)
Spacer()
}
.navigationBarHidden(true)
.applyScreenBackground()
@ -87,42 +89,5 @@ struct OnboardingScreen_Previews: PreviewProvider {
)
.preferredColorScheme(.light)
.previewDevice(PreviewDevice(rawValue: "iPhone 14 Pro"))
.environment(\.sizeCategory, .accessibilityLarge)
OnboardingScreen(
store: Store(
initialState: OnboardingFlowReducer.State(
walletConfig: .default,
importWalletState: .placeholder
),
reducer: OnboardingFlowReducer()
)
)
.preferredColorScheme(.dark)
.previewDevice(PreviewDevice(rawValue: "iPhone SE (2nd generation)"))
OnboardingScreen(
store: Store(
initialState: OnboardingFlowReducer.State(
walletConfig: .default,
importWalletState: .placeholder
),
reducer: OnboardingFlowReducer()
)
)
.preferredColorScheme(.dark)
.previewDevice(PreviewDevice(rawValue: "iPhone 8"))
OnboardingScreen(
store: Store(
initialState: OnboardingFlowReducer.State(
walletConfig: .default,
importWalletState: .placeholder
),
reducer: OnboardingFlowReducer()
)
)
.preferredColorScheme(.dark)
.previewDevice(PreviewDevice(rawValue: "iPhone 14 Pro"))
}
}

View File

@ -20,21 +20,18 @@ struct OnboardingFooterView: View {
viewStore.send(.createNewWallet, animation: .easeInOut(duration: animationDuration))
}
.activeButtonStyle
.onboardingFooterButtonLayout()
.minimumScaleFactor(0.1)
Button("onboarding.button.importWallet") {
viewStore.send(.importExistingWallet, animation: .easeInOut(duration: animationDuration))
}
.secondaryButtonStyle
.onboardingFooterButtonLayout()
.activeButtonStyle
.minimumScaleFactor(0.1)
} else {
Button("Next") {
Button("general.next") {
viewStore.send(.next, animation: .easeInOut(duration: animationDuration))
}
.primaryButtonStyle
.onboardingFooterButtonLayout()
.activeButtonStyle
.minimumScaleFactor(0.1)
ProgressView(
@ -97,16 +94,15 @@ struct OnboardingFooterView_Previews: PreviewProvider {
.applyScreenBackground()
.preferredColorScheme(.light)
.previewDevice("iPhone 14 Pro")
.environment(\.sizeCategory, .accessibilityLarge)
OnboardingFooterView(store: store)
.applyScreenBackground()
.preferredColorScheme(.dark)
.preferredColorScheme(.light)
.previewDevice("iPhone 13 Pro Max")
OnboardingFooterView(store: store)
.applyScreenBackground()
.preferredColorScheme(.dark)
.preferredColorScheme(.light)
.previewDevice("iPhone 13 mini")
}
}

View File

@ -28,10 +28,10 @@ struct OnboardingHeaderView: View {
VStack {
HStack {
if !viewStore.isInitialStep && viewStore.walletConfig.isEnabled(.onboardingFlow) {
Button("Back") {
Button("general.back") {
viewStore.send(.back, animation: .easeInOut(duration: animationDuration))
}
.navigationButtonStyle
.activeButtonStyle
.frame(width: 75)
.disabled(viewStore.isInitialStep)
.minimumScaleFactor(0.1)
@ -40,12 +40,12 @@ struct OnboardingHeaderView: View {
Spacer()
if !viewStore.isInitialStep && !viewStore.isFinalStep {
Button("Skip") {
Button("general.skip") {
viewStore.send(.skip, animation: .easeInOut(duration: animationDuration))
}
.navigationButtonStyle
.activeButtonStyle
.disabled(viewStore.isFinalStep)
.frame(width: 75)
.frame(width: 150)
.minimumScaleFactor(0.1)
}
}

View File

@ -48,7 +48,7 @@ extension ProfileView {
func qrCodeUA(_ qrText: String) -> some View {
Group {
if let img = QRCodeGenerator.generate(from: qrText) {
Image(img, scale: 1, label: Text(String(format: NSLocalizedString("QR Code for %@", comment: ""), "\(qrText)") ))
Image(img, scale: 1, label: Text("qrCodeFor".localized("\(qrText)")))
.cornerRadius(20)
.overlay(
RoundedRectangle(cornerRadius: 20)

View File

@ -17,12 +17,14 @@ struct RecoveryPhraseDisplayView: View {
if let groups = viewStore.phrase?.toGroups(groupSizeOverride: 2) {
VStack(spacing: 20) {
Text("recoveryPhraseDisplay.title")
.titleText()
.font(.system(size: 20))
.fontWeight(.bold)
.multilineTextAlignment(.center)
VStack(alignment: .center, spacing: 4) {
Text("recoveryPhraseDisplay.description")
.bodyText()
.font(.system(size: 16))
.padding(.horizontal, 20)
}
}
.padding(.top, 0)
@ -115,11 +117,5 @@ struct RecoveryPhraseDisplayView_Previews: PreviewProvider {
NavigationView {
RecoveryPhraseDisplayView(store: store)
}
.environment(\.sizeCategory, .accessibilityLarge)
NavigationView {
RecoveryPhraseDisplayView(store: store)
}
.preferredColorScheme(.dark)
}
}

View File

@ -100,7 +100,7 @@ struct RecoveryPhraseValidationFlowReducer: ReducerProtocol {
feedbackGenerator.generateErrorFeedback()
case .updateDestination(let destination):
guard let destination = destination else {
guard let destination else {
state = randomRecoveryPhrase.random(state.phrase)
return .none
}

View File

@ -107,14 +107,8 @@ struct RecoveryPhraseTestPreambleView_Previews: PreviewProvider {
RecoveryPhraseValidationFlowView(store: .demo)
}
RecoveryPhraseValidationFlowView(store: .demo)
.preferredColorScheme(.dark)
RecoveryPhraseValidationFlowView(store: .demo)
.previewDevice(PreviewDevice(rawValue: "iPhone SE (2nd generation)"))
RecoveryPhraseValidationFlowView(store: .demo)
.environment(\.sizeCategory, .accessibilityLarge)
}
}
}

View File

@ -101,16 +101,6 @@ struct RecoveryPhraseBackupValidationFailedView_Previews: PreviewProvider {
}
RecoveryPhraseBackupFailedView(store: .demo)
.preferredColorScheme(.dark)
RecoveryPhraseBackupFailedView(store: .demo)
.previewDevice(PreviewDevice(rawValue: "iPhone SE (2nd generation)"))
RecoveryPhraseBackupFailedView(store: .demo)
.environment(\.sizeCategory, .accessibilityLarge)
RecoveryPhraseBackupFailedView(store: .demo)
.environment(\.sizeCategory, .accessibilityLarge)
.previewDevice(PreviewDevice(rawValue: "iPhone SE (2nd generation)"))
}
}

View File

@ -63,7 +63,7 @@ struct RecoveryPhraseBackupSucceededView: View {
.fixedSize(horizontal: false, vertical: true)
}
)
.secondaryButtonStyle
.activeButtonStyle
.recoveryPhraseBackupValidationSucceededViewLayout()
}
}
@ -126,16 +126,6 @@ struct RecoveryPhraseBackupValidationSucceededView_Previews: PreviewProvider {
}
RecoveryPhraseBackupSucceededView(store: .demo)
.preferredColorScheme(.dark)
RecoveryPhraseBackupSucceededView(store: .demo)
.previewDevice(PreviewDevice(rawValue: "iPhone SE (2nd generation)"))
RecoveryPhraseBackupSucceededView(store: .demo)
.environment(\.sizeCategory, .accessibilityLarge)
RecoveryPhraseBackupSucceededView(store: .demo)
.environment(\.sizeCategory, .accessibilityLarge)
.previewDevice(PreviewDevice(rawValue: "iPhone SE (2nd generation)"))
}
}

View File

@ -180,6 +180,5 @@ struct RecoveryPhraseBackupView_Previews: PreviewProvider {
NavigationView {
RecoveryPhraseValidationFlowView(store: .demoStep1)
}
.preferredColorScheme(.dark)
}
}

View File

@ -1,33 +0,0 @@
import ComposableArchitecture
typealias RequestStore = Store<RequestReducer.State, RequestReducer.Action>
struct RequestReducer: ReducerProtocol {
struct State: Equatable { }
enum Action: Equatable {
case noOp
}
func reduce(into state: inout State, action: Action) -> ComposableArchitecture.EffectTask<Action> {
switch action {
default:
return .none
}
}
}
// MARK: Placeholders
extension RequestReducer.State {
static var placeholder: Self {
.init()
}
}
extension RequestStore {
static let placeholder = RequestStore(
initialState: .placeholder,
reducer: RequestReducer()
)
}

View File

@ -1,20 +0,0 @@
import SwiftUI
import ComposableArchitecture
struct RequestView: View {
let store: RequestStore
var body: some View {
WithViewStore(store) { _ in
Text("\(String(describing: Self.self)) PlaceHolder")
}
}
}
// MARK: - Previews
struct RequestView_Previews: PreviewProvider {
static var previews: some View {
RequestView(store: .placeholder)
}
}

View File

@ -101,12 +101,14 @@ private struct FeatureFlagWrapper: Identifiable, Equatable, Comparable {
private extension RootView {
@ViewBuilder func debugView(_ viewStore: RootViewStore) -> some View {
VStack(alignment: .leading) {
Button("Back") {
viewStore.goToDestination(.home)
if viewStore.destinationState.previousDestination == .home {
Button("general.back") {
viewStore.goToDestination(.home)
}
.activeButtonStyle
.frame(width: 75, height: 40, alignment: .leading)
.padding()
}
.navigationButtonStyle
.frame(width: 75, height: 40, alignment: .leading)
.padding()
List {
Section(header: Text("Navigation Stack Destinations")) {

View File

@ -12,7 +12,6 @@ struct SandboxReducer: ReducerProtocol {
case recoveryPhraseDisplay
case profile
case scan
case request
}
var walletEventsState: WalletEventsFlowReducer.State
var profileState: ProfileReducer.State

View File

@ -36,8 +36,6 @@ struct SandboxView: View {
ScanView(store: .placeholder)
case .profile:
ProfileView(store: store.profileStore())
case .request:
RequestView(store: .placeholder)
}
}

View File

@ -34,14 +34,14 @@ struct ScanView: View {
VStack {
Spacer()
Text("We will validate any Zcash URI and take you to the appropriate action.")
Text("scan.info")
.padding(.bottom, 10)
if let scannedValue = viewStore.scannedValue {
Text("\(scannedValue)")
.foregroundColor(viewStore.isValidValue ? .green : .red)
} else {
Text("Scanning...")
Text("scan.scanning")
}
}
.padding()

View File

@ -10,11 +10,13 @@ struct CreateTransaction: View {
return WithViewStore(store) { viewStore in
VStack {
VStack(spacing: 0) {
Text("\(viewStore.shieldedBalance.data.total.decimalString()) ZEC Available")
Text("Aditional funds may be in transit")
.font(.system(size: 13))
.opacity(0.6)
Text("balance.available".localized("\(viewStore.shieldedBalance.data.total.decimalString())"))
.font(.system(size: 32))
.fontWeight(.bold)
Text("send.fundsInfo")
.font(.system(size: 16))
}
.foregroundColor(Asset.Colors.Mfp.fontDark.color)
.padding()
TransactionAddressTextField(
@ -35,7 +37,7 @@ struct CreateTransaction: View {
MultipleLineTextField(
store: store.memoStore(),
title: "Write a private message here",
title: "send.memoPlaceholder",
titleAccessoryView: {}
)
.frame(height: 200)
@ -43,14 +45,13 @@ struct CreateTransaction: View {
Button(
action: { viewStore.send(.sendPressed) },
label: { Text("Send") }
label: { Text("general.send") }
)
.activeButtonStyle
.frame(height: 50)
.padding()
Spacer()
}
.navigationTitle("send.title")
.navigationBarTitleDisplayMode(.inline)
.padding()
.applyScreenBackground()

View File

@ -6,15 +6,15 @@ struct TransactionFailed: View {
var body: some View {
VStack {
Text("Sending transaction failed")
Text("send.failed")
Button(
action: {
viewStore.send(.updateDestination(.done))
},
label: { Text("Close") }
label: { Text("general.close") }
)
.primaryButtonStyle
.activeButtonStyle
.frame(height: 50)
.padding()

View File

@ -16,25 +16,18 @@ struct TransactionSendingView: View {
ZStack {
VStack(alignment: .center, spacing: 40) {
Spacer()
Text("Send \(viewStore.amount.decimalString()) ZEC to")
.foregroundColor(Asset.Colors.Text.forDarkBackground.color)
Text("send.sendingTo".localized("Sending \(viewStore.amount.decimalString())"))
.foregroundColor(Asset.Colors.Mfp.fontDark.color)
Text(viewStore.address)
.truncationMode(.middle)
.foregroundColor(Asset.Colors.Text.forDarkBackground.color)
.foregroundColor(Asset.Colors.Mfp.fontDark.color)
.lineLimit(1)
LottieAnimation(
isPlaying: true,
filename: "sendingTransaction",
animationType: .circularLoop
)
.frame(height: 48)
Spacer()
}
}
.applyAmberScreenBackground()
.applyScreenBackground()
.navigationBarHidden(true)
.navigationLinkEmpty(
isActive: viewStore.bindingForSuccess,

View File

@ -6,21 +6,21 @@ struct TransactionSent: View {
var body: some View {
VStack {
Text("Sending transaction succeeded")
Text("send.succeeded")
Button(
action: {
viewStore.send(.updateDestination(.done))
},
label: { Text("Close") }
label: { Text("general.close") }
)
.primaryButtonStyle
.activeButtonStyle
.frame(height: 50)
.padding()
Text("amount: \(viewStore.amount.decimalString())")
+ Text(" address: \(viewStore.address)")
+ Text(" memo: \(viewStore.memoState.text.data)")
Text("send.amount".localized("\(viewStore.amount.decimalString())"))
+ Text("send.address".localized("\(viewStore.address)"))
+ Text("send.memo".localized("\(viewStore.memoState.text.data)"))
Spacer()
}

View File

@ -8,12 +8,12 @@ struct SettingsView: View {
WithViewStore(store) { viewStore in
VStack(spacing: 40) {
Toggle(
"Enable Crash Reporting",
"settings.crashReporting",
isOn: viewStore.binding(\.$isCrashReportingOn)
)
Button(
action: { viewStore.send(.backupWalletAccessRequest) },
label: { Text("Backup Wallet") }
label: { Text("settings.backupWallet") }
)
.activeButtonStyle
.frame(height: 50)
@ -24,28 +24,28 @@ struct SettingsView: View {
if viewStore.exportLogsDisabled {
HStack {
ProgressView()
Text("Exporting...")
Text("settings.exporting")
}
} else {
Text("Export & share logs")
Text("settings.exportLogs")
}
}
)
.primaryButtonStyle
.activeButtonStyle
.frame(height: 50)
.disabled(viewStore.exportLogsDisabled)
Button(
action: { viewStore.send(.sendSupportMail) },
label: { Text("Send us feedback!") }
label: { Text("settings.feedback") }
)
.primaryButtonStyle
.activeButtonStyle
.frame(height: 50)
Spacer()
}
.padding(.horizontal, 30)
.navigationTitle("Settings")
.navigationTitle("settings.title")
.applyScreenBackground()
.navigationLinkEmpty(
isActive: viewStore.bindingForBackupPhrase,

View File

@ -23,23 +23,23 @@ struct TransactionDetailView: View {
VStack(alignment: .leading) {
switch transaction.status {
case .paid:
Text("You sent \(transaction.zecAmount.decimalString()) ZEC")
Text("transaction.youSent".localized("\(transaction.zecAmount.decimalString())"))
.padding()
address(mark: .inactive, viewStore: viewStore)
memo(transaction, viewStore, mark: .highlight)
case .pending:
Text("You are sending \(transaction.zecAmount.decimalString()) ZEC")
Text("transaction.youAreSending".localized("\(transaction.zecAmount.decimalString())"))
.padding()
address(mark: .inactive, viewStore: viewStore)
memo(transaction, viewStore, mark: .highlight)
case .received:
Text("You received \(transaction.zecAmount.decimalString()) ZEC")
Text("transaction.youReceived".localized("\(transaction.zecAmount.decimalString())"))
.padding()
address(mark: .inactive, viewStore: viewStore)
memo(transaction, viewStore, mark: .highlight)
case .failed:
Text("You DID NOT send \(transaction.zecAmount.decimalString()) ZEC")
Text("transaction.youDidNotSent".localized("\(transaction.zecAmount.decimalString())"))
.padding()
address(mark: .inactive, viewStore: viewStore)
memo(transaction, viewStore, mark: .highlight)
@ -52,7 +52,7 @@ struct TransactionDetailView: View {
Spacer()
}
.applyScreenBackground()
.navigationTitle("Transaction detail")
.navigationTitle("transactionDetail.title")
}
}
}
@ -62,12 +62,12 @@ extension TransactionDetailView {
HStack {
switch transaction.status {
case .pending:
Text("PENDING")
Text("transaction.pending")
Spacer()
case .failed:
Text("\(transaction.date?.asHumanReadable() ?? "date not available")")
Text("\(transaction.date?.asHumanReadable() ?? "general.dateNotAvailable")")
default:
Text("\(transaction.date?.asHumanReadable() ?? "date not available")")
Text("\(transaction.date?.asHumanReadable() ?? "general.dateNotAvailable")")
}
}
.padding()
@ -88,7 +88,7 @@ extension TransactionDetailView {
Group {
if let memoText = transaction.memos?.first?.toString() {
VStack(alignment: .leading) {
Text("With memo:")
Text("transaction.withMemo")
.padding(.leading)
Text("\"\(memoText)\"")
.multilineTextAlignment(.leading)
@ -102,16 +102,16 @@ extension TransactionDetailView {
func confirmed(mark: RowMark = .neutral, viewStore: WalletEventsFlowViewStore) -> some View {
HStack {
Text("Confirmed")
Text("transaction.confirmed")
Spacer()
Text("\(transaction.confirmationsWith(viewStore.latestMinedHeight)) times")
Text("transaction.confirmedTimes".localized("\(transaction.confirmationsWith(viewStore.latestMinedHeight))"))
}
.transactionDetailRow(mark: mark)
}
func confirming(mark: RowMark = .neutral, viewStore: WalletEventsFlowViewStore) -> some View {
HStack {
Text("Confirming ~\(viewStore.requiredTransactionConfirmations)mins")
Text("transaction.confirming".localized("\(viewStore.requiredTransactionConfirmations)"))
Spacer()
Text("\(transaction.confirmationsWith(viewStore.latestMinedHeight))/\(viewStore.requiredTransactionConfirmations)")
}
@ -121,12 +121,12 @@ extension TransactionDetailView {
extension TransactionDetailView {
var addressPrefixText: String {
transaction.status == .received ? "from" : "to"
transaction.status == .received ? "transaction.from" : "transaction.to"
}
var heightText: String {
guard let minedHeight = transaction.minedHeight else { return "unconfirmed" }
return minedHeight > 0 ? String(minedHeight) : "unconfirmed"
guard let minedHeight = transaction.minedHeight else { return "transaction.unconfirmed" }
return minedHeight > 0 ? String(minedHeight) : "transaction.unconfirmed"
}
}
@ -186,7 +186,7 @@ struct TransactionDetail_Previews: PreviewProvider {
TransactionDetailView(
transaction:
TransactionState(
errorMessage: "possible roll back",
errorMessage: "error.rollBack",
memos: [Memo.placeholder],
minedHeight: 1_875_256,
zAddress: "t1gXqfSSQt6WfpwyuCU3Wi7sSVZ66DYQ3Po",
@ -205,7 +205,7 @@ struct TransactionDetail_Previews: PreviewProvider {
TransactionDetailView(
transaction:
TransactionState(
errorMessage: "possible roll back",
errorMessage: "error.rollBack",
memos: [Memo.placeholder],
minedHeight: 1_875_256,
zAddress: "t1gXqfSSQt6WfpwyuCU3Wi7sSVZ66DYQ3Po",
@ -224,7 +224,7 @@ struct TransactionDetail_Previews: PreviewProvider {
TransactionDetailView(
transaction:
TransactionState(
errorMessage: "possible roll back",
errorMessage: "error.rollBack",
memos: [Memo.placeholder],
minedHeight: 1_875_256,
zAddress: "t1gXqfSSQt6WfpwyuCU3Wi7sSVZ66DYQ3Po",
@ -243,7 +243,7 @@ struct TransactionDetail_Previews: PreviewProvider {
TransactionDetailView(
transaction:
TransactionState(
errorMessage: "possible roll back",
errorMessage: "error.rollBack",
memos: [Memo.placeholder],
minedHeight: 1_875_256,
zAddress: "t1gXqfSSQt6WfpwyuCU3Wi7sSVZ66DYQ3Po",

View File

@ -16,33 +16,28 @@ struct TransactionRowView: View {
icon
HStack {
VStack {
HStack {
Text(operationTitle)
.font(.custom(FontFamily.Rubik.regular.name, size: 14))
Spacer()
Text(transaction.status == .received ? "+" : "")
.font(.custom(FontFamily.Rubik.regular.name, size: 17))
+ Text("\(transaction.zecAmount.decimalString()) ZEC")
.font(.custom(FontFamily.Rubik.regular.name, size: 17))
}
.padding(.trailing, 30)
VStack(alignment: .leading) {
Text(operationTitle)
.font(.system(size: 16))
.foregroundColor(Asset.Colors.Mfp.fontDark.color)
HStack {
Text(transaction.address)
.foregroundColor(Asset.Colors.Text.transactionRowSubtitle.color)
.font(.custom(FontFamily.Rubik.regular.name, size: 12))
.truncationMode(.middle)
.lineLimit(1)
Spacer(minLength: 80)
// TODO: [#311] - Get the ZEC price from the SDK, https://github.com/zcash/secant-ios-wallet/issues/311
}
.padding(.trailing, 15)
Text("\(transaction.date?.asHumanReadable() ?? "general.dateNotAvailable")")
.font(.system(size: 16))
.foregroundColor(Asset.Colors.Mfp.fontDark.color)
.opacity(0.5)
}
Spacer()
Group {
Text(transaction.unarySymbol)
.font(.system(size: 16))
.foregroundColor(Asset.Colors.Mfp.fontDark.color)
+ Text("balance".localized("\(transaction.zecAmount.decimalString())"))
.font(.system(size: 16))
.foregroundColor(Asset.Colors.Mfp.fontDark.color)
}
.padding(.trailing, 30)
}
.padding(.leading, 80)
@ -62,38 +57,36 @@ extension TransactionRowView {
var operationTitle: String {
switch transaction.status {
case .paid:
return "You sent"
return "transaction.sent"
case .received:
return "Unknown paid you"
return "transaction.received"
case .failed:
// TODO: [#392] final text to be provided (https://github.com/zcash/secant-ios-wallet/issues/392)
return "Transaction failed"
return "transaction.failed"
case .pending:
return "You are sending"
return "transaction.sending"
}
}
var icon: some View {
HStack {
switch transaction.status {
case .paid, .received:
Image(transaction.status == .received ? Asset.Assets.Icons.received.name : Asset.Assets.Icons.sent.name)
case .paid, .received, .pending:
Image(systemName: "arrow.forward")
.resizable()
.frame(width: 60, height: 60)
.frame(width: 12, height: 12)
.foregroundColor(transaction.status == .received ? .yellow : .white)
.padding(10)
.background(Asset.Colors.Mfp.primary.color)
.cornerRadius(40)
.rotationEffect(Angle(degrees: transaction.status == .received ? 135 : -45))
.padding(.leading, 14)
case .failed:
// TODO: [#392] final icon to be provided (https://github.com/zcash/secant-ios-wallet/issues/392)
Circle()
.frame(width: 30, height: 30)
.foregroundColor(Color.red)
.padding(15)
case .pending:
LottieAnimation(
isPlaying: true,
filename: "endlessCircleProgress",
animationType: .circularLoop
)
.frame(width: 60, height: 60)
.scaleEffect(0.45)
}
Spacer()
@ -115,7 +108,48 @@ struct TransactionRowView_Previews: PreviewProvider {
zecAmount: Zatoshi(123_000_000)
)
)
.preferredColorScheme(.dark)
.applyScreenBackground()
.previewLayout(.fixed(width: 428, height: 60))
TransactionRowView(
transaction:
.init(
zAddress: "t1gXqfSSQt6WfpwyuCU3Wi7sSVZ66DYQ3Po",
fee: Zatoshi(10),
id: "2",
status: .failed,
timestamp: 1234567,
zecAmount: Zatoshi(123_000_000)
)
)
.applyScreenBackground()
.previewLayout(.fixed(width: 428, height: 60))
TransactionRowView(
transaction:
.init(
zAddress: "t1gXqfSSQt6WfpwyuCU3Wi7sSVZ66DYQ3Po",
fee: Zatoshi(10),
id: "2",
status: .pending,
timestamp: 1234567,
zecAmount: Zatoshi(123_000_000)
)
)
.applyScreenBackground()
.previewLayout(.fixed(width: 428, height: 60))
TransactionRowView(
transaction:
.init(
zAddress: "t1gXqfSSQt6WfpwyuCU3Wi7sSVZ66DYQ3Po",
fee: Zatoshi(10),
id: "2",
status: .received,
timestamp: 1234567,
zecAmount: Zatoshi(123_000_000)
)
)
.applyScreenBackground()
.previewLayout(.fixed(width: 428, height: 60))
}

View File

@ -138,14 +138,14 @@ extension WalletEventsFlowViewStore {
func bindingForSelectedWalletEvent(_ walletEvent: WalletEvent?) -> Binding<Bool> {
self.binding(
get: {
guard let walletEvent = walletEvent else {
guard let walletEvent else {
return false
}
return $0.destination.map(/WalletEventsFlowReducer.State.Destination.showWalletEvent) == walletEvent
},
send: { isActive in
guard let walletEvent = walletEvent else {
guard let walletEvent else {
return WalletEventsFlowReducer.Action.updateDestination(nil)
}

View File

@ -9,7 +9,7 @@ struct WalletEventsFlowView: View {
List {
walletEventsList(with: viewStore)
}
.navigationTitle("Transactions")
.navigationTitle("transactions.title")
.listStyle(.plain)
.onAppear { viewStore.send(.onAppear) }
.onDisappear(perform: { viewStore.send(.onDisappear) })
@ -28,8 +28,6 @@ extension WalletEventsFlowView {
viewStore.send(.updateDestination(.showWalletEvent(walletEvent)))
}
.listRowInsets(EdgeInsets())
.foregroundColor(Asset.Colors.Text.body.color)
.listRowBackground(Color.clear)
.frame(height: 60)
}
}
@ -41,7 +39,7 @@ struct TransactionView_Previews: PreviewProvider {
static var previews: some View {
NavigationView {
WalletEventsFlowView(store: .placeholder)
.preferredColorScheme(.dark)
.preferredColorScheme(.light)
}
}
}

View File

@ -1,16 +0,0 @@
import ComposableArchitecture
struct WalletInfoReducer: ReducerProtocol {
struct State: Equatable { }
enum Action: Equatable {
case noOp
}
func reduce(into state: inout State, action: Action) -> ComposableArchitecture.EffectTask<Action> {
switch action {
default:
return .none
}
}
}

View File

@ -1,15 +0,0 @@
import SwiftUI
struct WalletInfoView: View {
var body: some View {
Text("\(String(describing: Self.self)) PlaceHolder")
}
}
// MARK: - Previews
struct WalletInfoView_Previews: PreviewProvider {
static var previews: some View {
WalletInfoView()
}
}

View File

@ -12,32 +12,23 @@ struct WelcomeView: View {
var store: WelcomeStore
var body: some View {
GeometryReader { proxy in
ZStack(alignment: .top) {
VStack(alignment: .center, spacing: 80) {
let diameter = proxy.size.width - 40
ZcashBadge()
.frame(
width: diameter,
height: diameter
)
.accessDebugMenuWithHiddenGesture {
ViewStore(store).send(.debugMenuStartup)
}
VStack {
Text("welcomeScreen.title")
.titleText()
Text("welcomeScreen.subtitle")
.captionText()
}
}
VStack(alignment: .center, spacing: 80) {
VStack {
Image(Asset.Assets.welcomeScreenLogo.name)
.resizable()
.frame(width: 210, height: 210)
.padding(.bottom, 14)
Text("welcomeScreen.title")
.font(.system(size: 23))
}
.accessDebugMenuWithHiddenGesture {
ViewStore(store).send(.debugMenuStartup)
}
.frame(alignment: .center)
.applyScreenBackground()
.animation(.easeInOut, value: 3)
}
.frame(alignment: .center)
.applyScreenBackground()
.animation(.easeInOut, value: 3)
}
}
@ -55,7 +46,7 @@ struct WelcomeView_Previews: PreviewProvider {
height: squarePreviewSize
)
)
.preferredColorScheme(.dark)
.preferredColorScheme(.light)
ZStack {
ZcashBadge()
@ -72,7 +63,7 @@ struct WelcomeView_Previews: PreviewProvider {
Group {
WelcomeView(store: .demo)
.preferredColorScheme(.dark)
.preferredColorScheme(.light)
WelcomeView(store: .demo)
.previewDevice("iPhone SE (2nd generation)")

View File

@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/>
<capability name="Named colors" minToolsVersion="9.0"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
@ -18,18 +17,26 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" insetsLayoutMarginsFromSafeArea="NO" image="WelcomeScreenLogo" translatesAutoresizingMaskIntoConstraints="NO" id="PMT-qL-kFu">
<rect key="frame" x="-50" y="136" width="534" height="534"/>
<rect key="frame" x="102" y="333" width="210" height="210"/>
<constraints>
<constraint firstAttribute="width" secondItem="PMT-qL-kFu" secondAttribute="height" multiplier="1:1" id="Tb7-cZ-TOW"/>
<constraint firstAttribute="width" constant="210" id="MNN-qz-URJ"/>
<constraint firstAttribute="height" constant="210" id="saZ-Pi-QsA"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by Zcash" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zpy-Bm-Lc4">
<rect key="frame" x="115.5" y="567" width="183" height="27"/>
<fontDescription key="fontDescription" type="system" pointSize="23"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
<color key="backgroundColor" name="staticWelcomeScreen"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="PMT-qL-kFu" secondAttribute="trailing" constant="-70" id="B39-CY-qht"/>
<constraint firstItem="PMT-qL-kFu" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" constant="-50" id="dyI-Ot-rd6"/>
<constraint firstItem="PMT-qL-kFu" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="0.45" id="mhm-28-Jn1"/>
<constraint firstItem="PMT-qL-kFu" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" constant="-10" id="RVp-3N-uj5"/>
<constraint firstItem="zpy-Bm-Lc4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="X5h-E9-yUF"/>
<constraint firstItem="PMT-qL-kFu" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="bVu-ST-xoh"/>
<constraint firstItem="zpy-Bm-Lc4" firstAttribute="top" secondItem="PMT-qL-kFu" secondAttribute="bottom" constant="24" id="uam-gl-TNs"/>
</constraints>
</view>
</viewController>
@ -39,9 +46,6 @@
</scene>
</scenes>
<resources>
<image name="WelcomeScreenLogo" width="537.5" height="522"/>
<namedColor name="staticWelcomeScreen">
<color red="0.8901960784313725" green="0.93725490196078431" blue="0.97647058823529409" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor>
<image name="WelcomeScreenLogo" width="105" height="105"/>
</resources>
</document>

View File

@ -21,29 +21,29 @@ struct SyncStatusSnapshot: Equatable {
static func snapshotFor(state: SyncStatus) -> SyncStatusSnapshot {
switch state {
case .enhancing(let enhanceProgress):
return SyncStatusSnapshot(state, "Enhancing tx \(enhanceProgress.enhancedTransactions) of \(enhanceProgress.totalTransactions)")
case .enhancing:
return SyncStatusSnapshot(state, "Enhancing tx")
case .fetching:
return SyncStatusSnapshot(state, "fetching UTXOs")
case .disconnected:
return SyncStatusSnapshot(state, "disconnected 💔")
return SyncStatusSnapshot(state, "disconnected")
case .stopped:
return SyncStatusSnapshot(state, "Stopped 🚫")
return SyncStatusSnapshot(state, "Stopped")
case .synced:
return SyncStatusSnapshot(state, "Up-To-Date")
case .unprepared:
return SyncStatusSnapshot(state, "Unprepared 😅")
return SyncStatusSnapshot(state, "Unprepared")
case .error(let err):
return SyncStatusSnapshot(state, "Error: \(err.localizedDescription)")
case .syncing(let progress):
return SyncStatusSnapshot(state, "Syncing \(progress)")
return SyncStatusSnapshot(state, "\(String(format: "%0.2f", progress.progress))% Synced")
}
}
}

View File

@ -33,6 +33,17 @@ struct TransactionState: Equatable, Identifiable {
var address: String {
zAddress ?? ""
}
var unarySymbol: String {
switch status {
case .paid, .pending:
return "-"
case .received:
return "+"
case .failed:
return ""
}
}
var date: Date? {
guard let timestamp else { return nil }

View File

@ -41,10 +41,12 @@ extension WalletEvent {
// TODO: [#390] implement design once shielding is supported
// https://github.com/zcash/secant-ios-wallet/issues/390
Text("shielded wallet event \(zatoshi.decimalString())")
.padding(.leading, 30)
case .walletImport:
// TODO: [#391] implement design once shielding is supported
// https://github.com/zcash/secant-ios-wallet/issues/391
Text("wallet import wallet event")
.padding(.leading, 30)
}
}
}
@ -84,6 +86,16 @@ private extension WalletEvent {
default: return .send(.placeholder)
}
}
static func mockedWalletEventState(atIndex: Int) -> WalletEvent.WalletEventState {
switch atIndex % 4 {
case 0: return .received(.statePlaceholder(.received))
case 1: return .failed(.statePlaceholder(.failed))
case 2: return .pending(.statePlaceholder(.pending))
case 3: return .send(.placeholder)
default: return .send(.placeholder)
}
}
}
extension IdentifiedArrayOf where Element == WalletEvent {
@ -92,7 +104,7 @@ extension IdentifiedArrayOf where Element == WalletEvent {
uniqueElements: (0..<30).map {
WalletEvent(
id: String($0),
state: WalletEvent.randomWalletEventState(),
state: WalletEvent.mockedWalletEventState(atIndex: $0),
timestamp: 1234567
)
}

View File

@ -1,56 +0,0 @@
{
"images" : [
{
"filename" : "iconbank_lighttheme.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "iconbank_darktheme.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "iconbank_lighttheme@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "iconbank_darktheme@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "iconbank_lighttheme@3x.png",
"idiom" : "universal",
"scale" : "3x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "iconbank_darktheme@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,21 +0,0 @@
{
"images" : [
{
"filename" : "checkmark.pdf",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -1,56 +0,0 @@
{
"images" : [
{
"filename" : "iconlist_lighttheme.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "iconlist_darktheme.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "iconlist_lighttheme@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "iconlist_darktheme@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "iconlist_lighttheme@3x.png",
"idiom" : "universal",
"scale" : "3x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "iconlist_darktheme@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,56 +0,0 @@
{
"images" : [
{
"filename" : "iconperson_lighttheme.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "iconperson_darktheme.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "iconperson_lighttheme@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "iconperson_darktheme@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "iconperson_lighttheme@3x.png",
"idiom" : "universal",
"scale" : "3x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "iconperson_darktheme@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 494 B

After

Width:  |  Height:  |  Size: 494 B

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 546 B

After

Width:  |  Height:  |  Size: 546 B

View File

@ -1,23 +0,0 @@
{
"images" : [
{
"filename" : "received.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "received@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "received@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -1,23 +0,0 @@
{
"images" : [
{
"filename" : "sent.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "sent@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "sent@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -1,56 +0,0 @@
{
"images" : [
{
"filename" : "iconshield_lighttheme.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "iconshield_darktheme.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "iconshield_lighttheme@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "iconshield_darktheme@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "iconshield_lighttheme@3x.png",
"idiom" : "universal",
"scale" : "3x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "iconshield_darktheme@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

View File

@ -1,56 +0,0 @@
{
"images" : [
{
"filename" : "swapicon_lighttheme.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "swapicon_darktheme.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "swapicon_lighttheme@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "swapicon_darktheme@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "swapicon_lighttheme@3x.png",
"idiom" : "universal",
"scale" : "3x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "swapicon_darktheme@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 599 B

View File

@ -1,52 +1,8 @@
{
"images" : [
{
"filename" : "LightLogo.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "DarkLogo.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "LightLogo@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "DarkLogo@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "LightLogo@3x.png",
"idiom" : "universal",
"scale" : "3x"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "DarkLogo@3x.png",
"idiom" : "universal",
"scale" : "3x"
"filename" : "eccLogo.png",
"idiom" : "universal"
}
],
"info" : {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 341 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 600 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 506 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 936 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Some files were not shown because too many files have changed in this diff Show More