diff --git a/AlphaWallet.xcodeproj/project.pbxproj b/AlphaWallet.xcodeproj/project.pbxproj index 79d39346e..2a32e7103 100644 --- a/AlphaWallet.xcodeproj/project.pbxproj +++ b/AlphaWallet.xcodeproj/project.pbxproj @@ -33,7 +33,6 @@ 291ED08B1F6F5D2100E7E93A /* Bundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291ED08A1F6F5D2100E7E93A /* Bundle.swift */; }; 291ED08D1F6F5F0A00E7E93A /* KeyStoreError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291ED08C1F6F5F0A00E7E93A /* KeyStoreError.swift */; }; 291ED08F1F6F613200E7E93A /* GetTransactionRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291ED08E1F6F613200E7E93A /* GetTransactionRequest.swift */; }; - 291F52A21F6B6DCF00B369AB /* EtherClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291F52A11F6B6DCF00B369AB /* EtherClient.swift */; }; 291F52A51F6B762300B369AB /* EtherServiceRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291F52A41F6B762300B369AB /* EtherServiceRequest.swift */; }; 291F52A71F6B766100B369AB /* BalanceRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291F52A61F6B766100B369AB /* BalanceRequest.swift */; }; 291F52A91F6B7BE100B369AB /* BlockNumber.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291F52A81F6B7BE100B369AB /* BlockNumber.swift */; }; @@ -48,15 +47,12 @@ 29282B531F7630970067F88D /* TokenUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29282B521F7630970067F88D /* TokenUpdate.swift */; }; 293112101FC4ADCB00966EEA /* InCoordinatorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2931120F1FC4ADCB00966EEA /* InCoordinatorViewModel.swift */; }; 293112121FC4F48400966EEA /* ServiceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 293112111FC4F48400966EEA /* ServiceProvider.swift */; }; - 2931122E1FC94E4200966EEA /* SettingsError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2931122D1FC94E4200966EEA /* SettingsError.swift */; }; - 293112351FC9A0D500966EEA /* CallRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 293112341FC9A0D500966EEA /* CallRequest.swift */; }; 293112371FC9A24600966EEA /* UIGestureRecognizer+Closure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 293112361FC9A24600966EEA /* UIGestureRecognizer+Closure.swift */; }; 2932045C1F8DCD6E0095B7C1 /* CurrencyRate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2932045B1F8DCD6E0095B7C1 /* CurrencyRate.swift */; }; 2932045E1F8EEE760095B7C1 /* BalanceCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2932045D1F8EEE760095B7C1 /* BalanceCoordinator.swift */; }; 29336FE71F6B245D005E3BFC /* WelcomeViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29A13E271F6A903500E432A2 /* WelcomeViewModelTests.swift */; }; 29358D991F78D1E400925D61 /* SnapshotHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29358D981F78D1E400925D61 /* SnapshotHelper.swift */; }; 29358D9F1F78D5B700925D61 /* Screenshots.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29358D9E1F78D5B700925D61 /* Screenshots.swift */; }; - 29358DA91F79FD1C00925D61 /* CALayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29358DA81F79FD1C00925D61 /* CALayer.swift */; }; 293B8B411F707F4600356286 /* TransactionViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 293B8B401F707F4600356286 /* TransactionViewModel.swift */; }; 293B8B431F70815900356286 /* BalanceTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 293B8B421F70815900356286 /* BalanceTitleView.swift */; }; 293B8B451F70A20200356286 /* TransactionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 293B8B441F70A20200356286 /* TransactionViewCell.swift */; }; @@ -72,7 +68,6 @@ 294EC1D81FD7FBAB0065EB20 /* BiometryAuthenticationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294EC1D71FD7FBAB0065EB20 /* BiometryAuthenticationType.swift */; }; 294EC1DA1FD8E4E60065EB20 /* GasPriceRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294EC1D91FD8E4E60065EB20 /* GasPriceRequest.swift */; }; 295247DF1F8326EF007FDC31 /* AccountViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295247DE1F8326EF007FDC31 /* AccountViewCell.swift */; }; - 295247E71F835BA0007FDC31 /* InfoHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295247E61F835BA0007FDC31 /* InfoHeaderView.swift */; }; 295996031FAA865800DB66A8 /* TokensCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295996021FAA865800DB66A8 /* TokensCoordinatorTests.swift */; }; 2959960C1FAB03EC00DB66A8 /* CoinbaseBuyWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2959960B1FAB03EC00DB66A8 /* CoinbaseBuyWidget.swift */; }; 2959960E1FAB05C200DB66A8 /* TransactionsEmptyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2959960D1FAB05C100DB66A8 /* TransactionsEmptyView.swift */; }; @@ -81,7 +76,6 @@ 2959961C1FAE3EDF00DB66A8 /* TrustClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2959961B1FAE3EDF00DB66A8 /* TrustClient.swift */; }; 2959961F1FAE759700DB66A8 /* RawTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2959961E1FAE759700DB66A8 /* RawTransaction.swift */; }; 295A59381F71C1B90092F0FC /* AccountsCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295A59371F71C1B90092F0FC /* AccountsCoordinator.swift */; }; - 295B61D11FE7B20400642E60 /* TokensHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295B61D01FE7B20400642E60 /* TokensHeaderView.swift */; }; 295B61D41FE7D5B500642E60 /* CurrencyFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295B61D31FE7D5B500642E60 /* CurrencyFormatter.swift */; }; 295B61D61FE7FC8300642E60 /* FakeTokensDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295B61D51FE7FC8300642E60 /* FakeTokensDataStore.swift */; }; 296105931FA2AA2100292494 /* SignTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 296105921FA2AA2100292494 /* SignTransaction.swift */; }; @@ -112,7 +106,6 @@ 2981F4731F8303E600CA6590 /* TransactionCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2981F4721F8303E600CA6590 /* TransactionCoordinatorTests.swift */; }; 29850D251F6B27A800791A49 /* R.generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29850D241F6B27A800791A49 /* R.generated.swift */; }; 29850D2B1F6B30FF00791A49 /* TransactionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29850D2A1F6B30FF00791A49 /* TransactionViewController.swift */; }; - 298542E31FBA722F00CB5081 /* ContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 298542E21FBA722F00CB5081 /* ContainerView.swift */; }; 298542E51FBA9B0700CB5081 /* ShapeShift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 298542E41FBA9B0700CB5081 /* ShapeShift.swift */; }; 298542E81FBAD0B200CB5081 /* OperationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 298542E71FBAD0B200CB5081 /* OperationType.swift */; }; 298542F31FBD594D00CB5081 /* SettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 298542F21FBD594D00CB5081 /* SettingsViewModel.swift */; }; @@ -162,7 +155,6 @@ 29C0FCE1200DA94A004A13CB /* SignMessageCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29C0FCE0200DA94A004A13CB /* SignMessageCoordinator.swift */; }; 29C0FCE5200EBAF6004A13CB /* TokenType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29C0FCE4200EBAF6004A13CB /* TokenType.swift */; }; 29C70C712016C7780072E454 /* SentTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29C70C702016C7780072E454 /* SentTransaction.swift */; }; - 29C70C7C201990540072E454 /* SendTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29C70C7B201990540072E454 /* SendTransaction.swift */; }; 29C70C7F20199AEB0072E454 /* WKWebViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29C70C7E20199AEB0072E454 /* WKWebViewConfiguration.swift */; }; 29C80D371FB2CD230037B1E0 /* PendingTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29C80D361FB2CD230037B1E0 /* PendingTransaction.swift */; }; 29C80D491FB51C380037B1E0 /* Dictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29C80D481FB51C380037B1E0 /* Dictionary.swift */; }; @@ -205,7 +197,6 @@ 29F114F61FA8147300114A29 /* RequestCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29F114F51FA8147300114A29 /* RequestCoordinator.swift */; }; 29F114F81FA8165200114A29 /* SendCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29F114F71FA8165200114A29 /* SendCoordinatorTests.swift */; }; 29F114FA1FA817A800114A29 /* RequestCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29F114F91FA817A800114A29 /* RequestCoordinatorTests.swift */; }; - 29F1C84C1FEC4F6F003780D8 /* TokensFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29F1C84B1FEC4F6F003780D8 /* TokensFooterView.swift */; }; 29F1C85120032688003780D8 /* Address.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29F1C85020032688003780D8 /* Address.swift */; }; 29F1C853200363B2003780D8 /* PassphraseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29F1C852200363B2003780D8 /* PassphraseViewController.swift */; }; 29F1C85620036887003780D8 /* AppTrackerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29F1C85520036887003780D8 /* AppTrackerTests.swift */; }; @@ -234,7 +225,6 @@ 29FF130A1F75F67200AFD326 /* Address.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29FF13091F75F67200AFD326 /* Address.swift */; }; 29FF130D1F7626E800AFD326 /* FakeNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29FF130C1F7626E800AFD326 /* FakeNavigationController.swift */; }; 29FF6D6B2011D2AF00A3011C /* InCoordinatorError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29FF6D6A2011D2AF00A3011C /* InCoordinatorError.swift */; }; - 29FF6D73201200D500A3011C /* FieldAppereance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29FF6D72201200D500A3011C /* FieldAppereance.swift */; }; 442FC01053E2F1B59355A961 /* Arguments.swift in Sources */ = {isa = PBXBuildFile; fileRef = 442FCC7DC5A13C023F7F2C26 /* Arguments.swift */; }; 442FC0B59B23C0F3068621C0 /* NumberStepper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 442FC575B6A4A50B0555E1B0 /* NumberStepper.swift */; }; 442FC249C2A39F85BDBD7987 /* GetDecimalsCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 442FC0F2E3BB3EE420BC2C16 /* GetDecimalsCoordinator.swift */; }; @@ -270,7 +260,6 @@ 5E7C70BE9AE35408038E1971 /* HelpContentsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C7B089FD4C96810DD10FD /* HelpContentsViewController.swift */; }; 5E7C70CF1C732CE07D074A8B /* BookmarksStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C7AB4464F82391AAD68C1 /* BookmarksStore.swift */; }; 5E7C70E4E194FEA5DA2F610C /* CryptoKitty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C7382EAC8B9CE5EE0668D /* CryptoKitty.swift */; }; - 5E7C70FF17622C0FFD45A542 /* AlphaWalletSettingPushRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C7D2AAB777BF35B8B56BD /* AlphaWalletSettingPushRow.swift */; }; 5E7C710331196CD591B51785 /* LockCreatePasscodeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C741196D9D9C9C3EE5E30 /* LockCreatePasscodeViewController.swift */; }; 5E7C7110A4DF17DA65B912AC /* EnterSellTokensCardPriceQuantityViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C7ABB1538A0E83EEAEB0C /* EnterSellTokensCardPriceQuantityViewControllerTests.swift */; }; 5E7C713ACE8C72642B1C9F93 /* SendHeaderViewViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C7B7A45EDFA8ED1E25863 /* SendHeaderViewViewModel.swift */; }; @@ -353,7 +342,6 @@ 5E7C774B5332AC0DC19C5B1B /* EthTokenViewCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C74B82783A94091A43470 /* EthTokenViewCellViewModel.swift */; }; 5E7C776BE1B19F824954962D /* BaseTokenCardTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C7F5C10E3895E805EA7E0 /* BaseTokenCardTableViewCell.swift */; }; 5E7C776CF721EBBD43195926 /* GenerateSellMagicLinkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C79CF6150E4CD4A276FC0 /* GenerateSellMagicLinkViewController.swift */; }; - 5E7C778398A1C4C6B5D0B07F /* CookiesStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C76359B0C05E7FCE51AF4 /* CookiesStore.swift */; }; 5E7C7788984F7ADCFE5B4DE0 /* AddressTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C75B5AF76279A71395FC7 /* AddressTextField.swift */; }; 5E7C7788FA549A0402BB33CB /* HiddenContract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C7C01F8C42D7A43792C26 /* HiddenContract.swift */; }; 5E7C7793AB6B577906F2BCA3 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C7AFE9AF9FE6B58C925D4 /* SettingsViewController.swift */; }; @@ -413,7 +401,6 @@ 5E7C7D5843B705ACD26E9090 /* AssetDefinitionDiskBackingStoreWithOverridesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C79EF9D2C12F396364B92 /* AssetDefinitionDiskBackingStoreWithOverridesTests.swift */; }; 5E7C7D71D3184F44C397FFE7 /* HelpViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C715F395B973FB61056CF /* HelpViewController.swift */; }; 5E7C7D8173CB1089D622DA38 /* HelpViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C7646352F10C96B5FC6F6 /* HelpViewCell.swift */; }; - 5E7C7D8AFC9BA1E8C1D05167 /* TokenCardSellInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C74A2C738BF2412D412A7 /* TokenCardSellInfoViewController.swift */; }; 5E7C7DCE5242D2AC0A8DA65C /* TokenCardRowViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C7CAA3D0C19444005EA83 /* TokenCardRowViewModel.swift */; }; 5E7C7DD4D2EAA036961F18F0 /* DAppRequster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C778A54D7D3E196BC5542 /* DAppRequster.swift */; }; 5E7C7DD506747B6224C28721 /* TransferTokensCardViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7C7E2486CDE31871C98FC7 /* TransferTokensCardViewModel.swift */; }; @@ -492,7 +479,6 @@ 76F1DD10DF9A6C844E5F57D6 /* CreateRedeemTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76F1D8877226D5DD086B135D /* CreateRedeemTests.swift */; }; 76F1DEFF94F9A1F67BDF2735 /* UniversalLinkHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76F1DCD54618349AC91C6DF8 /* UniversalLinkHandler.swift */; }; 76F1DF0A4667F618D2BAE78C /* GetIsERC721Encode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76F1DC1E229431AA75EF94C3 /* GetIsERC721Encode.swift */; }; - 771A847520322FD700528D28 /* PreferencesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 771A847420322FD700528D28 /* PreferencesViewModel.swift */; }; 771A8485203242B400528D28 /* InCoordinatorViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 771A8484203242B400528D28 /* InCoordinatorViewModelTests.swift */; }; 771AA94E1FF971CD00D25403 /* DappAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 771AA94D1FF971CD00D25403 /* DappAction.swift */; }; 771AA960200D5E8800D25403 /* PassphraseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 771AA95F200D5E8800D25403 /* PassphraseView.swift */; }; @@ -608,7 +594,6 @@ 291ED08A1F6F5D2100E7E93A /* Bundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bundle.swift; sourceTree = ""; }; 291ED08C1F6F5F0A00E7E93A /* KeyStoreError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyStoreError.swift; sourceTree = ""; }; 291ED08E1F6F613200E7E93A /* GetTransactionRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GetTransactionRequest.swift; sourceTree = ""; }; - 291F52A11F6B6DCF00B369AB /* EtherClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EtherClient.swift; sourceTree = ""; }; 291F52A41F6B762300B369AB /* EtherServiceRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EtherServiceRequest.swift; sourceTree = ""; }; 291F52A61F6B766100B369AB /* BalanceRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BalanceRequest.swift; sourceTree = ""; }; 291F52A81F6B7BE100B369AB /* BlockNumber.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockNumber.swift; sourceTree = ""; }; @@ -623,14 +608,11 @@ 29282B521F7630970067F88D /* TokenUpdate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokenUpdate.swift; sourceTree = ""; }; 2931120F1FC4ADCB00966EEA /* InCoordinatorViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InCoordinatorViewModel.swift; sourceTree = ""; }; 293112111FC4F48400966EEA /* ServiceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServiceProvider.swift; sourceTree = ""; }; - 2931122D1FC94E4200966EEA /* SettingsError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsError.swift; sourceTree = ""; }; - 293112341FC9A0D500966EEA /* CallRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallRequest.swift; sourceTree = ""; }; 293112361FC9A24600966EEA /* UIGestureRecognizer+Closure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIGestureRecognizer+Closure.swift"; sourceTree = ""; }; 2932045B1F8DCD6E0095B7C1 /* CurrencyRate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyRate.swift; sourceTree = ""; }; 2932045D1F8EEE760095B7C1 /* BalanceCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BalanceCoordinator.swift; sourceTree = ""; }; 29358D981F78D1E400925D61 /* SnapshotHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SnapshotHelper.swift; path = fastlane/SnapshotHelper.swift; sourceTree = SOURCE_ROOT; }; 29358D9E1F78D5B700925D61 /* Screenshots.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Screenshots.swift; sourceTree = ""; }; - 29358DA81F79FD1C00925D61 /* CALayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CALayer.swift; sourceTree = ""; }; 293B8B401F707F4600356286 /* TransactionViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionViewModel.swift; sourceTree = ""; }; 293B8B421F70815900356286 /* BalanceTitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BalanceTitleView.swift; sourceTree = ""; }; 293B8B441F70A20200356286 /* TransactionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionViewCell.swift; sourceTree = ""; }; @@ -646,7 +628,6 @@ 294EC1D71FD7FBAB0065EB20 /* BiometryAuthenticationType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BiometryAuthenticationType.swift; sourceTree = ""; }; 294EC1D91FD8E4E60065EB20 /* GasPriceRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GasPriceRequest.swift; sourceTree = ""; }; 295247DE1F8326EF007FDC31 /* AccountViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountViewCell.swift; sourceTree = ""; }; - 295247E61F835BA0007FDC31 /* InfoHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoHeaderView.swift; sourceTree = ""; }; 295996021FAA865800DB66A8 /* TokensCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokensCoordinatorTests.swift; sourceTree = ""; }; 2959960B1FAB03EC00DB66A8 /* CoinbaseBuyWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoinbaseBuyWidget.swift; sourceTree = ""; }; 2959960D1FAB05C100DB66A8 /* TransactionsEmptyView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransactionsEmptyView.swift; sourceTree = ""; }; @@ -655,7 +636,6 @@ 2959961B1FAE3EDF00DB66A8 /* TrustClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrustClient.swift; sourceTree = ""; }; 2959961E1FAE759700DB66A8 /* RawTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RawTransaction.swift; sourceTree = ""; }; 295A59371F71C1B90092F0FC /* AccountsCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsCoordinator.swift; sourceTree = ""; }; - 295B61D01FE7B20400642E60 /* TokensHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokensHeaderView.swift; sourceTree = ""; }; 295B61D31FE7D5B500642E60 /* CurrencyFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyFormatter.swift; sourceTree = ""; }; 295B61D51FE7FC8300642E60 /* FakeTokensDataStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FakeTokensDataStore.swift; sourceTree = ""; }; 296105921FA2AA2100292494 /* SignTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignTransaction.swift; sourceTree = ""; }; @@ -686,7 +666,6 @@ 2981F4721F8303E600CA6590 /* TransactionCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionCoordinatorTests.swift; sourceTree = ""; }; 29850D241F6B27A800791A49 /* R.generated.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = R.generated.swift; sourceTree = ""; }; 29850D2A1F6B30FF00791A49 /* TransactionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionViewController.swift; sourceTree = ""; }; - 298542E21FBA722F00CB5081 /* ContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContainerView.swift; sourceTree = ""; }; 298542E41FBA9B0700CB5081 /* ShapeShift.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShapeShift.swift; sourceTree = ""; }; 298542E71FBAD0B200CB5081 /* OperationType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OperationType.swift; sourceTree = ""; }; 298542F21FBD594D00CB5081 /* SettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewModel.swift; sourceTree = ""; }; @@ -738,7 +717,6 @@ 29C0FCE0200DA94A004A13CB /* SignMessageCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignMessageCoordinator.swift; sourceTree = ""; }; 29C0FCE4200EBAF6004A13CB /* TokenType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokenType.swift; sourceTree = ""; }; 29C70C702016C7780072E454 /* SentTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentTransaction.swift; sourceTree = ""; }; - 29C70C7B201990540072E454 /* SendTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendTransaction.swift; sourceTree = ""; }; 29C70C7E20199AEB0072E454 /* WKWebViewConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WKWebViewConfiguration.swift; sourceTree = ""; }; 29C80D361FB2CD230037B1E0 /* PendingTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PendingTransaction.swift; sourceTree = ""; }; 29C80D481FB51C380037B1E0 /* Dictionary.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dictionary.swift; sourceTree = ""; }; @@ -781,7 +759,6 @@ 29F114F51FA8147300114A29 /* RequestCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestCoordinator.swift; sourceTree = ""; }; 29F114F71FA8165200114A29 /* SendCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendCoordinatorTests.swift; sourceTree = ""; }; 29F114F91FA817A800114A29 /* RequestCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestCoordinatorTests.swift; sourceTree = ""; }; - 29F1C84B1FEC4F6F003780D8 /* TokensFooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokensFooterView.swift; sourceTree = ""; }; 29F1C85020032688003780D8 /* Address.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Address.swift; sourceTree = ""; }; 29F1C852200363B2003780D8 /* PassphraseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PassphraseViewController.swift; sourceTree = ""; }; 29F1C85520036887003780D8 /* AppTrackerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppTrackerTests.swift; sourceTree = ""; }; @@ -810,7 +787,6 @@ 29FF13091F75F67200AFD326 /* Address.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Address.swift; sourceTree = ""; }; 29FF130C1F7626E800AFD326 /* FakeNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FakeNavigationController.swift; sourceTree = ""; }; 29FF6D6A2011D2AF00A3011C /* InCoordinatorError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InCoordinatorError.swift; sourceTree = ""; }; - 29FF6D72201200D500A3011C /* FieldAppereance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FieldAppereance.swift; sourceTree = ""; }; 442FC002CDEA792B8ECD3E13 /* GetERC875BalanceCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetERC875BalanceCoordinator.swift; sourceTree = ""; }; 442FC084706C14853B4A7B31 /* Event.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Event.swift; sourceTree = ""; }; 442FC0F2E3BB3EE420BC2C16 /* GetDecimalsCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetDecimalsCoordinator.swift; sourceTree = ""; }; @@ -890,7 +866,6 @@ 5E7C7419F47CC8B2996AA8F9 /* TransferTokensCardQuantitySelectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransferTokensCardQuantitySelectionViewController.swift; sourceTree = ""; }; 5E7C743172FCBDCD362C03A6 /* ImportWalletTabBar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportWalletTabBar.swift; sourceTree = ""; }; 5E7C7487BDF72352446E1266 /* ImportTokenViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportTokenViewControllerTests.swift; sourceTree = ""; }; - 5E7C74A2C738BF2412D412A7 /* TokenCardSellInfoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TokenCardSellInfoViewController.swift; sourceTree = ""; }; 5E7C74B82783A94091A43470 /* EthTokenViewCellViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EthTokenViewCellViewModel.swift; sourceTree = ""; }; 5E7C74B9EB81C51E956566E7 /* TokensDataStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TokensDataStore.swift; sourceTree = ""; }; 5E7C74BEC095303B66FB4B1E /* ProtectionCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProtectionCoordinator.swift; sourceTree = ""; }; @@ -915,7 +890,6 @@ 5E7C7607B0EF9B8F1BC41073 /* TermsOfServiceViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TermsOfServiceViewController.swift; sourceTree = ""; }; 5E7C7624D6F7EA55F6F167B3 /* GenerateSellMagicLinkViewControllerViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenerateSellMagicLinkViewControllerViewModel.swift; sourceTree = ""; }; 5E7C7633741EA2029D541466 /* XMLHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XMLHandler.swift; sourceTree = ""; }; - 5E7C76359B0C05E7FCE51AF4 /* CookiesStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CookiesStore.swift; sourceTree = ""; }; 5E7C7646352F10C96B5FC6F6 /* HelpViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HelpViewCell.swift; sourceTree = ""; }; 5E7C764B98F526271E4C2A6A /* StaticHTMLViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaticHTMLViewController.swift; sourceTree = ""; }; 5E7C765E0DC0174E9788CCF9 /* EnterSellTokensCardPriceQuantityViewControllerViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterSellTokensCardPriceQuantityViewControllerViewModel.swift; sourceTree = ""; }; @@ -999,7 +973,6 @@ 5E7C7CDB0BAD5D27D2F24F57 /* ServerViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServerViewCell.swift; sourceTree = ""; }; 5E7C7CFDE7DEA8C06C4100AF /* TextField.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextField.swift; sourceTree = ""; }; 5E7C7D07B7D0738A1832AB58 /* AssetDefinitionInMemoryBackingStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AssetDefinitionInMemoryBackingStore.swift; sourceTree = ""; }; - 5E7C7D2AAB777BF35B8B56BD /* AlphaWalletSettingPushRow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AlphaWalletSettingPushRow.swift; path = Views/AlphaWalletSettingPushRow.swift; sourceTree = ""; }; 5E7C7D46C7CABC31A7477F37 /* GenerateTransferMagicLinkViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenerateTransferMagicLinkViewController.swift; sourceTree = ""; }; 5E7C7D4F7C566EDD30EF1C19 /* HowDoITransferETHIntoMyWalletInfoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HowDoITransferETHIntoMyWalletInfoViewController.swift; sourceTree = ""; }; 5E7C7D5F3CAE69CF932AB236 /* LockPasscodeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LockPasscodeViewController.swift; sourceTree = ""; }; @@ -1070,7 +1043,6 @@ 76F1DE8ADA3176D0277EDF20 /* OrderSigningTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OrderSigningTests.swift; sourceTree = ""; }; 76F1DF5CF4A922E6FFCB7B2A /* GetContractInteractions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetContractInteractions.swift; sourceTree = ""; }; 76F1DF80932454E9F58B7830 /* CreateRedeem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateRedeem.swift; sourceTree = ""; }; - 771A847420322FD700528D28 /* PreferencesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewModel.swift; sourceTree = ""; }; 771A8484203242B400528D28 /* InCoordinatorViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InCoordinatorViewModelTests.swift; sourceTree = ""; }; 771AA94D1FF971CD00D25403 /* DappAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DappAction.swift; sourceTree = ""; }; 771AA95F200D5E8800D25403 /* PassphraseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PassphraseView.swift; sourceTree = ""; }; @@ -1431,7 +1403,6 @@ 29C9F5F81F720BD30025C494 /* FloatLabelCell.swift */, 29C9F5FA1F720C050025C494 /* FloatLabelTextField.swift */, 29DBF2A61F9F145900327C60 /* StateViewModel.swift */, - 298542E21FBA722F00CB5081 /* ContainerView.swift */, 29DF40091FD3E80A000077CA /* TabBarController.swift */, 442FC575B6A4A50B0555E1B0 /* NumberStepper.swift */, 5E7C75918317E13AD540DCA7 /* RoundedBackground.swift */, @@ -1465,7 +1436,6 @@ 2959961D1FAE756400DB66A8 /* TrustClient */, 291F52B61F6B870400B369AB /* CastError.swift */, 2961BD061FB146EB00C4B840 /* ChainState.swift */, - 291F52A11F6B6DCF00B369AB /* EtherClient.swift */, 291F52B81F6B880F00B369AB /* EtherKeystore.swift */, 291F52A41F6B762300B369AB /* EtherServiceRequest.swift */, 29F114ED1FA65DEF00114A29 /* ImportType.swift */, @@ -1488,7 +1458,6 @@ 291ED08E1F6F613200E7E93A /* GetTransactionRequest.swift */, 296AF9A81F737F6F0058AF78 /* SendRawTransactionRequest.swift */, 296AF9AA1F7380920058AF78 /* GetTransactionCountRequest.swift */, - 293112341FC9A0D500966EEA /* CallRequest.swift */, 294EC1D91FD8E4E60065EB20 /* GasPriceRequest.swift */, 664D11A02007D59F0041A0B0 /* EstimateGasRequest.swift */, ); @@ -1769,8 +1738,6 @@ isa = PBXGroup; children = ( AA26C627204134C500318B9B /* TokenCardTableViewCellWithoutCheckbox.swift */, - 295B61D01FE7B20400642E60 /* TokensHeaderView.swift */, - 29F1C84B1FEC4F6F003780D8 /* TokensFooterView.swift */, 5E7C796039C0F47CDCA236C0 /* TokenCardsViewControllerHeader.swift */, 5E7C7C077372C3F2A4349FA1 /* TokenViewCell.swift */, 5E7C7C58586099F082973073 /* WalletFilterView.swift */, @@ -1792,7 +1759,6 @@ 294DFBA81FE6EBFB004CEB56 /* NewTokenViewController.swift */, 5E7C778F20D32B70D7FF2135 /* TokenCardRedemptionInfoViewController.swift */, 5E7C764B98F526271E4C2A6A /* StaticHTMLViewController.swift */, - 5E7C74A2C738BF2412D412A7 /* TokenCardSellInfoViewController.swift */, 5E7C7B3302309706CA0F972A /* TokensViewController.swift */, 5E7C7CC48CA7A1EA7D539C87 /* VerifiableStatusViewController.swift */, ); @@ -1858,7 +1824,6 @@ 29F1C85E200369BA003780D8 /* HelpUsViewModel.swift */, 298542F21FBD594D00CB5081 /* SettingsViewModel.swift */, 7721A6CD202EFC21004DB16C /* AddCustomNetworkViewModel.swift */, - 771A847420322FD700528D28 /* PreferencesViewModel.swift */, 5E7C7FCE2427A30ACD860DF8 /* ServerViewModel.swift */, 5E7C7CBEBF984CFCA29D6866 /* ServersViewModel.swift */, 5E7C7FB99843529061368DA1 /* LocalesViewModel.swift */, @@ -1895,7 +1860,6 @@ 2977CAE41F7E0B69009682A0 /* Coordinators */, 29FC9BC71F83144D000209CD /* ViewControllers */, 29FC9BC81F83145C000209CD /* Types */, - 5E7C7D2AAB777BF35B8B56BD /* AlphaWalletSettingPushRow.swift */, 5E7C7534FB6BF4D199643246 /* AlphaWalletSettingsSwitchRow.swift */, 5E7C71EBD4C95AD4E11F3352 /* AlphaWalletSettingsButtonRow.swift */, 5E7C71684B93F60206992E10 /* AlphaWalletSettingsTextRow.swift */, @@ -1915,7 +1879,6 @@ 29BE3FCF1F7071A200F6BFC2 /* UIColor.swift */, 29FF12F51F74799D00AFD326 /* NSAttributedString.swift */, 29FF12F71F747D6C00AFD326 /* Error.swift */, - 29358DA81F79FD1C00925D61 /* CALayer.swift */, 29E2E3391F7A008C000CF94A /* UIView.swift */, 290B2B5E1F9177860053C83E /* UIImage.swift */, 291A1B681F980E3400ADEC80 /* StackViewController.swift */, @@ -2300,7 +2263,6 @@ 298542F41FBD8E6A00CB5081 /* ConfigExplorer.swift */, 298542FA1FBEA03300CB5081 /* SendInputErrors.swift */, 293112111FC4F48400966EEA /* ServiceProvider.swift */, - 2931122D1FC94E4200966EEA /* SettingsError.swift */, 294EC1D71FD7FBAB0065EB20 /* BiometryAuthenticationType.swift */, 739533961FEFF5FD0084AFAB /* Currency.swift */, 7721A6C7202EF81B004DB16C /* CustomRPC.swift */, @@ -2324,10 +2286,8 @@ isa = PBXGroup; children = ( 29FF12FA1F74CC8200AFD326 /* EthereumAddressRule.swift */, - 295247E61F835BA0007FDC31 /* InfoHeaderView.swift */, 2963B6AC1F981A96003063C1 /* TransactionAppearance.swift */, 29F114F11FA7966300114A29 /* PrivateKeyRule.swift */, - 29FF6D72201200D500A3011C /* FieldAppereance.swift */, 77872D312027AA4A0032D687 /* SliderTextFieldRow.swift */, ); path = Form; @@ -2649,7 +2609,6 @@ isa = PBXGroup; children = ( 5E7C7AB4464F82391AAD68C1 /* BookmarksStore.swift */, - 5E7C76359B0C05E7FCE51AF4 /* CookiesStore.swift */, 5E7C7AB627E023FFD95F2276 /* HistoryStore.swift */, ); path = Storage; @@ -2860,7 +2819,6 @@ children = ( 771AA94D1FF971CD00D25403 /* DappAction.swift */, 775C00B420195BFB001B5EBC /* BrowserAction.swift */, - 29C70C7B201990540072E454 /* SendTransaction.swift */, 29FA00CB201CA63C002F7DC5 /* Method.swift */, 29FA00CD201CA64E002F7DC5 /* DappCommand.swift */, 29FA00CF201CA66A002F7DC5 /* DAppError.swift */, @@ -3477,7 +3435,6 @@ 295A59381F71C1B90092F0FC /* AccountsCoordinator.swift in Sources */, 299B5E2D1FCBC0660051361C /* BalanceProtocol.swift in Sources */, 296421971F70C1F200EB363B /* ErrorView.swift in Sources */, - 29358DA91F79FD1C00925D61 /* CALayer.swift in Sources */, 29C80D491FB51C380037B1E0 /* Dictionary.swift in Sources */, 77872D232023F43B0032D687 /* TransactionsTracker.swift in Sources */, 29FA00CE201CA64E002F7DC5 /* DappCommand.swift in Sources */, @@ -3508,7 +3465,6 @@ 291D73C61F7F500D00A8AB56 /* TransactionItemState.swift in Sources */, 29BE3FD21F707DC300F6BFC2 /* TransactionDataCoordinator.swift in Sources */, 29F1C85120032688003780D8 /* Address.swift in Sources */, - 295B61D11FE7B20400642E60 /* TokensHeaderView.swift in Sources */, AA574E632054ECA400F4B3AF /* RestClient.swift in Sources */, 29FA00D4201EC662002F7DC5 /* NSObject.swift in Sources */, 299B5E341FCBC5180051361C /* ConfirmPaymentViewModel.swift in Sources */, @@ -3528,7 +3484,6 @@ 29282B531F7630970067F88D /* TokenUpdate.swift in Sources */, 29F1C85D2003698A003780D8 /* WellDoneViewController.swift in Sources */, 29E9CFCF1FE7347200017744 /* ERCToken.swift in Sources */, - 29FF6D73201200D500A3011C /* FieldAppereance.swift in Sources */, 29C9F5FB1F720C050025C494 /* FloatLabelTextField.swift in Sources */, 296421951F70C1EC00EB363B /* LoadingView.swift in Sources */, 2961BD071FB146EB00C4B840 /* ChainState.swift in Sources */, @@ -3538,12 +3493,10 @@ 295B61D41FE7D5B500642E60 /* CurrencyFormatter.swift in Sources */, 296421991F70C1F900EB363B /* EmptyView.swift in Sources */, 298542E51FBA9B0700CB5081 /* ShapeShift.swift in Sources */, - 29C70C7C201990540072E454 /* SendTransaction.swift in Sources */, 771AA962200D5EC700D25403 /* PassphraseViewModel.swift in Sources */, 73C41C71201B46AD00243C6C /* LockEnterPasscodeViewModel.swift in Sources */, 2959960C1FAB03EC00DB66A8 /* CoinbaseBuyWidget.swift in Sources */, 291A1B671F98092F00ADEC80 /* ConfirmPaymentViewController.swift in Sources */, - 2931122E1FC94E4200966EEA /* SettingsError.swift in Sources */, 29FA00D0201CA66A002F7DC5 /* DAppError.swift in Sources */, 291EC9DF1F7053C50004EDD0 /* NavigationController.swift in Sources */, 2995739F1FA1F294006F17FD /* QRURLParser.swift in Sources */, @@ -3562,7 +3515,6 @@ AA26C62620412C9A00318B9B /* ContractERC875Transfer.swift in Sources */, 7721A6CC202EFBC5004DB16C /* AddCustomNetworkViewController.swift in Sources */, 77872D322027AA4A0032D687 /* SliderTextFieldRow.swift in Sources */, - 298542E31FBA722F00CB5081 /* ContainerView.swift in Sources */, 2923D9B11FDA49D8000CF3F8 /* Initializer.swift in Sources */, 294DFBAE1FE6F254004CEB56 /* TokenObject.swift in Sources */, 29CAEB8E1F70A2FB00F7357D /* TransactionCellViewModel.swift in Sources */, @@ -3613,12 +3565,10 @@ 77872D292025116E0032D687 /* EnterPasswordCoordinator.swift in Sources */, 298542FB1FBEA03300CB5081 /* SendInputErrors.swift in Sources */, 29EB102A1F6CBD23000907A4 /* UIAlertController.swift in Sources */, - 771A847520322FD700528D28 /* PreferencesViewModel.swift in Sources */, 296AF9A51F736BA20058AF78 /* Config.swift in Sources */, 7721A6C8202EF81B004DB16C /* CustomRPC.swift in Sources */, 29E9CFCD1FE7343C00017744 /* NewTokenViewModel.swift in Sources */, AAEB8DA2204BC7B700CB0B2C /* RedeemTokenViewController.swift in Sources */, - 291F52A21F6B6DCF00B369AB /* EtherClient.swift in Sources */, 299B5E421FD2298E0051361C /* ConfigureTransactionViewController.swift in Sources */, 294DFBA31FE0E2EA004CEB56 /* TransactionValue.swift in Sources */, 2912CD2B1F6A833E00C6CBE3 /* TransactionsViewController.swift in Sources */, @@ -3646,9 +3596,7 @@ 7721A6CE202EFC21004DB16C /* AddCustomNetworkViewModel.swift in Sources */, 291A1B691F980E3400ADEC80 /* StackViewController.swift in Sources */, 73C41C73201B5EFF00243C6C /* LockCreatePasscodeViewModel.swift in Sources */, - 295247E71F835BA0007FDC31 /* InfoHeaderView.swift in Sources */, 29B6AED61F7CA4A700EC6DE3 /* TransactionConfiguration.swift in Sources */, - 29F1C84C1FEC4F6F003780D8 /* TokensFooterView.swift in Sources */, 29F114F41FA8117C00114A29 /* SendCoordinator.swift in Sources */, 293B8B411F707F4600356286 /* TransactionViewModel.swift in Sources */, 77B3BF4A2019247200EEC15A /* BrowserNavigationBar.swift in Sources */, @@ -3671,7 +3619,6 @@ 29F114F61FA8147300114A29 /* RequestCoordinator.swift in Sources */, 73ED85A520349BE400593BF3 /* StringFormatter.swift in Sources */, 293112101FC4ADCB00966EEA /* InCoordinatorViewModel.swift in Sources */, - 293112351FC9A0D500966EEA /* CallRequest.swift in Sources */, 291F52A91F6B7BE100B369AB /* BlockNumber.swift in Sources */, 739533971FEFF5FD0084AFAB /* Currency.swift in Sources */, 298542F31FBD594D00CB5081 /* SettingsViewModel.swift in Sources */, @@ -3728,7 +3675,6 @@ 5E7C70BE9AE35408038E1971 /* HelpContentsViewController.swift in Sources */, 5E7C7C21E5CAF122AA4F6617 /* HowDoIGetMyMoneyInfoViewController.swift in Sources */, 5E7C7FE8247F0E50BEF35D77 /* HowDoITransferETHIntoMyWalletInfoViewController.swift in Sources */, - 5E7C7D8AFC9BA1E8C1D05167 /* TokenCardSellInfoViewController.swift in Sources */, 5E7C77E844D710D7AFBC58D4 /* RequestViewController.swift in Sources */, 5E7C701BFF4469B35A074EB9 /* RequestViewModel.swift in Sources */, 5E7C7CF3BB38045FA40F38AE /* PrivacyPolicyViewController.swift in Sources */, @@ -3738,7 +3684,6 @@ 5E7C7AB6950E43BD6E8D0CBE /* TokensViewController.swift in Sources */, 5E7C7FC0770A411DB09F8C09 /* TokenViewCell.swift in Sources */, 5E7C7CF43176653FFCE86644 /* SettingsCoordinator.swift in Sources */, - 5E7C70FF17622C0FFD45A542 /* AlphaWalletSettingPushRow.swift in Sources */, 5E7C7C9E89056069C8FEFA76 /* AlphaWalletSettingsSwitchRow.swift in Sources */, 5E7C731B88842C036A74A039 /* AlphaWalletSettingsButtonRow.swift in Sources */, 5E7C7FAF2A07E7AE21BF09AF /* AlphaWalletSettingsTextRow.swift in Sources */, @@ -3878,7 +3823,6 @@ 5E7C729D43F311810652B1D5 /* UIActivityViewController.swift in Sources */, 5E7C7BC8F2E31F4E2BA534D9 /* Ether.swift in Sources */, 5E7C70CF1C732CE07D074A8B /* BookmarksStore.swift in Sources */, - 5E7C778398A1C4C6B5D0B07F /* CookiesStore.swift in Sources */, 5E7C7E2E47ED7EDD5C127D1D /* HistoryStore.swift in Sources */, 5E7C7E7C719E9B11A402D059 /* BookmarksViewModel.swift in Sources */, 5E7C709168AFA09B5D2926FB /* BookmarkViewModel.swift in Sources */, diff --git a/AlphaWallet/AppCoordinator.swift b/AlphaWallet/AppCoordinator.swift index ec4275cfa..fb67b22a0 100644 --- a/AlphaWallet/AppCoordinator.swift +++ b/AlphaWallet/AppCoordinator.swift @@ -8,26 +8,31 @@ import BigInt class AppCoordinator: NSObject, Coordinator { private let config: Config let navigationController: UINavigationController - lazy var welcomeViewController: WelcomeViewController = { + private lazy var welcomeViewController: WelcomeViewController = { let controller = WelcomeViewController() controller.delegate = self return controller }() private let lock = Lock() private var keystore: Keystore + private let assetDefinitionStore = AssetDefinitionStore() + private let window: UIWindow private var appTracker = AppTracker() var coordinators: [Coordinator] = [] var inCoordinator: InCoordinator? { return coordinators.first { $0 is InCoordinator } as? InCoordinator } - var ethPrice: Subscribable? { + private var universalLinkCoordinator: UniversalLinkCoordinator? { + return coordinators.first { $0 is UniversalLinkCoordinator } as? UniversalLinkCoordinator + } + private var ethPrice: Subscribable? { if let inCoordinator = inCoordinator { return inCoordinator.ethPrice } else { return nil } } - var ethBalance: Subscribable? { + private var ethBalance: Subscribable? { if let inCoordinator = inCoordinator { return inCoordinator.ethBalance } else { @@ -43,6 +48,7 @@ class AppCoordinator: NSObject, Coordinator { self.config = config self.navigationController = navigationController self.keystore = keystore + self.window = window super.init() window.rootViewController = navigationController window.makeKeyAndVisible() @@ -64,16 +70,17 @@ class AppCoordinator: NSObject, Coordinator { func showTransactions(for wallet: Wallet) { let coordinator = InCoordinator( - navigationController: navigationController, - wallet: wallet, - keystore: keystore, - appTracker: appTracker + navigationController: navigationController, + wallet: wallet, + keystore: keystore, + assetDefinitionStore: assetDefinitionStore, + appTracker: appTracker ) coordinator.delegate = self coordinator.start() addCoordinator(coordinator) } - + func closeWelcomeWindow() { guard navigationController.viewControllers.contains(welcomeViewController) else { return @@ -94,7 +101,7 @@ class AppCoordinator: NSObject, Coordinator { initializers.forEach { $0.perform() } //We should clean passcode if there is no wallets. This step is required for app reinstall. if !keystore.hasWallets { - lock.clear() + lock.clear() } } @@ -114,35 +121,49 @@ class AppCoordinator: NSObject, Coordinator { resetToWelcomeScreen() } - func importPaidSignedOrder(signedOrder: SignedOrder, tokenObject: TokenObject, completion: @escaping (Bool) -> Void) { - let inCoordinatorInstance = coordinators.first { - $0 is InCoordinator - } as? InCoordinator - - if let inCoordinator = inCoordinatorInstance { - inCoordinator.importPaidSignedOrder(signedOrder: signedOrder, tokenObject: tokenObject, completion: completion) - } - } - - func addImported(contract: String) { - inCoordinator?.addImported(contract: contract) - } - func showInitialWalletCoordinator(entryPoint: WalletEntryPoint) { let coordinator = InitialWalletCreationCoordinator( - navigationController: navigationController, - keystore: keystore, - entryPoint: entryPoint + navigationController: navigationController, + keystore: keystore, + entryPoint: entryPoint ) coordinator.delegate = self coordinator.start() addCoordinator(coordinator) } - + func createInitialWallet() { WalletCoordinator(keystore: keystore).createInitialWallet() } + func handleUniversalLink(url: URL) -> Bool { + createInitialWallet() + closeWelcomeWindow() + guard let ethPrice = self.ethPrice, let ethBalance = self.ethBalance else { return false } + guard let inCoordinator = self.inCoordinator, let tokensDatastore = inCoordinator.createTokensDatastore() else { return false } + + let universalLinkCoordinator = UniversalLinkCoordinator( + config: config, + ethPrice: ethPrice, + ethBalance: ethBalance, + tokensDatastore: tokensDatastore, + assetDefinitionStore: assetDefinitionStore + ) + universalLinkCoordinator.delegate = self + universalLinkCoordinator.start() + let handled = universalLinkCoordinator.handleUniversalLink(url: url) + if handled { + addCoordinator(universalLinkCoordinator) + } + return handled + } + + func handleUniversalLinkInPasteboard() { + let universalLinkPasteboardCoordinator = UniversalLinkInPasteboardCoordinator() + universalLinkPasteboardCoordinator.delegate = self + universalLinkPasteboardCoordinator.start() + } + func didPressViewContractWebPage(forContract contract: String, in viewController: UIViewController) { inCoordinator?.didPressViewContractWebPage(forContract: contract, in: viewController) } @@ -195,3 +216,35 @@ extension AppCoordinator: InCoordinatorDelegate { func didUpdateAccounts(in coordinator: InCoordinator) { } } + +extension AppCoordinator: UniversalLinkCoordinatorDelegate { + func viewControllerForPresenting(in coordinator: UniversalLinkCoordinator) -> UIViewController? { + if var top = window.rootViewController { + while let vc = top.presentedViewController { + top = vc + } + return top + } else { + return nil + } + } + + func importPaidSignedOrder(signedOrder: SignedOrder, tokenObject: TokenObject, completion: @escaping (Bool) -> Void) { + inCoordinator?.importPaidSignedOrder(signedOrder: signedOrder, tokenObject: tokenObject, completion: completion) + } + + func completed(in coordinator: UniversalLinkCoordinator) { + removeCoordinator(coordinator) + } + + func didImported(contract: String, in coordinator: UniversalLinkCoordinator) { + inCoordinator?.addImported(contract: contract) + } +} + +extension AppCoordinator: UniversalLinkInPasteboardCoordinatorDelegate { + func importUniversalLink(url: URL, for coordinator: UniversalLinkInPasteboardCoordinator) { + guard universalLinkCoordinator == nil else { return } + handleUniversalLink(url: url) + } +} diff --git a/AlphaWallet/AppDelegate.swift b/AlphaWallet/AppDelegate.swift index d19dddd5e..c4862c0bf 100644 --- a/AlphaWallet/AppDelegate.swift +++ b/AlphaWallet/AppDelegate.swift @@ -5,14 +5,12 @@ import RealmSwift @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDelegate { var window: UIWindow? - var appCoordinator: AppCoordinator! - var coordinator: AppCoordinator! - // Need to retain while still processing - var universalLinkCoordinator: UniversalLinkCoordinator! + private var appCoordinator: AppCoordinator! //This is separate coordinator for the protection of the sensitive information. - lazy var protectionCoordinator: ProtectionCoordinator = { + private lazy var protectionCoordinator: ProtectionCoordinator = { return ProtectionCoordinator() }() + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { print(Realm.Configuration().fileURL!) @@ -34,10 +32,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele func applicationDidBecomeActive(_ application: UIApplication) { //Lokalise.shared.checkForUpdates { _, _ in } protectionCoordinator.applicationDidBecomeActive() - //TODO better to move into AppCoordinator or InCoordinator. Ditto for tap to import universal link. - let universalLinkPasteboardCoordinator = UniversalLinkInPasteboardCoordinator() - universalLinkPasteboardCoordinator.delegate = self - universalLinkPasteboardCoordinator.start() + appCoordinator.handleUniversalLinkInPasteboard() } func applicationDidEnterBackground(_ application: UIApplication) { @@ -73,71 +68,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele } @discardableResult private func handleUniversalLink(url: URL) -> Bool { - appCoordinator.createInitialWallet() - appCoordinator.closeWelcomeWindow() - guard let ethPrice = appCoordinator.ethPrice, let ethBalance = appCoordinator.ethBalance else { return false } - guard let inCoordinator = appCoordinator.inCoordinator, let tokensDatastore = inCoordinator.createTokensDatastore() else { return false } - - universalLinkCoordinator = UniversalLinkCoordinator( - config: Config(), - ethPrice: ethPrice, - ethBalance: ethBalance, - tokensDatastore: tokensDatastore - ) - universalLinkCoordinator.delegate = self - universalLinkCoordinator.start() - let handled = universalLinkCoordinator.handleUniversalLink(url: url) - if !handled { - universalLinkCoordinator = nil - } + let handled = appCoordinator.handleUniversalLink(url: url) return handled } } - -extension AppDelegate: UniversalLinkCoordinatorDelegate { - - func viewControllerForPresenting(in coordinator: UniversalLinkCoordinator) -> UIViewController? { - if var top = window?.rootViewController { - while let vc = top.presentedViewController { - top = vc - } - return top - } else { - return nil - } - } - - func importPaidSignedOrder(signedOrder: SignedOrder, tokenObject: TokenObject, completion: @escaping (Bool) -> Void) { - appCoordinator.importPaidSignedOrder(signedOrder: signedOrder, tokenObject: tokenObject, completion: completion) - } - - func completed(in coordinator: UniversalLinkCoordinator) { - universalLinkCoordinator = nil - } - - func didImported(contract: String, in coordinator: UniversalLinkCoordinator) { - appCoordinator.addImported(contract: contract) - } -} - -//TODO remove this once AppDelegate no longer implements UniversalLinkCoordinatorDelegate. i.e. when we move UniversalLinkCoordinator management into InCoordinator -extension AppDelegate: CanOpenURL { - func didPressViewContractWebPage(forContract contract: String, in viewController: UIViewController) { - appCoordinator.didPressViewContractWebPage(forContract: contract, in: viewController) - } - - func didPressViewContractWebPage(_ url: URL, in viewController: UIViewController) { - appCoordinator.didPressViewContractWebPage(url, in: viewController) - } - - func didPressOpenWebPage(_ url: URL, in viewController: UIViewController) { - appCoordinator.didPressOpenWebPage(url, in: viewController) - } -} - -extension AppDelegate: UniversalLinkInPasteboardCoordinatorDelegate { - func importUniversalLink(url: URL, for coordinator: UniversalLinkInPasteboardCoordinator) { - guard universalLinkCoordinator == nil else { return } - handleUniversalLink(url: url) - } -} diff --git a/AlphaWallet/Browser/Storage/CookiesStore.swift b/AlphaWallet/Browser/Storage/CookiesStore.swift deleted file mode 100644 index 7085942ee..000000000 --- a/AlphaWallet/Browser/Storage/CookiesStore.swift +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright DApps Platform Inc. All rights reserved. - -import UIKit -import WebKit -import PromiseKit -import KeychainSwift - -enum CookiesStoreError: LocalizedError { - case empty -} - -final class CookiesStore { - - private static let webKitStorage = WKWebsiteDataStore.default() - private static let httpCookieStorage = HTTPCookieStorage.shared - private static let keychain = KeychainSwift(keyPrefix: Constants.keychainKeyPrefix) - - private static let cookiesKey = "cookies" - - static func save() { - firstly { - fetchCookies() - }.done { cookies in - save(cookies: cookies) - } - } - - static func load() { - guard let encodedData = keychain.getData(cookiesKey), let decodedArray = NSKeyedUnarchiver.unarchiveObject(with: encodedData) as? [HTTPCookie] else { return } - decodedArray.forEach { cookie in - if #available(iOS 11.0, *) { - webKitStorage.httpCookieStore.setCookie(cookie, completionHandler: nil) - } else { - httpCookieStorage.setCookie(cookie) - } - } - } - - static func delete() { - keychain.delete(cookiesKey) - } - - private static func save(cookies: [HTTPCookie]) { - let data = NSKeyedArchiver.archivedData(withRootObject: cookies) - keychain.set(data, forKey: cookiesKey) - } - - private static func fetchCookies() -> Promise<[HTTPCookie]> { - return Promise { seal in - if #available(iOS 11.0, *) { - webKitStorage.httpCookieStore.getAllCookies { cookies in - seal.fulfill(cookies) - } - } else { - guard let cookies = httpCookieStorage.cookies else { - seal.reject(CookiesStoreError.empty) - return - } - seal.fulfill(cookies) - } - } - } -} diff --git a/AlphaWallet/Browser/Types/SendTransaction.swift b/AlphaWallet/Browser/Types/SendTransaction.swift deleted file mode 100644 index 666bbbb15..000000000 --- a/AlphaWallet/Browser/Types/SendTransaction.swift +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright DApps Platform Inc. All rights reserved. - -import Foundation - -struct SendTransaction: Decodable { - let from: String - let to: String? - let value: String? - let gas: String? - let gasPrice: String? - let data: String? - let nonce: String? -} diff --git a/AlphaWallet/EtherClient/EtherClient.swift b/AlphaWallet/EtherClient/EtherClient.swift deleted file mode 100644 index b5061e9dd..000000000 --- a/AlphaWallet/EtherClient/EtherClient.swift +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright SIX DAY LLC. All rights reserved. - -import Foundation -import APIKit -import JSONRPCKit - -class EtherClient { - -} diff --git a/AlphaWallet/EtherClient/Requests/CallRequest.swift b/AlphaWallet/EtherClient/Requests/CallRequest.swift deleted file mode 100644 index 289f13e1d..000000000 --- a/AlphaWallet/EtherClient/Requests/CallRequest.swift +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright SIX DAY LLC. All rights reserved. - -import Foundation -import JSONRPCKit - -struct CallRequest: JSONRPCKit.Request { - typealias Response = String - - let to: String - let data: String - - var method: String { - return "eth_call" - } - - var parameters: Any? { - return [["to": to, "data": data], "latest"] - } - - func response(from resultObject: Any) throws -> Response { - if let response = resultObject as? Response { - return response - } else { - throw CastError(actualValue: resultObject, expectedType: Response.self) - } - } -} diff --git a/AlphaWallet/EtherClient/TrustClient/TrustClient.swift b/AlphaWallet/EtherClient/TrustClient/TrustClient.swift index 220d7d25c..5e3cf9cc1 100644 --- a/AlphaWallet/EtherClient/TrustClient/TrustClient.swift +++ b/AlphaWallet/EtherClient/TrustClient/TrustClient.swift @@ -12,18 +12,7 @@ enum TrustService { case marketplace(chainID: Int) } -struct TokensPrice: Encodable { - let currency: String - let tokens: [TokenPrice] -} - -struct TokenPrice: Encodable { - let contract: String - let symbol: String -} - extension TrustService: TargetType { - var baseURL: URL { switch self { case .getTransactions: diff --git a/AlphaWallet/Extensions/CALayer.swift b/AlphaWallet/Extensions/CALayer.swift deleted file mode 100644 index 19da5b117..000000000 --- a/AlphaWallet/Extensions/CALayer.swift +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright SIX DAY LLC. All rights reserved. - -import Foundation -import UIKit - -extension CALayer { - func addBorder(edge: UIRectEdge, color: UIColor, thickness: CGFloat) { - let border = CALayer() - switch edge { - case UIRectEdge.top: - border.frame = CGRect.init(x: 0, y: 0, width: frame.width, height: thickness) - case UIRectEdge.bottom: - border.frame = CGRect.init(x: 0, y: frame.height - thickness, width: frame.width, height: thickness) - case UIRectEdge.left: - border.frame = CGRect.init(x: 0, y: 0, width: thickness, height: frame.height) - case UIRectEdge.right: - border.frame = CGRect.init(x: frame.width - thickness, y: 0, width: thickness, height: frame.height) - default: - break - } - border.backgroundColor = color.cgColor - self.addSublayer(border) - } -} diff --git a/AlphaWallet/Extensions/UIView.swift b/AlphaWallet/Extensions/UIView.swift index da87cf512..7ce1fd0fb 100644 --- a/AlphaWallet/Extensions/UIView.swift +++ b/AlphaWallet/Extensions/UIView.swift @@ -21,14 +21,6 @@ extension UIView { } } - var layoutInsets: UIEdgeInsets { - if #available(iOS 11, *) { - return safeAreaInsets - } else { - return layoutMargins - } - } - static func spacer(height: CGFloat = 1, backgroundColor: UIColor = .clear) -> UIView { let view = UIView(frame: .zero) view.translatesAutoresizingMaskIntoConstraints = false diff --git a/AlphaWallet/Extensions/UIViewInspectableEnhancements.swift b/AlphaWallet/Extensions/UIViewInspectableEnhancements.swift index f7f1ff7c0..feb924847 100644 --- a/AlphaWallet/Extensions/UIViewInspectableEnhancements.swift +++ b/AlphaWallet/Extensions/UIViewInspectableEnhancements.swift @@ -8,18 +8,7 @@ import UIKit -@IBDesignable class DesignableLabel: UILabel {} - -@IBDesignable class DesignableButton: UIButton {} - -@IBDesignable class DesignableView: UIView {} - -@IBDesignable class DesignableTextView: UITextView {} - -@IBDesignable class DesignableTextField: UITextField {} - extension UIView { - @IBInspectable var cornerRadius: CGFloat { get { return layer.cornerRadius diff --git a/AlphaWallet/InCoordinator.swift b/AlphaWallet/InCoordinator.swift index d36c764b7..e9ff0307d 100644 --- a/AlphaWallet/InCoordinator.swift +++ b/AlphaWallet/InCoordinator.swift @@ -65,6 +65,7 @@ class InCoordinator: Coordinator { navigationController: UINavigationController = NavigationController(), wallet: Wallet, keystore: Keystore, + assetDefinitionStore: AssetDefinitionStore, config: Config = Config(), appTracker: AppTracker = AppTracker() ) { @@ -73,7 +74,7 @@ class InCoordinator: Coordinator { self.keystore = keystore self.config = config self.appTracker = appTracker - self.assetDefinitionStore = AssetDefinitionStore() + self.assetDefinitionStore = assetDefinitionStore self.assetDefinitionStore.enableFetchXMLForContractInPasteboard() } diff --git a/AlphaWallet/Market/Coordinators/UniversalLinkCoordinator.swift b/AlphaWallet/Market/Coordinators/UniversalLinkCoordinator.swift index f19ab0692..cce18aab1 100644 --- a/AlphaWallet/Market/Coordinators/UniversalLinkCoordinator.swift +++ b/AlphaWallet/Market/Coordinators/UniversalLinkCoordinator.swift @@ -27,7 +27,6 @@ class UniversalLinkCoordinator: Coordinator { private let ethPrice: Subscribable private let ethBalance: Subscribable private var hasCompleted = false - private var addressOfNewWallet: String? private var getERC875TokenBalanceCoordinator: GetERC875BalanceCoordinator? //TODO better to make sure tokenHolder is non-optional. But be careful that ImportMagicTokenViewController also handles when viewModel always has a TokenHolder. Needs good defaults in TokenHolder that can be displayed private var tokenHolder: TokenHolder? @@ -36,12 +35,14 @@ class UniversalLinkCoordinator: Coordinator { return delegate?.viewControllerForPresenting(in: self) != nil } private let tokensDatastore: TokensDataStore + private let assetDefinitionStore: AssetDefinitionStore - init(config: Config, ethPrice: Subscribable, ethBalance: Subscribable, tokensDatastore: TokensDataStore) { + init(config: Config, ethPrice: Subscribable, ethBalance: Subscribable, tokensDatastore: TokensDataStore, assetDefinitionStore: AssetDefinitionStore) { self.config = config self.ethPrice = ethPrice self.ethBalance = ethBalance self.tokensDatastore = tokensDatastore + self.assetDefinitionStore = assetDefinitionStore } func start() { @@ -267,8 +268,7 @@ class UniversalLinkCoordinator: Coordinator { } private func makeTokenHolder(_ bytes32Tokens: [String], _ indices: [UInt16], _ contractAddress: String) { - //TODO better to pass in the store instance once UniversalLinkCoordinator is owned by InCoordinator - AssetDefinitionStore().fetchXML(forContract: contractAddress, useCacheAndFetch: true) { [weak self] result in + assetDefinitionStore.fetchXML(forContract: contractAddress, useCacheAndFetch: true) { [weak self] result in guard let strongSelf = self else { return } func makeTokenHolder(name: String) { diff --git a/AlphaWallet/Market/ViewModels/ImportMagicTokenViewControllerViewModel.swift b/AlphaWallet/Market/ViewModels/ImportMagicTokenViewControllerViewModel.swift index 618d3a99f..36cd4331f 100644 --- a/AlphaWallet/Market/ViewModels/ImportMagicTokenViewControllerViewModel.swift +++ b/AlphaWallet/Market/ViewModels/ImportMagicTokenViewControllerViewModel.swift @@ -146,14 +146,6 @@ struct ImportMagicTokenViewControllerViewModel { } } - var showTokenRowIcons: Bool { - if case .validating = state { - return false - } else { - return true - } - } - var statusText: String { switch state { case .validating: diff --git a/AlphaWallet/Redeem/ViewModels/BaseTokenTableViewCellViewModel.swift b/AlphaWallet/Redeem/ViewModels/BaseTokenTableViewCellViewModel.swift deleted file mode 100644 index 31c1ce749..000000000 --- a/AlphaWallet/Redeem/ViewModels/BaseTokenTableViewCellViewModel.swift +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright © 2018 Stormbird PTE. LTD. - -import UIKit - -struct BaseTokenTableViewCellViewModel { - let TokenHolder: TokenHolder - - init( - TokenHolder: TokenHolder - ) { - self.TokenHolder = TokenHolder - } - - var backgroundColor: UIColor { - return Colors.appWhite - } - - var status: String { - return "" - } - - var checkboxImage: UIImage { - if TokenHolder.isSelected { - return R.image.Token_bundle_checked()! - } else { - return R.image.Token_bundle_unchecked()! - } - } - - var areDetailsVisible: Bool { - return TokenHolder.areDetailsVisible - } -} diff --git a/AlphaWallet/Redeem/ViewModels/RedeemTokensQuantitySelectionViewModel.swift b/AlphaWallet/Redeem/ViewModels/RedeemTokensQuantitySelectionViewModel.swift deleted file mode 100644 index ab50780d3..000000000 --- a/AlphaWallet/Redeem/ViewModels/RedeemTokensQuantitySelectionViewModel.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// QuantitySelectionViewModel.swift -// Alpha-Wallet -// -// Created by Oguzhan Gungor on 3/4/18. -// Copyright © 2018 Alpha-Wallet. All rights reserved. -// - -import Foundation -import UIKit - -struct RedeemTokensQuantitySelectionViewModel { - - var token: TokenObject - var TokenHolder: TokenHolder - - var headerTitle: String { - return R.string.localizable.aWalletTokenTokenRedeemSelectQuantityTitle() - } - - var maxValue: Int { - return TokenHolder.Tokens.count - } - - var backgroundColor: UIColor { - return Colors.appBackground - } - - var buttonTitleColor: UIColor { - return Colors.appWhite - } - - var buttonBackgroundColor: UIColor { - return Colors.appHighlightGreen - } - - var buttonFont: UIFont { - return Fonts.regular(size: 20)! - } - - var subtitleColor: UIColor { - return Colors.appGrayLabelColor - } - - var subtitleFont: UIFont { - return Fonts.regular(size: 10)! - } - - var stepperBorderColor: UIColor { - return Colors.appBackground - } - - var subtitleText: String { - return R.string.localizable.aWalletTokenTokenRedeemQuantityTitle() - } -} diff --git a/AlphaWallet/Redeem/ViewModels/RedeemTokensViewModel.swift b/AlphaWallet/Redeem/ViewModels/RedeemTokensViewModel.swift deleted file mode 100644 index 9bcee708e..000000000 --- a/AlphaWallet/Redeem/ViewModels/RedeemTokensViewModel.swift +++ /dev/null @@ -1,67 +0,0 @@ -// -// RedeemTokensViewModel.swift -// Alpha-Wallet -// -// Created by Oguzhan Gungor on 3/4/18. -// Copyright © 2018 Alpha-Wallet. All rights reserved. -// - -import Foundation -import UIKit - -struct RedeemTokensViewModel { - - var token: TokenObject - var TokenHolders: [TokenHolder] - - init(token: TokenObject) { - self.token = token - self.TokenHolders = TokenAdaptor(token: token).getTokenHolders() - } - - func item(for indexPath: IndexPath) -> TokenHolder { - return TokenHolders[indexPath.row] - } - - func numberOfItems(for section: Int) -> Int { - return TokenHolders.count - } - - func height(for section: Int) -> CGFloat { - return 90 - } - - var title: String { - return R.string.localizable.aWalletTokenTokenRedeemSelectTokensTitle () - } - - var buttonTitleColor: UIColor { - return Colors.appWhite - } - - var buttonBackgroundColor: UIColor { - return Colors.appHighlightGreen - } - - var buttonFont: UIFont { - return Fonts.regular(size: 20)! - } - - func toggleSelection(for indexPath: IndexPath) -> [IndexPath] { - let TokenHolder = item(for: indexPath) - var changed = [indexPath] - if TokenHolder.areDetailsVisible { - TokenHolder.areDetailsVisible = false - TokenHolder.isSelected = false - } else { - for (i, each) in TokenHolders.enumerated() where each.areDetailsVisible { - each.areDetailsVisible = false - each.isSelected = false - changed.append(.init(row: i, section: indexPath.section)) - } - TokenHolder.areDetailsVisible = true - TokenHolder.isSelected = true - } - return changed - } -} diff --git a/AlphaWallet/Redeem/ViewModels/TokenRedemptionViewModel.swift b/AlphaWallet/Redeem/ViewModels/TokenRedemptionViewModel.swift deleted file mode 100644 index 891e6d3dd..000000000 --- a/AlphaWallet/Redeem/ViewModels/TokenRedemptionViewModel.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// TokenRedemptionViewModel.swift -// Alpha-Wallet -// -// Created by Oguzhan Gungor on 3/6/18. -// Copyright © 2018 Alpha-Wallet. All rights reserved. -// - -import Foundation -import UIKit - -struct TokenRedemptionViewModel { - var token: TokenObject - var TokenHolder: TokenHolder - - var headerTitle: String { - return R.string.localizable.aWalletTokenTokenRedeemShowQRCodeTitle() - } - - var headerColor: UIColor { - return Colors.appWhite - } - - var headerFont: UIFont { - return Fonts.light(size: 25)! - } - - var backgroundColor: UIColor { - return Colors.appBackground - } -} diff --git a/AlphaWallet/Redeem/ViewModels/TokenRowViewModel.swift b/AlphaWallet/Redeem/ViewModels/TokenRowViewModel.swift deleted file mode 100644 index 96f899850..000000000 --- a/AlphaWallet/Redeem/ViewModels/TokenRowViewModel.swift +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright © 2018 Stormbird PTE. LTD. - -import UIKit - -struct TokenRowViewModel { - var TokenHolder: TokenHolder? - - var backgroundColor: UIColor { - return Colors.appWhite - } - - var contentsBackgroundColor: UIColor { - return Colors.appWhite - } - - var titleColor: UIColor { - return Colors.appText - } - - var countColor: UIColor { - return Colors.appHighlightGreen - } - - var subtitleColor: UIColor { - return UIColor(red: 112, green: 112, blue: 112) - } - - var iconsColor: UIColor { - return Colors.appBackground - } - - var TokenCountFont: UIFont { - return Fonts.bold(size: 21)! - } - - var titleFont: UIFont { - return Fonts.light(size: 21)! - } - - var venueFont: UIFont { - return Fonts.light(size: 16)! - } - - var stateBackgroundColor: UIColor { - return UIColor(red: 151, green: 151, blue: 151) - } - - var stateColor: UIColor { - return .white - } - - var subtitleFont: UIFont { - if ScreenChecker().isNarrowScreen() { - return Fonts.semibold(size: 12)! - } else { - return Fonts.semibold(size: 15)! - } - } - - var detailsFont: UIFont { - return Fonts.light(size: 16)! - } - - var TokenCount: String { - guard let TokenHolder = TokenHolder else { return "" } - return "x\(TokenHolder.Tokens.count)" - } - - var city: String { - guard let TokenHolder = TokenHolder else { return "" } - let value = TokenHolder.values["locality"] ?? "N/A" - return ", \(value)" - } - - var category: String { - guard let TokenHolder = TokenHolder else { return "" } - return TokenHolder.values["category"] as? String ?? "N/A" - } - - var teams: String { - guard let TokenHolder = TokenHolder else { return "" } - let countryA = TokenHolder.values["countryA"] as? String ?? "" - let countryB = TokenHolder.values["countryB"] as? String ?? "" - return R.string.localizable.aWalletTokenTokenMatchVs(countryA, countryB) - } - - var match: String { - guard let TokenHolder = TokenHolder else { return "" } - let value = TokenHolder.values["match"] as? Int ?? 0 - return "M\(value)" - } - - var venue: String { - guard let TokenHolder = TokenHolder else { return "" } - return TokenHolder.values["venue"] as? String ?? "N/A" - } - - var date: String { - guard let TokenHolder = TokenHolder else { return "" } - let value = TokenHolder.values["time"] as? GeneralisedTime ?? GeneralisedTime() - return value.formatAsShortDateString() - } - - var time: String { - guard let TokenHolder = TokenHolder else { return "" } - let value = TokenHolder.values["time"] as? GeneralisedTime ?? GeneralisedTime() - return value.format("h:mm a") - } -} diff --git a/AlphaWallet/Redeem/Views/TokensViewControllerTitleHeader.swift b/AlphaWallet/Redeem/Views/TokensViewControllerTitleHeader.swift deleted file mode 100644 index 9a3f93d27..000000000 --- a/AlphaWallet/Redeem/Views/TokensViewControllerTitleHeader.swift +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright © 2018 Stormbird PTE. LTD. - -import UIKit - -class TokensViewControllerTitleHeader: UIView { - let background = UIView() - let titleLabel = UILabel() - - override init(frame: CGRect) { - super.init(frame: frame) - - background.translatesAutoresizingMaskIntoConstraints = false - addSubview(background) - - titleLabel.textAlignment = .center - titleLabel.translatesAutoresizingMaskIntoConstraints = false - - let stackView = [titleLabel].asStackView(axis: .vertical) - stackView.translatesAutoresizingMaskIntoConstraints = false - background.addSubview(stackView) - - let backgroundWidthConstraint = background.widthAnchor.constraint(equalTo: widthAnchor) - backgroundWidthConstraint.priority = .defaultHigh - // TODO extract constant. Maybe StyleLayout.sideMargin - NSLayoutConstraint.activate([ - background.leadingAnchor.constraint(equalTo: leadingAnchor), -// background.topAnchor.constraint(equalTo: topAnchor), - background.centerYAnchor.constraint(equalTo: centerYAnchor), - backgroundWidthConstraint, - - stackView.leadingAnchor.constraint(equalTo: background.leadingAnchor, constant: 21), - stackView.trailingAnchor.constraint(equalTo: background.trailingAnchor, constant: -21), - stackView.topAnchor.constraint(equalTo: background.topAnchor, constant: 16), - stackView.bottomAnchor.constraint(lessThanOrEqualTo: background.bottomAnchor, constant: -16), - ]) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - func configure(title: String) { - //Important to specify a non-zero rect the first time. Cannot (and don't need to) set subsequently because that will move the origin to 0,0 - if frame.size.width == 0 { - frame = CGRect(x: 0, y: 0, width: 300, height: 90) - } - backgroundColor = Colors.appWhite - - titleLabel.textColor = Colors.appText - titleLabel.font = Fonts.light(size: 25)! - titleLabel.adjustsFontSizeToFitWidth = true - titleLabel.text = title - } -} diff --git a/AlphaWallet/Sell/ViewModels/EnterSellTokensPriceQuantityViewControllerViewModel.swift b/AlphaWallet/Sell/ViewModels/EnterSellTokensPriceQuantityViewControllerViewModel.swift deleted file mode 100644 index 12951f170..000000000 --- a/AlphaWallet/Sell/ViewModels/EnterSellTokensPriceQuantityViewControllerViewModel.swift +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright © 2018 Stormbird PTE. LTD. - -import Foundation -import UIKit - -struct EnterSellTokensPriceQuantityViewControllerViewModel { - - var token: TokenObject - var TokenHolder: TokenHolder - var ethCost: String = "0" - var dollarCost: String = "" - - var headerTitle: String { - return R.string.localizable.aWalletTokenTokenSellSelectQuantityTitle() - } - - var maxValue: Int { - return TokenHolder.Tokens.count - } - - var backgroundColor: UIColor { - return Colors.appBackground - } - - var buttonTitleColor: UIColor { - return Colors.appWhite - } - - var buttonBackgroundColor: UIColor { - return Colors.appHighlightGreen - } - - var buttonFont: UIFont { - return Fonts.regular(size: 20)! - } - - var choiceLabelColor: UIColor { - return Colors.appGrayLabelColor - } - - var choiceLabelFont: UIFont { - return Fonts.regular(size: 10)! - } - - var stepperBorderColor: UIColor { - return Colors.appBackground - } - - var quantityLabelText: String { - return R.string.localizable.aWalletTokenTokenSellQuantityTitle() - } - - var pricePerTokenLabelText: String { - return R.string.localizable.aWalletTokenTokenSellPricePerTokenTitle() - } - - var linkExpiryDateLabelText: String { - return R.string.localizable.aWalletTokenTokenSellLinkExpiryDateTitle() - } - - var linkExpiryTimeLabelText: String { - return R.string.localizable.aWalletTokenTokenSellLinkExpiryTimeTitle() - } - - var ethCostLabelLabelText: String { - return R.string.localizable.aWalletTokenTokenSellTotalCostTitle() - } - - var ethCostLabelLabelFont: UIFont { - return Fonts.light(size: 21)! - } - - var ethCostLabelLabelColor: UIColor { - return Colors.appText - } - - var ethCostLabelText: String { - return "\(ethCost) ETH" - } - - var ethCostLabelColor: UIColor { - return Colors.appBackground - } - - var ethCostLabelFont: UIFont { - return Fonts.semibold(size: 21)! - } - - var dollarCostLabelLabelColor: UIColor { - return Colors.appGrayLabelColor - } - - var dollarCostLabelLabelFont: UIFont { - return Fonts.regular(size: 10)! - } - - var dollarCostLabelText: String { - return "$\(dollarCost)" - } - - var dollarCostLabelColor: UIColor { - return Colors.darkGray - } - - var dollarCostLabelFont: UIFont { - return Fonts.light(size: 21)! - } - - var dollarCostLabelBackgroundColor: UIColor { - return UIColor(red: 236, green: 236, blue: 236) - } - - var hideDollarCost: Bool { - return dollarCost.trimmed.isEmpty - } - - init(token: TokenObject, TokenHolder: TokenHolder) { - self.token = token - self.TokenHolder = TokenHolder - } -} diff --git a/AlphaWallet/Sell/Views/DateEntryField.swift b/AlphaWallet/Sell/Views/DateEntryField.swift index 1b79ffc47..c3af08505 100644 --- a/AlphaWallet/Sell/Views/DateEntryField.swift +++ b/AlphaWallet/Sell/Views/DateEntryField.swift @@ -64,20 +64,6 @@ class DateEntryField: UIControl { fatalError("init(coder:) has not been implemented") } - private func makeToolbarWithDoneButton() -> UIToolbar { - //Frame needed, but actual values aren't that important - let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 100, height: 40)) - toolbar.barStyle = .default - - let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) - let done = UIBarButtonItem(title: R.string.localizable.done(), style: .done, target: self, action: #selector(closeKeyboard)) - - toolbar.items = [flexSpace, done] - toolbar.sizeToFit() - - return toolbar - } - @objc func closeKeyboard() { delegate?.didTap(in: self) } diff --git a/AlphaWallet/Sell/Views/TimeEntryField.swift b/AlphaWallet/Sell/Views/TimeEntryField.swift index 4e86f4044..29ac9a46e 100644 --- a/AlphaWallet/Sell/Views/TimeEntryField.swift +++ b/AlphaWallet/Sell/Views/TimeEntryField.swift @@ -64,20 +64,6 @@ class TimeEntryField: UIControl { fatalError("init(coder:) has not been implemented") } - private func makeToolbarWithDoneButton() -> UIToolbar { - //Frame needed, but actual values aren't that important - let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 100, height: 40)) - toolbar.barStyle = .default - - let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) - let done = UIBarButtonItem(title: R.string.localizable.done(), style: .done, target: self, action: #selector(closeKeyboard)) - - toolbar.items = [flexSpace, done] - toolbar.sizeToFit() - - return toolbar - } - @objc func closeKeyboard() { delegate?.didTap(in: self) } diff --git a/AlphaWallet/Settings/Types/Constants.swift b/AlphaWallet/Settings/Types/Constants.swift index bb4148d63..b5bde3682 100644 --- a/AlphaWallet/Settings/Types/Constants.swift +++ b/AlphaWallet/Settings/Types/Constants.swift @@ -11,9 +11,6 @@ public struct Constants { public static let gasLimit = BigInt(300000) public static let gasPriceDefaultERC875 = BigInt("22000000000")! - //coinmarketcap - public static let coinMarketCapPriceAPI = "https://api.coinmarketcap.com" - // XML repo public static let repoServer = "https://repo.awallet.io" public static let repoClientName = "AlphaWallet" @@ -33,7 +30,6 @@ public struct Constants { // support public static let supportEmail = "support@awallet.io" - public static let donationAddress = "0xFE6d4bC2De2D0b0E6FE47f08A28Ed52F9d052A02" public static let dappsBrowserURL = "https://www.stateofthedapps.com" public static let nullTokenId = "0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/AlphaWallet/Settings/Types/Currency.swift b/AlphaWallet/Settings/Types/Currency.swift index fe96f3d93..bff28a326 100644 --- a/AlphaWallet/Settings/Types/Currency.swift +++ b/AlphaWallet/Settings/Types/Currency.swift @@ -75,13 +75,3 @@ enum Currency: String { self = Currency(rawValue: value) ?? .USD } } - -class CurrencyManager { -} - -extension CurrencyManager { - static func getSymbolForCurrencyCode(code: String) -> String? { - let locale = NSLocale(localeIdentifier: code) - return locale.displayName(forKey: NSLocale.Key.identifier, value: code) - } -} diff --git a/AlphaWallet/Settings/Types/SettingsError.swift b/AlphaWallet/Settings/Types/SettingsError.swift deleted file mode 100644 index ba75b77c8..000000000 --- a/AlphaWallet/Settings/Types/SettingsError.swift +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright SIX DAY LLC. All rights reserved. - -import Foundation - -enum SettingsError: LocalizedError { - case failedToSendEmail - - var errorDescription: String? { - switch self { - case .failedToSendEmail: - return R.string.localizable.settingsErrorFailedToSendEmail() - } - } -} diff --git a/AlphaWallet/Settings/ViewControllers/LocalesViewController.swift b/AlphaWallet/Settings/ViewControllers/LocalesViewController.swift index 875614be6..0811d2f35 100644 --- a/AlphaWallet/Settings/ViewControllers/LocalesViewController.swift +++ b/AlphaWallet/Settings/ViewControllers/LocalesViewController.swift @@ -14,7 +14,6 @@ class LocalesViewController: UIViewController { let header = TokensCardViewControllerTitleHeader() let tableView = UITableView(frame: .zero, style: .plain) var viewModel: LocalesViewModel? - private var balances: [Address: Balance?] = [:] init() { super.init(nibName: nil, bundle: nil) diff --git a/AlphaWallet/Settings/ViewControllers/ServersViewController.swift b/AlphaWallet/Settings/ViewControllers/ServersViewController.swift index e7d1737a0..69561e96e 100644 --- a/AlphaWallet/Settings/ViewControllers/ServersViewController.swift +++ b/AlphaWallet/Settings/ViewControllers/ServersViewController.swift @@ -14,7 +14,6 @@ class ServersViewController: UIViewController { let header = TokensCardViewControllerTitleHeader() let tableView = UITableView(frame: .zero, style: .plain) var viewModel: ServersViewModel? - private var balances: [Address: Balance?] = [:] init() { super.init(nibName: nil, bundle: nil) diff --git a/AlphaWallet/Settings/ViewModels/PreferencesViewModel.swift b/AlphaWallet/Settings/ViewModels/PreferencesViewModel.swift deleted file mode 100644 index 9dab3433b..000000000 --- a/AlphaWallet/Settings/ViewModels/PreferencesViewModel.swift +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright SIX DAY LLC. All rights reserved. - -import Foundation - -struct PreferencesViewModel { - - var title: String { - return R.string.localizable.settingsPreferencesTitle() - } - - var showTokensTabTitle: String { - return R.string.localizable.settingsPreferencesButtonTitle() - } - - var showTokensTabOnStart: Bool { - return true - } -} diff --git a/AlphaWallet/Settings/ViewModels/SettingsViewModel.swift b/AlphaWallet/Settings/ViewModels/SettingsViewModel.swift index 196b3f11c..09cc104e9 100644 --- a/AlphaWallet/Settings/ViewModels/SettingsViewModel.swift +++ b/AlphaWallet/Settings/ViewModels/SettingsViewModel.swift @@ -38,14 +38,6 @@ struct SettingsViewModel { } } - var networkTitle: String { - return R.string.localizable.settingsNetworkButtonTitle() - } - - var currencyTitle: String { - return R.string.localizable.settingsCurrencyButtonTitle() - } - var localeTitle: String { return R.string.localizable.settingsLanguageButtonTitle() } diff --git a/AlphaWallet/Settings/Views/AlphaWalletSettingPushRow.swift b/AlphaWallet/Settings/Views/AlphaWalletSettingPushRow.swift deleted file mode 100644 index bce68ed7d..000000000 --- a/AlphaWallet/Settings/Views/AlphaWalletSettingPushRow.swift +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright © 2018 Stormbird PTE. LTD. - -import Foundation -import Eureka - -/// A selector row where the user can pick an option from a pushed view controller -public final class AlphaWalletSettingPushRow : _PushRow>, RowType { - public required init(tag: String?) { - super.init(tag: tag) - } -} - -open class AlphaWalletSettingsPushSelectorCell : Cell, CellType { - let background = UIView() - - required public init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - - background.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(background) - - let xMargin = CGFloat(7) - let yMargin = CGFloat(4) - NSLayoutConstraint.activate([ - background.leadingAnchor.constraint(equalTo: leadingAnchor, constant: xMargin), - background.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -xMargin), - background.topAnchor.constraint(equalTo: topAnchor, constant: yMargin), - background.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -yMargin), - ]) - } - - required public init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - } - - open override func update() { - super.update() - - height = { 70 } - backgroundColor = Colors.appBackground - accessoryType = .disclosureIndicator - editingAccessoryType = accessoryType - selectionStyle = .none - - contentView.backgroundColor = Colors.appBackground - - background.backgroundColor = Colors.appWhite - background.layer.cornerRadius = 20 - - textLabel?.textColor = Colors.appText - textLabel?.font = Fonts.light(size: 18)! - - detailTextLabel?.textColor = Colors.appText - detailTextLabel?.font = Fonts.light(size: 18)! - } -} diff --git a/AlphaWallet/Style/AppStyle.swift b/AlphaWallet/Style/AppStyle.swift index 6115c13b4..e20f28c5d 100644 --- a/AlphaWallet/Style/AppStyle.swift +++ b/AlphaWallet/Style/AppStyle.swift @@ -49,7 +49,6 @@ struct Colors { static let darkBlue = UIColor(hex: "3375BB") static let blue = UIColor(hex: "2e91db") static let red = UIColor(hex: "f7506c") - static let veryLightRed = UIColor(hex: "FFF4F4") static let veryLightOrange = UIColor(hex: "FFECC9") static let green = UIColor(hex: "2fbb4f") static let lightGray = UIColor.lightGray @@ -75,7 +74,6 @@ struct StyleLayout { struct Fonts { static let labelSize: CGFloat = 18 - static let buttonSize: CGFloat = 20 static func light(size: CGFloat) -> UIFont? { return UIFont(resource: R.font.sourceSansProLight, size: size) diff --git a/AlphaWallet/Tokens/ViewControllers/TokenCardSellInfoViewController.swift b/AlphaWallet/Tokens/ViewControllers/TokenCardSellInfoViewController.swift deleted file mode 100644 index 991c62148..000000000 --- a/AlphaWallet/Tokens/ViewControllers/TokenCardSellInfoViewController.swift +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright © 2018 Stormbird PTE. LTD. - -import UIKit - -class TokenCardSellInfoViewController: HelpContentsViewController { - override func url() -> URL? { - return R.file.sellInfoHtml() - } -} diff --git a/AlphaWallet/Tokens/ViewModels/NonFungibleTokenViewCellViewModel.swift b/AlphaWallet/Tokens/ViewModels/NonFungibleTokenViewCellViewModel.swift index 79e70c541..fea406320 100644 --- a/AlphaWallet/Tokens/ViewModels/NonFungibleTokenViewCellViewModel.swift +++ b/AlphaWallet/Tokens/ViewModels/NonFungibleTokenViewCellViewModel.swift @@ -5,7 +5,6 @@ import UIKit import BigInt struct NonFungibleTokenViewCellViewModel { - private let shortFormatter = EtherNumberFormatter.short private let token: TokenObject let config: Config diff --git a/AlphaWallet/Tokens/ViewModels/TokensViewCellViewModel.swift b/AlphaWallet/Tokens/ViewModels/TokensViewCellViewModel.swift deleted file mode 100644 index d596a19eb..000000000 --- a/AlphaWallet/Tokens/ViewModels/TokensViewCellViewModel.swift +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright © 2018 Stormbird PTE. LTD. - -import Foundation -import UIKit -import BigInt - -struct TokenTokenViewCellViewModel { - private let shortFormatter = EtherNumberFormatter.short - private let token: TokenObject - - let config: Config - let ticker: CoinTicker? - - init( - config: Config, - token: TokenObject, - ticker: CoinTicker? - ) { - self.config = config - self.token = token - self.ticker = ticker - } - - var title: String { - return token.title - } - - var amount: String { - let actualBalance = token.nonZeroBalance - return actualBalance.count.toString() - } - - var issuer: String { - let xmlHandler = XMLHandler(contract: token.address.eip55String) - let issuer = xmlHandler.getIssuer() - if issuer.isEmpty { - return "" - } else { - return "\(R.string.localizable.aWalletContentsIssuerTitle()): \(issuer)" - } - } - - var issuerSeparator: String { - if issuer.isEmpty { - return "" - } else { - return "|" - } - } - - var blockChainName: String { - return R.string.localizable.blockchainEthereum() - } - - var backgroundColor: UIColor { - return Colors.appBackground - } - - var contentsBackgroundColor: UIColor { - return Colors.appWhite - } - - var titleColor: UIColor { - return Colors.appText - } - - var subtitleColor: UIColor { - return Colors.appBackground - } - - var titleFont: UIFont { - if ScreenChecker().isNarrowScreen() { - return Fonts.light(size: 22)! - } else { - return Fonts.light(size: 25)! - } - - } - - var subtitleFont: UIFont { - return Fonts.semibold(size: 10)! - } - - var cellHeight: CGFloat { - return 98 - } -} diff --git a/AlphaWallet/Tokens/ViewModels/TokensViewControllerHeaderViewModel.swift b/AlphaWallet/Tokens/ViewModels/TokensViewControllerHeaderViewModel.swift deleted file mode 100644 index 10fc91483..000000000 --- a/AlphaWallet/Tokens/ViewModels/TokensViewControllerHeaderViewModel.swift +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright © 2018 Stormbird PTE. LTD. - -import UIKit -import BigInt - -struct TokensViewControllerHeaderViewModel { - let config: Config - private let tokenObject: TokenObject - - init(config: Config, tokenObject: TokenObject) { - self.config = config - self.tokenObject = tokenObject - } - - var title: String { - return "\((totalValidTokenNumber)) \(tokenObject.title)" - } - - var issuer: String { - let xmlHandler = XMLHandler(contract: tokenObject.address.eip55String) - let issuer = xmlHandler.getIssuer() - if issuer.isEmpty { - return "" - } else { - return "\(R.string.localizable.aWalletContentsIssuerTitle()): \(issuer)" - } - } - - var issuerSeparator: String { - if issuer.isEmpty { - return "" - } else { - return "|" - } - } - - var blockChainName: String { - return R.string.localizable.blockchainEthereum() - } - - var backgroundColor: UIColor { - return Colors.appWhite - } - - var contentsBackgroundColor: UIColor { - return Colors.appWhite - } - - var titleColor: UIColor { - return Colors.appText - } - - var subtitleColor: UIColor { - return Colors.appBackground - } - - var titleFont: UIFont { - return Fonts.light(size: 25)! - } - - var subtitleFont: UIFont { - return Fonts.semibold(size: 10)! - } - - var totalValidTokenNumber: String { - let validTokens = tokenObject.nonZeroBalance - return validTokens.count.toString() - } -} diff --git a/AlphaWallet/Tokens/ViewModels/TokensViewModel.swift b/AlphaWallet/Tokens/ViewModels/TokensViewModel.swift index d584b95fe..fb57e03b2 100644 --- a/AlphaWallet/Tokens/ViewModels/TokensViewModel.swift +++ b/AlphaWallet/Tokens/ViewModels/TokensViewModel.swift @@ -38,22 +38,10 @@ class TokensViewModel { return tokenValue * price } - var headerBalance: String? { - return amount - } - - var headerBalanceTextColor: UIColor { - return Colors.black - } - var headerBackgroundColor: UIColor { return .white } - var headerBalanceFont: UIFont { - return Fonts.semibold(size: 26)! - } - var title: String { return R.string.localizable.walletTokensTabbarItemTitle() } @@ -90,14 +78,6 @@ class TokensViewModel { return true } - var footerTextColor: UIColor { - return Colors.black - } - - var footerTextFont: UIFont { - return Fonts.light(size: 15)! - } - init( config: Config, tokens: [TokenObject], diff --git a/AlphaWallet/Tokens/Views/TokensFooterView.swift b/AlphaWallet/Tokens/Views/TokensFooterView.swift deleted file mode 100644 index 6e59a4165..000000000 --- a/AlphaWallet/Tokens/Views/TokensFooterView.swift +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright SIX DAY LLC. All rights reserved. - -import UIKit - -class TokensFooterView: UIView { - - lazy var textLabel: UILabel = { - let label = UILabel(frame: .zero) - label.textAlignment = .center - label.numberOfLines = 0 - return label - }() - - override init(frame: CGRect) { - super.init(frame: frame) - - textLabel.translatesAutoresizingMaskIntoConstraints = false - - let stackView = [textLabel].asStackView(axis: .vertical) - stackView.translatesAutoresizingMaskIntoConstraints = false - addSubview(stackView) - - NSLayoutConstraint.activate([ - stackView.topAnchor.constraint(equalTo: topAnchor, constant: StyleLayout.sideMargin), - stackView.leadingAnchor.constraint(equalTo: leadingAnchor), - stackView.trailingAnchor.constraint(equalTo: trailingAnchor), - stackView.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -StyleLayout.sideMargin), - ]) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } -} diff --git a/AlphaWallet/Tokens/Views/TokensHeaderView.swift b/AlphaWallet/Tokens/Views/TokensHeaderView.swift deleted file mode 100644 index cbe966d34..000000000 --- a/AlphaWallet/Tokens/Views/TokensHeaderView.swift +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright SIX DAY LLC. All rights reserved. - -import Foundation -import UIKit - -class TokensHeaderView: UIView { - - lazy var amountLabel: UILabel = { - let label = UILabel(frame: .zero) - label.textColor = Colors.black - label.textAlignment = .center - return label - }() - - override init(frame: CGRect) { - super.init(frame: frame) - - amountLabel.translatesAutoresizingMaskIntoConstraints = false - - let stackView = [amountLabel].asStackView(axis: .vertical) - stackView.translatesAutoresizingMaskIntoConstraints = false - addSubview(stackView) - - NSLayoutConstraint.activate([ - stackView.topAnchor.constraint(equalTo: topAnchor, constant: StyleLayout.sideMargin + 10), - stackView.leadingAnchor.constraint(equalTo: leadingAnchor), - stackView.trailingAnchor.constraint(equalTo: trailingAnchor), - stackView.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -StyleLayout.sideMargin - 10), - ]) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } -} diff --git a/AlphaWallet/Tokens/Views/TokensViewCell.swift b/AlphaWallet/Tokens/Views/TokensViewCell.swift deleted file mode 100644 index 3c7a2b544..000000000 --- a/AlphaWallet/Tokens/Views/TokensViewCell.swift +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright © 2018 Stormbird PTE. LTD. - -import Foundation -import UIKit -import Kingfisher - -class TokenTokenViewCell: UITableViewCell { - static let identifier = "AlphaWalletTokenTokenViewCell" - - let background = UIView() - let titleLabel = UILabel() - let blockchainLabel = UILabel() - let separator = UILabel() - let issuerLabel = UILabel() - - override init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - - contentView.addSubview(background) - background.translatesAutoresizingMaskIntoConstraints = false - - let bottomRowStack = [blockchainLabel, separator, issuerLabel].asStackView(spacing: 15) - - let stackView = [ - titleLabel, - bottomRowStack, - ].asStackView(axis: .vertical, spacing: 15, alignment: .leading) - stackView.translatesAutoresizingMaskIntoConstraints = false - background.addSubview(stackView) - - // TODO extract constant. Maybe StyleLayout.sideMargin - let xMargin = CGFloat(7) - let yMargin = CGFloat(4) - NSLayoutConstraint.activate([ - stackView.leadingAnchor.constraint(equalTo: background.leadingAnchor, constant: 21), - stackView.trailingAnchor.constraint(equalTo: background.trailingAnchor, constant: -21), - stackView.topAnchor.constraint(equalTo: background.topAnchor, constant: 16), - stackView.bottomAnchor.constraint(lessThanOrEqualTo: background.bottomAnchor, constant: -16), - - background.leadingAnchor.constraint(equalTo: leadingAnchor, constant: xMargin), - background.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -xMargin), - background.topAnchor.constraint(equalTo: topAnchor, constant: yMargin), - background.bottomAnchor.constraint(lessThanOrEqualTo: bottomAnchor, constant: -yMargin), - ]) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - func configure(viewModel: TokenTokenViewCellViewModel) { - selectionStyle = .none - backgroundColor = viewModel.backgroundColor - - background.backgroundColor = viewModel.contentsBackgroundColor - background.layer.cornerRadius = 20 - - contentView.backgroundColor = viewModel.backgroundColor - - titleLabel.textColor = viewModel.titleColor - titleLabel.font = viewModel.titleFont - titleLabel.text = "\(viewModel.amount) \(viewModel.title)" - titleLabel.adjustsFontSizeToFitWidth = true - - blockchainLabel.textColor = viewModel.subtitleColor - blockchainLabel.font = viewModel.subtitleFont - blockchainLabel.text = viewModel.blockChainName - - issuerLabel.textColor = viewModel.subtitleColor - issuerLabel.font = viewModel.subtitleFont - issuerLabel.text = viewModel.issuer - - separator.textColor = viewModel.subtitleColor - separator.font = viewModel.subtitleFont - separator.text = viewModel.issuerSeparator - } -} diff --git a/AlphaWallet/Tokens/Views/TokensViewControllerHeader.swift b/AlphaWallet/Tokens/Views/TokensViewControllerHeader.swift deleted file mode 100644 index ee251920f..000000000 --- a/AlphaWallet/Tokens/Views/TokensViewControllerHeader.swift +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright © 2018 Stormbird PTE. LTD. - -import UIKit - -class TokensViewControllerHeader: UIView { - let background = UIView() - let titleLabel = UILabel() - let blockchainLabel = UILabel() - let separator = UILabel() - let issuerLabel = UILabel() - - override init(frame: CGRect) { - super.init(frame: frame) - - background.translatesAutoresizingMaskIntoConstraints = false - addSubview(background) - - titleLabel.translatesAutoresizingMaskIntoConstraints = false - - let bottomRowStack = [blockchainLabel, separator, issuerLabel].asStackView(spacing: 15) - let stackView = [ - titleLabel, - bottomRowStack - ].asStackView(axis: .vertical, spacing: 15) - stackView.translatesAutoresizingMaskIntoConstraints = false - background.addSubview(stackView) - - let backgroundWidthConstraint = background.widthAnchor.constraint(equalTo: widthAnchor) - backgroundWidthConstraint.priority = .defaultHigh - // TODO extract constant. Maybe StyleLayout.sideMargin - NSLayoutConstraint.activate([ - background.leadingAnchor.constraint(equalTo: leadingAnchor), - background.topAnchor.constraint(equalTo: topAnchor), - backgroundWidthConstraint, - - stackView.leadingAnchor.constraint(equalTo: background.leadingAnchor, constant: 21), - stackView.trailingAnchor.constraint(equalTo: background.trailingAnchor, constant: -21), - stackView.topAnchor.constraint(equalTo: background.topAnchor, constant: 16), - stackView.bottomAnchor.constraint(lessThanOrEqualTo: background.bottomAnchor, constant: -16), - ]) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - func configure(viewModel: TokensViewControllerHeaderViewModel) { - frame = CGRect(x: 0, y: 0, width: 300, height: 90) - backgroundColor = viewModel.backgroundColor - - titleLabel.textColor = viewModel.titleColor - titleLabel.font = viewModel.titleFont - titleLabel.text = viewModel.title - titleLabel.adjustsFontSizeToFitWidth = true - - blockchainLabel.textColor = viewModel.subtitleColor - blockchainLabel.font = viewModel.subtitleFont - blockchainLabel.text = viewModel.blockChainName - - issuerLabel.textColor = viewModel.subtitleColor - issuerLabel.font = viewModel.subtitleFont - let issuer = viewModel.issuer - if issuer.isEmpty { - issuerLabel.text = "" - } else { - issuerLabel.text = issuer - } - separator.textColor = viewModel.subtitleColor - separator.font = viewModel.subtitleFont - separator.text = viewModel.issuerSeparator - } -} diff --git a/AlphaWallet/Transactions/ViewModels/TransactionCellViewModel.swift b/AlphaWallet/Transactions/ViewModels/TransactionCellViewModel.swift index e36262216..54157d628 100644 --- a/AlphaWallet/Transactions/ViewModels/TransactionCellViewModel.swift +++ b/AlphaWallet/Transactions/ViewModels/TransactionCellViewModel.swift @@ -10,8 +10,6 @@ struct TransactionCellViewModel { private let config: Config private let chainState: ChainState private let currentWallet: Wallet - private let shortFormatter = EtherNumberFormatter.short - private let transactionViewModel: TransactionViewModel init( diff --git a/AlphaWallet/Transactions/ViewModels/TransactionDetailsViewModel.swift b/AlphaWallet/Transactions/ViewModels/TransactionDetailsViewModel.swift index 2444e4000..9aa4fc43c 100644 --- a/AlphaWallet/Transactions/ViewModels/TransactionDetailsViewModel.swift +++ b/AlphaWallet/Transactions/ViewModels/TransactionDetailsViewModel.swift @@ -19,7 +19,6 @@ struct TransactionDetailsViewModel { private let transaction: Transaction private let config: Config private let chainState: ChainState - private let shortFormatter = EtherNumberFormatter.short private let fullFormatter = EtherNumberFormatter.full private let currencyRate: CurrencyRate? diff --git a/AlphaWallet/Transactions/ViewModels/TransactionViewModel.swift b/AlphaWallet/Transactions/ViewModels/TransactionViewModel.swift index 6b983d9a6..007a32ad5 100644 --- a/AlphaWallet/Transactions/ViewModels/TransactionViewModel.swift +++ b/AlphaWallet/Transactions/ViewModels/TransactionViewModel.swift @@ -52,10 +52,6 @@ struct TransactionViewModel { return transactionValue(for: fullFormatter) } - var shortAmountAttributedString: NSAttributedString { - return amountAttributedString(for: shortValue) - } - var fullAmountAttributedString: NSAttributedString { return amountAttributedString(for: fullValue) } diff --git a/AlphaWallet/Transactions/ViewModels/TransactionsViewModel.swift b/AlphaWallet/Transactions/ViewModels/TransactionsViewModel.swift index 89c82a81a..0088f44d0 100644 --- a/AlphaWallet/Transactions/ViewModels/TransactionsViewModel.swift +++ b/AlphaWallet/Transactions/ViewModels/TransactionsViewModel.swift @@ -52,10 +52,6 @@ struct TransactionsViewModel { return Fonts.regular(size: 16)! } - var headerBorderColor: UIColor { - return UIColor(hex: "e1e1e1") - } - var numberOfSections: Int { return items.count } diff --git a/AlphaWallet/Transfer/Controllers/TransactionConfigurator.swift b/AlphaWallet/Transfer/Controllers/TransactionConfigurator.swift index 884602c55..0cc352154 100644 --- a/AlphaWallet/Transfer/Controllers/TransactionConfigurator.swift +++ b/AlphaWallet/Transfer/Controllers/TransactionConfigurator.swift @@ -34,10 +34,6 @@ class TransactionConfigurator { return transaction.gasPrice ?? configuration.gasPrice }() - var calculatedGasLimit: BigInt? { - return transaction.gasLimit - } - var requestEstimateGas: Bool { return transaction.gasLimit == .none } diff --git a/AlphaWallet/Transfer/ViewControllers/SendViewController.swift b/AlphaWallet/Transfer/ViewControllers/SendViewController.swift index bfc973398..ae7b03d6e 100644 --- a/AlphaWallet/Transfer/ViewControllers/SendViewController.swift +++ b/AlphaWallet/Transfer/ViewControllers/SendViewController.swift @@ -79,11 +79,6 @@ class SendViewController: UIViewController, CanScanQRCode, TokenVerifiableStatus let transferType: TransferType let storage: TokensDataStore let ethPrice: Subscribable - - private var allowedCharacters: String = { - let decimalSeparator = Locale.current.decimalSeparator ?? "." - return "0123456789" + decimalSeparator - }() private var gasPrice: BigInt? private var data = Data() lazy var decimalFormatter: DecimalFormatter = { diff --git a/AlphaWallet/Transfer/ViewModels/SendViewModel.swift b/AlphaWallet/Transfer/ViewModels/SendViewModel.swift index 15e7e6287..1ef369eea 100644 --- a/AlphaWallet/Transfer/ViewModels/SendViewModel.swift +++ b/AlphaWallet/Transfer/ViewModels/SendViewModel.swift @@ -40,26 +40,6 @@ struct SendViewModel { } } - var textFieldTextColor: UIColor { - return Colors.appText - } - var textFieldFont: UIFont { - if ScreenChecker().isNarrowScreen() { - return Fonts.light(size: 11)! - } else { - return Fonts.light(size: 15)! - } - } - var textFieldBorderColor: UIColor { - return Colors.appBackground - } - var textFieldBorderWidth: CGFloat { - return 1 - } - var textFieldHorizontalPadding: CGFloat { - return 22 - } - var showAlternativeAmount: Bool { guard let currentTokenInfo = storage.tickers?[destinationAddress.description], let price = Double(currentTokenInfo.price_usd), price > 0 else { return false @@ -70,9 +50,6 @@ struct SendViewModel { var myAddressText: String { return session.account.address.description } - var addressColor: UIColor { - return Colors.appText - } var addressFont: UIFont { return Fonts.semibold(size: 14)! } diff --git a/AlphaWallet/UI/ContainerView.swift b/AlphaWallet/UI/ContainerView.swift deleted file mode 100644 index 818780b57..000000000 --- a/AlphaWallet/UI/ContainerView.swift +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright SIX DAY LLC. All rights reserved. - -import Foundation -import UIKit - -class ContainerView: UIView { - - public init(innerView: UIView, layoutMargins: UIEdgeInsets) { - - super.init(frame: .zero) - - let containerView = UIView() - containerView.translatesAutoresizingMaskIntoConstraints = false - containerView.preservesSuperviewLayoutMargins = true - containerView.layoutMargins = layoutMargins - containerView.addSubview(innerView) - addSubview(containerView) - - innerView.translatesAutoresizingMaskIntoConstraints = false - innerView.preservesSuperviewLayoutMargins = true - - NSLayoutConstraint.activate([ - containerView.topAnchor.constraint(equalTo: topAnchor), - containerView.trailingAnchor.constraint(equalTo: trailingAnchor), - containerView.bottomAnchor.constraint(equalTo: bottomAnchor), - containerView.leadingAnchor.constraint(equalTo: leadingAnchor), - - innerView.topAnchor.constraint(equalTo: containerView.topAnchor), - innerView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor), - innerView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), - innerView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor), - ]) - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } -} diff --git a/AlphaWallet/UI/FloatLabelCell.swift b/AlphaWallet/UI/FloatLabelCell.swift index 17a5b746e..685efa580 100644 --- a/AlphaWallet/UI/FloatLabelCell.swift +++ b/AlphaWallet/UI/FloatLabelCell.swift @@ -159,163 +159,6 @@ public class TextFloatLabelCell: _FloatLabelCell, CellType { } } -public class IntFloatLabelCell: _FloatLabelCell, CellType { - - required public init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - public override func setup() { - super.setup() - textField?.autocorrectionType = .default - textField?.autocapitalizationType = .none - textField?.keyboardType = .numberPad - } -} - -public class PhoneFloatLabelCell: _FloatLabelCell, CellType { - - required public init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - public override func setup() { - super.setup() - textField?.keyboardType = .phonePad - } -} - -public class NameFloatLabelCell: _FloatLabelCell, CellType { - - required public init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - public override func setup() { - super.setup() - textField.autocorrectionType = .no - textField.autocapitalizationType = .words - textField.keyboardType = .asciiCapable - } -} - -public class EmailFloatLabelCell: _FloatLabelCell, CellType { - - required public init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - public override func setup() { - super.setup() - textField?.autocorrectionType = .no - textField?.autocapitalizationType = .none - textField?.keyboardType = .emailAddress - } -} - -public class PasswordFloatLabelCell: _FloatLabelCell, CellType { - - required public init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - public override func setup() { - super.setup() - textField?.autocorrectionType = .no - textField?.autocapitalizationType = .none - textField?.keyboardType = .asciiCapable - textField?.isSecureTextEntry = true - } -} - -public class DecimalFloatLabelCell: _FloatLabelCell, CellType { - - required public init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - public override func setup() { - super.setup() - textField?.keyboardType = .decimalPad - } -} - -public class URLFloatLabelCell: _FloatLabelCell, CellType { - - required public init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - public override func setup() { - super.setup() - textField?.keyboardType = .URL - } -} - -public class TwitterFloatLabelCell: _FloatLabelCell, CellType { - - required public init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - public override func setup() { - super.setup() - textField?.autocorrectionType = .no - textField?.autocapitalizationType = .none - textField?.keyboardType = .twitter - } -} - -public class AccountFloatLabelCell: _FloatLabelCell, CellType { - - required public init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - public override func setup() { - super.setup() - textField?.autocorrectionType = .no - textField?.autocapitalizationType = .none - textField?.keyboardType = .asciiCapable - } -} - // MARK: FloatLabelRow open class FloatFieldRow: FormatteableRow where Cell: BaseCell, Cell: TextFieldCell { @@ -329,107 +172,3 @@ public final class TextFloatLabelRow: FloatFieldRow, RowType super.init(tag: tag) } } -public final class IntFloatLabelRow: FloatFieldRow, RowType { - public required init(tag: String?) { - super.init(tag: tag) - } -} -public final class DecimalFloatLabelRow: FloatFieldRow, RowType { - public required init(tag: String?) { - super.init(tag: tag) - } -} -public final class URLFloatLabelRow: FloatFieldRow, RowType { - public required init(tag: String?) { - super.init(tag: tag) - } -} -public final class TwitterFloatLabelRow: FloatFieldRow, RowType { - public required init(tag: String?) { - super.init(tag: tag) - } -} -public final class AccountFloatLabelRow: FloatFieldRow, RowType { - public required init(tag: String?) { - super.init(tag: tag) - } -} -public final class PasswordFloatLabelRow: FloatFieldRow, RowType { - public required init(tag: String?) { - super.init(tag: tag) - } -} -public final class NameFloatLabelRow: FloatFieldRow, RowType { - public required init(tag: String?) { - super.init(tag: tag) - } -} -public final class EmailFloatLabelRow: FloatFieldRow, RowType { - public required init(tag: String?) { - super.init(tag: tag) - } -} - -public final class ImageCheckRow: Row>, SelectableRowType, RowType { - public var selectableValue: T? - required public init(tag: String?) { - super.init(tag: tag) - displayValueFor = nil - } -} - -public class ImageCheckCell : Cell, CellType { - - required public init(style: UITableViewCellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - /// Image for selected state - lazy public var trueImage: UIImage = { - return UIImage(named: "selected")! - }() - - /// Image for unselected state - lazy public var falseImage: UIImage = { - return UIImage(named: "unselected")! - }() - - public override func update() { - super.update() - checkImageView?.image = row.value != nil ? trueImage : falseImage - checkImageView?.sizeToFit() - } - - /// Image view to render images. If `accessoryType` is set to `checkmark` - /// will create a new `UIImageView` and set it as `accessoryView`. - /// Otherwise returns `self.imageView`. - open var checkImageView: UIImageView? { - guard accessoryType == .checkmark else { - return self.imageView - } - - guard let accessoryView = accessoryView else { - let imageView = UIImageView() - self.accessoryView = imageView - return imageView - } - - return accessoryView as? UIImageView - } - - public override func setup() { - super.setup() - accessoryType = .none - } - - public override func didSelect() { - row.reload() - row.select() - row.deselect() - } - -} diff --git a/AlphaWallet/UI/Form/FieldAppereance.swift b/AlphaWallet/UI/Form/FieldAppereance.swift deleted file mode 100644 index 4238cb45a..000000000 --- a/AlphaWallet/UI/Form/FieldAppereance.swift +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright SIX DAY LLC. All rights reserved. - -import Foundation -import UIKit - -class FieldAppereance { - - static func addressFieldRightView( - pasteAction: @escaping () -> Void, - qrAction: @escaping () -> Void - ) -> UIView { - let pasteButton = Button(size: .normal, style: .borderless) - pasteButton.translatesAutoresizingMaskIntoConstraints = false - pasteButton.setTitle(R.string.localizable.sendPasteButtonTitle(), for: .normal) - UITapGestureRecognizer(addToView: pasteButton) { - pasteAction() - } - - let qrButton = UIButton(type: .custom) - qrButton.translatesAutoresizingMaskIntoConstraints = false - qrButton.frame = CGRect(x: 0, y: 0, width: 44, height: 44) - qrButton.setImage(R.image.qr_code_icon(), for: .normal) - qrButton.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10) - UITapGestureRecognizer(addToView: qrButton) { - qrAction() - } - let recipientRightView = [pasteButton, qrButton].asStackView(distribution: .equalSpacing, spacing: 2) - recipientRightView.translatesAutoresizingMaskIntoConstraints = false - return recipientRightView - } -} diff --git a/AlphaWallet/UI/Form/InfoHeaderView.swift b/AlphaWallet/UI/Form/InfoHeaderView.swift deleted file mode 100644 index 25828ea0a..000000000 --- a/AlphaWallet/UI/Form/InfoHeaderView.swift +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright SIX DAY LLC. All rights reserved. - -import Foundation -import UIKit - -class InfoHeaderView: UIView { - - let amountLabel = UILabel(frame: .zero) - let logoImageView = UIImageView(frame: .zero) - let label = UILabel(frame: .zero) - - override init(frame: CGRect = .zero) { - - super.init(frame: frame) - - logoImageView.translatesAutoresizingMaskIntoConstraints = false - logoImageView.contentMode = .scaleAspectFit - - label.translatesAutoresizingMaskIntoConstraints = false - label.numberOfLines = 2 - - addSubview(logoImageView) - addSubview(label) - - NSLayoutConstraint.activate([ - logoImageView.widthAnchor.constraint(equalToConstant: 70), - logoImageView.centerYAnchor.constraint(equalTo: centerYAnchor), - logoImageView.trailingAnchor.constraint(equalTo: label.leadingAnchor, constant: -20), - logoImageView.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 20), - - label.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -20), - label.topAnchor.constraint(equalTo: topAnchor), - label.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) - - backgroundColor = .clear - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } -} diff --git a/AlphaWalletTests/Coordinators/InCoordinatorTests.swift b/AlphaWalletTests/Coordinators/InCoordinatorTests.swift index dbda615e3..1392f113a 100644 --- a/AlphaWalletTests/Coordinators/InCoordinatorTests.swift +++ b/AlphaWalletTests/Coordinators/InCoordinatorTests.swift @@ -14,6 +14,7 @@ class InCoordinatorTests: XCTestCase { navigationController: FakeNavigationController(), wallet: .make(), keystore: FakeKeystore(wallets: [wallet]), + assetDefinitionStore: AssetDefinitionStore(), config: config ) @@ -44,6 +45,7 @@ class InCoordinatorTests: XCTestCase { navigationController: FakeNavigationController(), wallet: .make(), keystore: keystore, + assetDefinitionStore: AssetDefinitionStore(), config: .make() ) @@ -62,6 +64,7 @@ class InCoordinatorTests: XCTestCase { navigationController: FakeNavigationController(), wallet: wallet, keystore: FakeKeystore(wallets: [wallet]), + assetDefinitionStore: AssetDefinitionStore(), config: .make() ) coordinator.showTabBar(for: .make()) @@ -80,6 +83,7 @@ class InCoordinatorTests: XCTestCase { navigationController: FakeNavigationController(), wallet: wallet, keystore: FakeKeystore(wallets: [wallet]), + assetDefinitionStore: AssetDefinitionStore(), config: .make() ) coordinator.showTabBar(for: .make()) @@ -97,6 +101,7 @@ class InCoordinatorTests: XCTestCase { navigationController: FakeNavigationController(), wallet: .make(), keystore: FakeEtherKeystore(), + assetDefinitionStore: AssetDefinitionStore(), config: .make() ) coordinator.showTabBar(for: .make()) @@ -128,6 +133,7 @@ class InCoordinatorTests: XCTestCase { navigationController: FakeNavigationController(), wallet: .make(), keystore: FakeEtherKeystore(), + assetDefinitionStore: AssetDefinitionStore(), config: .make() ) coordinator.showTabBar(for: .make())