|
@ -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;
|
||||
};
|
||||
|
|
|
@ -102,7 +102,7 @@ class LiveSDKSynchronizerClient: SDKSynchronizerClient {
|
|||
}
|
||||
|
||||
func statusSnapshot() -> SyncStatusSnapshot {
|
||||
guard let synchronizer = synchronizer else {
|
||||
guard let synchronizer else {
|
||||
return .default
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
)
|
||||
]
|
||||
)
|
||||
|
|
|
@ -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"))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)"))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)"))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -180,6 +180,5 @@ struct RecoveryPhraseBackupView_Previews: PreviewProvider {
|
|||
NavigationView {
|
||||
RecoveryPhraseValidationFlowView(store: .demoStep1)
|
||||
}
|
||||
.preferredColorScheme(.dark)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
)
|
||||
}
|
|
@ -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)
|
||||
}
|
||||
}
|
|
@ -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")) {
|
||||
|
|
|
@ -12,7 +12,6 @@ struct SandboxReducer: ReducerProtocol {
|
|||
case recoveryPhraseDisplay
|
||||
case profile
|
||||
case scan
|
||||
case request
|
||||
}
|
||||
var walletEventsState: WalletEventsFlowReducer.State
|
||||
var profileState: ProfileReducer.State
|
||||
|
|
|
@ -36,8 +36,6 @@ struct SandboxView: View {
|
|||
ScanView(store: .placeholder)
|
||||
case .profile:
|
||||
ProfileView(store: store.profileStore())
|
||||
case .request:
|
||||
RequestView(store: .placeholder)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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))
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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()
|
||||
}
|
||||
}
|
|
@ -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)")
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 }
|
||||
|
|
|
@ -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
|
||||
)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 11 KiB |
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 10 KiB |
|
@ -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
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 494 B After Width: | Height: | Size: 494 B |
Before Width: | Height: | Size: 733 B After Width: | Height: | Size: 733 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 546 B After Width: | Height: | Size: 546 B |
Before Width: | Height: | Size: 715 B After Width: | Height: | Size: 715 B |
Before Width: | Height: | Size: 770 B After Width: | Height: | Size: 770 B |
|
@ -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
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 4.5 KiB |
|
@ -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
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 4.5 KiB |
|
@ -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
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 7.9 KiB |
|
@ -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
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 271 B |
Before Width: | Height: | Size: 424 B |
Before Width: | Height: | Size: 552 B |
Before Width: | Height: | Size: 298 B |
Before Width: | Height: | Size: 463 B |
Before Width: | Height: | Size: 599 B |
|
@ -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" : {
|
||||
|
|
Before Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 341 KiB |
Before Width: | Height: | Size: 600 KiB |
Before Width: | Height: | Size: 161 KiB |
Before Width: | Height: | Size: 506 KiB |
Before Width: | Height: | Size: 936 KiB |
After Width: | Height: | Size: 11 KiB |