diff --git a/DashWallet.xcodeproj/project.pbxproj b/DashWallet.xcodeproj/project.pbxproj index b9f175667..dc1743059 100644 --- a/DashWallet.xcodeproj/project.pbxproj +++ b/DashWallet.xcodeproj/project.pbxproj @@ -7,7 +7,8 @@ objects = { /* Begin PBXBuildFile section */ - 025379347B50D32FBC496201 /* libPods-DashWalletScreenshotsUITests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D1076C503456F2EAB8B218B5 /* libPods-DashWalletScreenshotsUITests.a */; }; + 09A6CB66AEDCEA04C9D670DF /* libPods-TodayExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D18D0D69B7365947239D4F97 /* libPods-TodayExtension.a */; }; + 09F4E16CAEAE41E2C6EA7A27 /* libPods-WatchApp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 38C4CA9D73A147BA44601741 /* libPods-WatchApp.a */; }; 0F36937E2919A5DB007F4E91 /* TwoFactorAuthViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F36937D2919A5DB007F4E91 /* TwoFactorAuthViewController.swift */; }; 0F36937F2919A70B007F4E91 /* Coinbase.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0F3693812919A70B007F4E91 /* Coinbase.storyboard */; }; 0F6EDFC428C896BD000427E7 /* CoinbaseUserAuthInformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6EDF9D28C896BC000427E7 /* CoinbaseUserAuthInformation.swift */; }; @@ -83,13 +84,6 @@ 11E47BAB28EB38510097CFA0 /* SendCoinsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11E47BAA28EB38510097CFA0 /* SendCoinsService.swift */; }; 11E47BAD28EB3A7D0097CFA0 /* CrowdNode+Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11E47BAC28EB3A7D0097CFA0 /* CrowdNode+Constants.swift */; }; 11ED906B29681773003784F9 /* StakingInfoDialogController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11ED906A29681773003784F9 /* StakingInfoDialogController.swift */; }; - 192E5E737398F69154940D09 /* libPods-WatchApp Extension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1946AE4B077923ED5BEF70FD /* libPods-WatchApp Extension.a */; }; - 1D267CDF2ECF86920053AD68 /* AddProviderToGiftCardsTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D267CDE2ECF86920053AD68 /* AddProviderToGiftCardsTable.swift */; }; - 1D267CE02ECF86920053AD68 /* AddProviderToGiftCardsTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D267CDE2ECF86920053AD68 /* AddProviderToGiftCardsTable.swift */; }; - 1DAD1B012ED4037F00C8090E /* GeoRestrictionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DAD1B002ED4037F00C8090E /* GeoRestrictionService.swift */; }; - 1DAD1B022ED4037F00C8090E /* GeoRestrictionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DAD1B002ED4037F00C8090E /* GeoRestrictionService.swift */; }; - 1DAD1AA92ED2037F00C8090E /* BarcodeScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DAD1AA82ED2037F00C8090E /* BarcodeScanner.swift */; }; - 1DAD1AAA2ED2037F00C8090E /* BarcodeScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DAD1AA82ED2037F00C8090E /* BarcodeScanner.swift */; }; 1DD7BE9CD62998F12672140D /* RadioButtonRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 708B9F2B4B1E4C31B5010CDF /* RadioButtonRow.swift */; }; 222040C61C1A1940005CE1C3 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 222040C51C1A1940005CE1C3 /* WebKit.framework */; }; 222E7F561C46E9B8009AB45D /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 222E7F551C46E9B8009AB45D /* Security.framework */; }; @@ -322,6 +316,8 @@ 2AF26F3B230C0E4C007F9228 /* DWBaseSeedViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AF26F3A230C0E4C007F9228 /* DWBaseSeedViewController.m */; }; 2AFCB9C423BE76EC00FF59A6 /* DWUpholdTransactionObject+DWView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AFCB9C323BE76EC00FF59A6 /* DWUpholdTransactionObject+DWView.m */; }; 2AFF01DB243F4559003718DC /* DWDPRegistrationStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AFF01DA243F4559003718DC /* DWDPRegistrationStatus.m */; }; + 3198E8048E48954CD87BAD11 /* libPods-DashWalletTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C56BFBBABD008D06578BDD9C /* libPods-DashWalletTests.a */; }; + 3A0C6A2A57DFF02865E36200 /* ImportPrivateKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53435DCAF024BC82E0247F3 /* ImportPrivateKeySheet.swift */; }; 470617D6299A671900DCC667 /* CrowdNodeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470617D5299A671900DCC667 /* CrowdNodeCell.swift */; }; 47081197298CF20C003FCA3D /* Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47081196298CF20B003FCA3D /* Transaction.swift */; }; 4708119F2990F56F003FCA3D /* TransactionDataItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4708119E2990F56F003FCA3D /* TransactionDataItem.swift */; }; @@ -451,6 +447,7 @@ 47AE8C0728C2274200490F5E /* PointOfUseListSearchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8C0628C2274200490F5E /* PointOfUseListSearchCell.swift */; }; 47AE8C1328C5F0A700490F5E /* POIDetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8C1228C5F0A600490F5E /* POIDetailsViewController.swift */; }; 47AE8C1528C6378E00490F5E /* HairlineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8C1428C6378E00490F5E /* HairlineView.swift */; }; + 47AE8C1828C63F9C00490F5E /* POIDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8C1728C63F9C00490F5E /* POIDetailsView.swift */; }; 47AE8C1A28C6A21A00490F5E /* AllMerchantLocationsDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8C1928C6A21A00490F5E /* AllMerchantLocationsDataProvider.swift */; }; 47AE8C1C28C6AA2500490F5E /* PointOfUseLocationServicePopup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8C1B28C6AA2400490F5E /* PointOfUseLocationServicePopup.swift */; }; 47AF180529070B720025803E /* Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AF180429070B720025803E /* Types.swift */; }; @@ -494,8 +491,6 @@ 47F4B6CD29485A8B00AED4C9 /* ConfirmOrderCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F4B6CC29485A8B00AED4C9 /* ConfirmOrderCells.swift */; }; 47FA3AFF29350929008D58DC /* SyncingActivityMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47FA3AFE29350929008D58DC /* SyncingActivityMonitor.swift */; }; 47FA3B0229364991008D58DC /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47FA3B0129364991008D58DC /* HTTPClient.swift */; }; - 65A765E497479DB5E3D23971 /* libPods-TodayExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B6C69EDE30817777EA98257C /* libPods-TodayExtension.a */; }; - 7307A8C306EFB9D9F6B655D2 /* libPods-dashpay.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58E654E571C2BE6208FBF352 /* libPods-dashpay.a */; }; 7502A4872AE401EF00ACDDD3 /* UsernameVotingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7502A4862AE401EF00ACDDD3 /* UsernameVotingViewController.swift */; }; 7503643A2C89CFB70029EC0D /* CoinJoinProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750364392C89CFB70029EC0D /* CoinJoinProgressView.swift */; }; 7503643B2C89CFB70029EC0D /* CoinJoinProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750364392C89CFB70029EC0D /* CoinJoinProgressView.swift */; }; @@ -561,8 +556,6 @@ 75387B4B2E0400C300BCCC72 /* MerchantDenominations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75387B492E0400C300BCCC72 /* MerchantDenominations.swift */; }; 753CD8792E2E218800BCF070 /* mixing_anim.json in Resources */ = {isa = PBXBuildFile; fileRef = 753CD8782E2E218800BCF070 /* mixing_anim.json */; }; 753CD87A2E2E218800BCF070 /* mixing_anim.json in Resources */ = {isa = PBXBuildFile; fileRef = 753CD8782E2E218800BCF070 /* mixing_anim.json */; }; - 753CE9D82E12B6FB004A0A13 /* POIDetailsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 753CE9D72E12B6F9004A0A13 /* POIDetailsViewModel.swift */; }; - 753CE9D92E12B6FB004A0A13 /* POIDetailsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 753CE9D72E12B6F9004A0A13 /* POIDetailsViewModel.swift */; }; 753E46E82DE1E24300A3FF2A /* CTXSpendModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 753E46E72DE1E24300A3FF2A /* CTXSpendModels.swift */; }; 753E46E92DE1E24300A3FF2A /* CTXSpendModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 753E46E72DE1E24300A3FF2A /* CTXSpendModels.swift */; }; 753F75342DD0D42300D40DFE /* DashSpendPayScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 753F75332DD0D41900D40DFE /* DashSpendPayScreen.swift */; }; @@ -577,18 +570,20 @@ 754119E01CDA93FF0042DC51 /* NotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BAE12BE61B2DEE7F00895CC5 /* NotificationCenter.framework */; }; 754495DD2AE91B6300492817 /* GroupedRequestCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754495DC2AE91B6300492817 /* GroupedRequestCell.swift */; }; 754495DF2AE91D3500492817 /* UsernameRequestCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754495DE2AE91D3500492817 /* UsernameRequestCell.swift */; }; - 754565C82DAA52A000DA4E8E /* CTXSpendAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C42DAA52A000DA4E8E /* CTXSpendAPI.swift */; }; - 754565CA2DAA52A000DA4E8E /* CTXSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C72DAA52A000DA4E8E /* CTXSpendRepository.swift */; }; - 754565CB2DAA52A000DA4E8E /* CTXSpendEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C52DAA52A000DA4E8E /* CTXSpendEndpoint.swift */; }; - 754565CC2DAA52A000DA4E8E /* CTXSpendAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C42DAA52A000DA4E8E /* CTXSpendAPI.swift */; }; - 754565CE2DAA52A000DA4E8E /* CTXSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C72DAA52A000DA4E8E /* CTXSpendRepository.swift */; }; - 754565CF2DAA52A000DA4E8E /* CTXSpendEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C52DAA52A000DA4E8E /* CTXSpendEndpoint.swift */; }; + 754565C82DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C42DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift */; }; + 754565CA2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C72DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift */; }; + 754565CB2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C52DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift */; }; + 754565CC2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C42DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift */; }; + 754565CE2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C72DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift */; }; + 754565CF2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C52DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift */; }; 754565D12DABA5F300DA4E8E /* MerchantTypesDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565D02DABA5EB00DA4E8E /* MerchantTypesDialog.swift */; }; 754565D22DABA5F300DA4E8E /* MerchantTypesDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565D02DABA5EB00DA4E8E /* MerchantTypesDialog.swift */; }; - 7545ED532DA91A2F0075F45C /* CTXConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED522DA91A2F0075F45C /* CTXConstants.swift */; }; - 7545ED542DA91A2F0075F45C /* CTXConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED522DA91A2F0075F45C /* CTXConstants.swift */; }; + 7545ED532DA91A2F0075F45C /* DashSpend/CTXConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED522DA91A2F0075F45C /* DashSpend/CTXConstants.swift */; }; + 7545ED542DA91A2F0075F45C /* DashSpend/CTXConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED522DA91A2F0075F45C /* DashSpend/CTXConstants.swift */; }; 7545ED572DA91AF10075F45C /* DashSpendUserAuthViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED562DA91AEA0075F45C /* DashSpendUserAuthViewModel.swift */; }; 7545ED582DA91AF10075F45C /* DashSpendUserAuthViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED562DA91AEA0075F45C /* DashSpendUserAuthViewModel.swift */; }; + 7545ED5D2DA91F590075F45C /* DashSpendTermsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED5C2DA91F590075F45C /* DashSpendTermsScreen.swift */; }; + 7545ED5E2DA91F590075F45C /* DashSpendTermsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED5C2DA91F590075F45C /* DashSpendTermsScreen.swift */; }; 7545ED602DA91FC60075F45C /* NumericKeyboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED5F2DA91FC60075F45C /* NumericKeyboardView.swift */; }; 7545ED612DA91FC60075F45C /* NumericKeyboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED5F2DA91FC60075F45C /* NumericKeyboardView.swift */; }; 7549BE532DEAEA18004F0BAF /* MetadataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7549BE522DEAEA14004F0BAF /* MetadataProvider.swift */; }; @@ -655,22 +650,6 @@ 757514E22B15DB510026AD8E /* ShadowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757514E12B15DB510026AD8E /* ShadowView.swift */; }; 757514E32B15DF7C0026AD8E /* ShadowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757514E12B15DB510026AD8E /* ShadowView.swift */; }; 757514E52B1735370026AD8E /* JoinDashPayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757514E42B1735370026AD8E /* JoinDashPayView.swift */; }; - 757AEBC52E113173007BE8B4 /* PiggyCardsConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBC42E113173007BE8B4 /* PiggyCardsConstants.swift */; }; - 757AEBC62E113173007BE8B4 /* PiggyCardsConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBC42E113173007BE8B4 /* PiggyCardsConstants.swift */; }; - 757AEBC82E113185007BE8B4 /* PiggyCardsModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBC72E113185007BE8B4 /* PiggyCardsModels.swift */; }; - 757AEBC92E113185007BE8B4 /* PiggyCardsModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBC72E113185007BE8B4 /* PiggyCardsModels.swift */; }; - 757AEBCE2E1131A1007BE8B4 /* PiggyCardsAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBCA2E1131A1007BE8B4 /* PiggyCardsAPI.swift */; }; - 757AEBD02E1131A1007BE8B4 /* PiggyCardsRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBCC2E1131A1007BE8B4 /* PiggyCardsRepository.swift */; }; - 757AEBD12E1131A1007BE8B4 /* PiggyCardsEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBCB2E1131A1007BE8B4 /* PiggyCardsEndpoint.swift */; }; - 757AEBD22E1131A1007BE8B4 /* PiggyCardsAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBCA2E1131A1007BE8B4 /* PiggyCardsAPI.swift */; }; - 757AEBD42E1131A1007BE8B4 /* PiggyCardsRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBCC2E1131A1007BE8B4 /* PiggyCardsRepository.swift */; }; - 757AEBD52E1131A1007BE8B4 /* PiggyCardsEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBCB2E1131A1007BE8B4 /* PiggyCardsEndpoint.swift */; }; - 757AEBDA2E1139B4007BE8B4 /* DashSpendTermsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBD92E1139B4007BE8B4 /* DashSpendTermsScreen.swift */; }; - 757AEBDB2E1139B4007BE8B4 /* DashSpendTermsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBD92E1139B4007BE8B4 /* DashSpendTermsScreen.swift */; }; - 757AEBE12E114E9B007BE8B4 /* DashSpendRepositoryFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBE02E114E9B007BE8B4 /* DashSpendRepositoryFactory.swift */; }; - 757AEBE22E114E9B007BE8B4 /* DashSpendRepositoryFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBE02E114E9B007BE8B4 /* DashSpendRepositoryFactory.swift */; }; - 757AEBE42E114EE5007BE8B4 /* DashSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBE32E114EE0007BE8B4 /* DashSpendRepository.swift */; }; - 757AEBE52E114EE5007BE8B4 /* DashSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757AEBE32E114EE0007BE8B4 /* DashSpendRepository.swift */; }; 757B937D2BFF4F93002046A5 /* GroupedTransactionsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757B937C2BFF4F93002046A5 /* GroupedTransactionsScreen.swift */; }; 757B937E2BFF4F93002046A5 /* GroupedTransactionsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757B937C2BFF4F93002046A5 /* GroupedTransactionsScreen.swift */; }; 757E09991ADB8EEB006FD352 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 757E09971ADB8EEB006FD352 /* Localizable.strings */; }; @@ -703,15 +682,11 @@ 759C8FA02B593589004B1305 /* CrowdNodeAPYView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759C8F9E2B593589004B1305 /* CrowdNodeAPYView.swift */; }; 75A0A3F32CA7DBCF003ED48B /* TimeUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A0A3F22CA7DBCF003ED48B /* TimeUtils.swift */; }; 75A0A3F42CA7DBCF003ED48B /* TimeUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A0A3F22CA7DBCF003ED48B /* TimeUtils.swift */; }; - 7DC62C07EC8B45E0B605409B669257E9 /* PercentageFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B18E3F81E54074AC0E0CECAB2421C2 /* PercentageFormatter.swift */; }; - 85A75E8713D440908EAF3F7A9BADF9E2 /* PercentageFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B18E3F81E54074AC0E0CECAB2421C2 /* PercentageFormatter.swift */; }; - 75A2F3032DE48C860046BE17 /* CTXSpendTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A2F3022DE48C860046BE17 /* CTXSpendTokenService.swift */; }; - 75A2F3042DE48C860046BE17 /* CTXSpendTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A2F3022DE48C860046BE17 /* CTXSpendTokenService.swift */; }; + 75A2F3032DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A2F3022DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift */; }; + 75A2F3042DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A2F3022DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift */; }; 75A8C1652AE5726B0042256E /* UsernameRequestsDAO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A8C1632AE5725C0042256E /* UsernameRequestsDAO.swift */; }; 75A8C1672AE5734A0042256E /* UsernameRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A8C1662AE5734A0042256E /* UsernameRequest.swift */; }; 75A8C1692AE6A1AC0042256E /* VotingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A8C1682AE6A1AC0042256E /* VotingViewModel.swift */; }; - 75A92B8C2E0FDDA900BFFA2D /* GiftCardProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A92B8B2E0FDDA900BFFA2D /* GiftCardProvider.swift */; }; - 75A92B8D2E0FDDA900BFFA2D /* GiftCardProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A92B8B2E0FDDA900BFFA2D /* GiftCardProvider.swift */; }; 75AA33CC2BF9C82700F12465 /* ModalDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75AA33CB2BF9C82700F12465 /* ModalDialog.swift */; }; 75AA33CD2BF9C82700F12465 /* ModalDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75AA33CB2BF9C82700F12465 /* ModalDialog.swift */; }; 75AA33CF2BF9D44A00F12465 /* ButtonsGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75AA33CE2BF9D44A00F12465 /* ButtonsGroup.swift */; }; @@ -785,14 +760,6 @@ 75EE38D82CBFE52E00845FFF /* ContactsPlaceholderViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EE38D72CBFE52B00845FFF /* ContactsPlaceholderViewController.swift */; }; 75EE9F422DE2F750000AD1AD /* DashSpendConfirmationDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EE9F412DE2F74B000AD1AD /* DashSpendConfirmationDialog.swift */; }; 75EE9F432DE2F750000AD1AD /* DashSpendConfirmationDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EE9F412DE2F74B000AD1AD /* DashSpendConfirmationDialog.swift */; }; - 75F3EF4B2E13D1670092A0D9 /* PiggyCardsTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F3EF4A2E13D1670092A0D9 /* PiggyCardsTokenService.swift */; }; - 75F3EF4C2E13D1670092A0D9 /* PiggyCardsTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F3EF4A2E13D1670092A0D9 /* PiggyCardsTokenService.swift */; }; - 75F3EF4D2E13D1680092A0D1 /* PiggyCardsCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F3EF4B2E13D1680092A0D0 /* PiggyCardsCache.swift */; }; - 75F3EF4E2E13D1680092A0D2 /* PiggyCardsCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F3EF4B2E13D1680092A0D0 /* PiggyCardsCache.swift */; }; - 75F3EF4E2E1553BF0092A0D9 /* DashSpendError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F3EF4D2E1553BB0092A0D9 /* DashSpendError.swift */; }; - 75F3EF4F2E1553BF0092A0D9 /* DashSpendError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F3EF4D2E1553BB0092A0D9 /* DashSpendError.swift */; }; - 75F3EF562E16AD060092A0D9 /* POIDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F3EF542E16AD060092A0D9 /* POIDetailsView.swift */; }; - 75F3EF582E16AD060092A0D9 /* POIDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F3EF542E16AD060092A0D9 /* POIDetailsView.swift */; }; 75F3F00D2C48F819004470EA /* RootEditProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759063EC2C42687F002F2AA9 /* RootEditProfileViewController.swift */; }; 75F51AAD2ABD8C800057B499 /* IntegrationViewController+Uphold.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F51AAC2ABD8C800057B499 /* IntegrationViewController+Uphold.swift */; }; 75F51AAF2ABD8D070057B499 /* IntegrationViewController+Coinbase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F51AAE2ABD8D070057B499 /* IntegrationViewController+Coinbase.swift */; }; @@ -811,14 +778,24 @@ 75FFD6C52BF494E20032879E /* HomeViewController+ImportPrivateKeyDelegateImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FFD6C32BF494E20032879E /* HomeViewController+ImportPrivateKeyDelegateImpl.swift */; }; 75FFD6C72BF495800032879E /* HomeViewController+Shortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FFD6C62BF495800032879E /* HomeViewController+Shortcuts.swift */; }; 75FFD6C82BF495800032879E /* HomeViewController+Shortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FFD6C62BF495800032879E /* HomeViewController+Shortcuts.swift */; }; - 9987309B7B5B1EAD3B7A98F0 /* libPods-dashwallet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 640B293ED8F6BC5016CD13EC /* libPods-dashwallet.a */; }; + 893AE6F535290DD1CEE89219 /* ImportPrivateKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53435DCAF024BC82E0247F3 /* ImportPrivateKeySheet.swift */; }; + 91F0B8B92F3FAB7C00E713AE /* KeysOverviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91F0B8B82F3FAB7C00E713AE /* KeysOverviewView.swift */; }; + 91F0B8BA2F3FAB7C00E713AE /* KeysOverviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91F0B8B82F3FAB7C00E713AE /* KeysOverviewView.swift */; }; + A30AF4A11189A2EFB04EB535 /* libPods-WatchApp Extension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C22BC09CF6178544B2300A4 /* libPods-WatchApp Extension.a */; }; + AA0000012DUMMYID001234567 /* AddProviderToGiftCardsTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000032DUMMYID001234567 /* AddProviderToGiftCardsTable.swift */; }; + AA0000022DUMMYID001234567 /* AddProviderToGiftCardsTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000032DUMMYID001234567 /* AddProviderToGiftCardsTable.swift */; }; + AA0000042DUMMYID001234567 /* DashSpend/GiftCardProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000062DUMMYID001234567 /* DashSpend/GiftCardProvider.swift */; }; + AA0000052DUMMYID001234567 /* DashSpend/GiftCardProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000062DUMMYID001234567 /* DashSpend/GiftCardProvider.swift */; }; + AE99C52D130994B720927E8F /* libPods-dashpay.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D6E23A2DA41FE189E773C705 /* libPods-dashpay.a */; }; + AEAE60406265A73AFD573FD1 /* libPods-dashwallet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3BA4BE42F52588AED15BF7E /* libPods-dashwallet.a */; }; + B453B34B871E4125607DACDC /* NavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD6615F1246B5935365B05BD /* NavigationBar.swift */; }; BA4A72671BE11AFA00E39C01 /* BRAWWeakTimerTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA4A72661BE11AFA00E39C01 /* BRAWWeakTimerTarget.swift */; }; BA54D3CE1B2EA74000C9CB28 /* TodayExtensionAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BA54D3CD1B2EA74000C9CB28 /* TodayExtensionAssets.xcassets */; }; BA6645961BD924EB007A6BB1 /* BRAWTransactionRowControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA6645951BD924EB007A6BB1 /* BRAWTransactionRowControl.swift */; }; BA7B537B1BDD1DCF00355E8D /* LoadingIndicator.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BA7B537A1BDD1DCF00355E8D /* LoadingIndicator.xcassets */; }; BA913BE21BD57E4D005A7C0E /* Interface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BA913BE01BD57E4D005A7C0E /* Interface.storyboard */; }; BA913BE41BD57E4D005A7C0E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BA913BE31BD57E4D005A7C0E /* Assets.xcassets */; }; - BA913BEB1BD57E4D005A7C0E /* WatchApp Extension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = BA913BEA1BD57E4D005A7C0E /* WatchApp Extension.appex */; settings = {ATTRIBUTES = (AA3A466CEAA14A01AA79EA69, RemoveHeadersOnCopy, ); }; }; + BA913BEB1BD57E4D005A7C0E /* WatchApp Extension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = BA913BEA1BD57E4D005A7C0E /* WatchApp Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; BA913BF21BD57E4D005A7C0E /* ExtensionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA913BF11BD57E4D005A7C0E /* ExtensionDelegate.swift */; }; BA913BFA1BD57E4D005A7C0E /* WatchApp.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = BA913BDE1BD57E4D005A7C0E /* WatchApp.app */; }; BAA4843C1B3EFFAF0075C749 /* UIImage+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = BAA4843B1B3EFFAF0075C749 /* UIImage+Utils.m */; }; @@ -827,10 +804,17 @@ BAA6E3F11BD5CA5900773205 /* BRAWReceiveMoneyInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA6E3F01BD5CA5900773205 /* BRAWReceiveMoneyInterfaceController.swift */; }; BAE12BF21B2DEE7F00895CC5 /* TodayExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = BAE12BE51B2DEE7F00895CC5 /* TodayExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; BAE12C061B2DEEF700895CC5 /* DWTodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BAE12C051B2DEEF700895CC5 /* DWTodayViewController.m */; }; + BB0000012DUMMYID001234567 /* DashSpend/DashSpendError.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000072DUMMYID001234567 /* DashSpend/DashSpendError.swift */; }; + BB0000022DUMMYID001234567 /* DashSpend/DashSpendError.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000072DUMMYID001234567 /* DashSpend/DashSpendError.swift */; }; + BB0000032DUMMYID001234567 /* DashSpend/DashSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000082DUMMYID001234567 /* DashSpend/DashSpendRepository.swift */; }; + BB0000042DUMMYID001234567 /* DashSpend/DashSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000082DUMMYID001234567 /* DashSpend/DashSpendRepository.swift */; }; + BB0000052DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000092DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift */; }; + BB0000062DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000092DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift */; }; C3DAD268246AA6F10001624F /* DWScreenshotWarningViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C3DAD267246AA6F10001624F /* DWScreenshotWarningViewController.m */; }; C3DAD2CF247585C10001624F /* NSPredicate+DWFullTextSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = C3DAD2CE247585C10001624F /* NSPredicate+DWFullTextSearch.m */; }; C909614D29EFF7D600002D82 /* WalletKeysOverviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909614C29EFF7D600002D82 /* WalletKeysOverviewModel.swift */; }; C909615129F158D700002D82 /* DerivationPathKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615029F158D700002D82 /* DerivationPathKeysViewController.swift */; }; + A0795C9369A1402498C00F69 /* DerivationPathKeysView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */; }; C909615329F28E3700002D82 /* DerivationPathKeysModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615229F28E3700002D82 /* DerivationPathKeysModel.swift */; }; C909615529F297DD00002D82 /* DerivationPathKeysCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615429F297DD00002D82 /* DerivationPathKeysCell.swift */; }; C909615929F29C9200002D82 /* KeysOverviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615829F29C9200002D82 /* KeysOverviewCell.swift */; }; @@ -839,6 +823,7 @@ C917024129D462C6008C034D /* PayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C917024029D462C6008C034D /* PayViewController.swift */; }; C91E919729FBACE6003E7883 /* ExtendedPublicKeysModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C91E919629FBACE6003E7883 /* ExtendedPublicKeysModel.swift */; }; C91E91AE29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C91E91AD29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift */; }; + B3A1F2C4D5E6078901234568 /* ExtendedPublicKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */; }; C93078482A6AD4F500906E4B /* ConfirmPaymentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C956AF222A5C7D93002FAB75 /* ConfirmPaymentViewController.swift */; }; C93078492A6AD4FC00906E4B /* UpholdConfirmViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C956AF2E2A5D5F6B002FAB75 /* UpholdConfirmViewController.swift */; }; C930784A2A6AD52400906E4B /* UpholdConfirmTransferModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C956AF302A5D601C002FAB75 /* UpholdConfirmTransferModel.swift */; }; @@ -1117,6 +1102,7 @@ C9D2C6D42A320AA000D15901 /* DWRecoverTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A74EFFA2305464C00C475EB /* DWRecoverTextView.m */; }; C9D2C6D52A320AA000D15901 /* TransactionMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4709C314287EA11900B4BD48 /* TransactionMetadata.swift */; }; C9D2C6D62A320AA000D15901 /* ExtendedPublicKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C91E91AD29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift */; }; + B3A1F2C4D5E6078901234569 /* ExtendedPublicKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */; }; C9D2C6D82A320AA000D15901 /* AtmListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BDD28C1305E00490F5E /* AtmListViewController.swift */; }; C9D2C6D92A320AA000D15901 /* TxDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47A5145F2848F75B005A8E3E /* TxDetailViewController.swift */; }; C9D2C6DA2A320AA000D15901 /* NSAttributedString+Builder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472D13E9299E5396006903F1 /* NSAttributedString+Builder.swift */; }; @@ -1437,6 +1423,7 @@ C9D2C86F2A320AA000D15901 /* NavigationBarAppearanceCustomizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4730586F295AD62B004641DA /* NavigationBarAppearanceCustomizable.swift */; }; C9D2C8702A320AA000D15901 /* AmountObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 471DD1B5290A901200E030C8 /* AmountObject.swift */; }; C9D2C8712A320AA000D15901 /* DerivationPathKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615029F158D700002D82 /* DerivationPathKeysViewController.swift */; }; + 8A7607606A594C6E99A2FAC7 /* DerivationPathKeysView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */; }; C9D2C8722A320AA000D15901 /* DSTransaction+DashWallet.m in Sources */ = {isa = PBXBuildFile; fileRef = 4709C31D2880247C00B4BD48 /* DSTransaction+DashWallet.m */; }; C9D2C8742A320AA000D15901 /* DWLocalCurrencyModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7C1C234B771400451078 /* DWLocalCurrencyModel.m */; }; C9D2C8762A320AA000D15901 /* DWUpholdMainnetConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = FB8ACEB522E0502100EE5035 /* DWUpholdMainnetConstants.m */; }; @@ -1478,6 +1465,7 @@ C9D2C8A82A320AA000D15901 /* CrowdNodeError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D112909513F00D406C1 /* CrowdNodeError.swift */; }; C9D2C8A92A320AA000D15901 /* WithdrawalLimit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 111C3C4D296C52F800788E18 /* WithdrawalLimit.swift */; }; C9D2C8AA2A320AA000D15901 /* DWPayModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A8B9E6422FFE43500FF8653 /* DWPayModel.m */; }; + C9D2C8AD2A320AA000D15901 /* POIDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8C1728C63F9C00490F5E /* POIDetailsView.swift */; }; C9D2C8AE2A320AA000D15901 /* DSChain+DashWallet.m in Sources */ = {isa = PBXBuildFile; fileRef = 47E4F7C6297596D8006BEA68 /* DSChain+DashWallet.m */; }; C9D2C8AF2A320AA000D15901 /* FromLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1193FF3A2961960B004EA8D7 /* FromLabel.swift */; }; C9D2C8B02A320AA000D15901 /* DWPhraseRepairChildViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9172D225233F4F0024B4C5 /* DWPhraseRepairChildViewController.m */; }; @@ -1625,9 +1613,23 @@ C9F4520B2A1209D100825057 /* HomeHeaderModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F4520A2A1209D100825057 /* HomeHeaderModel.swift */; }; C9FAABB52AB793CE00878224 /* BuySellPortal.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C9FAABB42AB793CE00878224 /* BuySellPortal.storyboard */; }; C9FAABB72AB799AE00878224 /* UpholdPortalModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9FAABB62AB799AE00878224 /* UpholdPortalModel.swift */; }; + CC0000112DUMMYID001234567 /* PiggyCardsAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000062DUMMYID001234567 /* PiggyCardsAPI.swift */; }; + CC0000122DUMMYID001234567 /* PiggyCardsAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000062DUMMYID001234567 /* PiggyCardsAPI.swift */; }; + CC0000132DUMMYID001234567 /* PiggyCardsCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000072DUMMYID001234567 /* PiggyCardsCache.swift */; }; + CC0000142DUMMYID001234567 /* PiggyCardsCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000072DUMMYID001234567 /* PiggyCardsCache.swift */; }; + CC0000152DUMMYID001234567 /* PiggyCardsEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000082DUMMYID001234567 /* PiggyCardsEndpoint.swift */; }; + CC0000162DUMMYID001234567 /* PiggyCardsEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000082DUMMYID001234567 /* PiggyCardsEndpoint.swift */; }; + CC0000172DUMMYID001234567 /* PiggyCardsRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000092DUMMYID001234567 /* PiggyCardsRepository.swift */; }; + CC0000182DUMMYID001234567 /* PiggyCardsRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000092DUMMYID001234567 /* PiggyCardsRepository.swift */; }; + CC0000192DUMMYID001234567 /* PiggyCardsTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000102DUMMYID001234567 /* PiggyCardsTokenService.swift */; }; + CC0000202DUMMYID001234567 /* PiggyCardsTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000102DUMMYID001234567 /* PiggyCardsTokenService.swift */; }; + D0B1968E57F8D7B118C22CED /* libPods-DashWalletScreenshotsUITests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C20BCC772DF4075F8EADAE0 /* libPods-DashWalletScreenshotsUITests.a */; }; DE3A167A235B79D705C0A962 /* (null) in Frameworks */ = {isa = PBXBuildFile; }; - E94E3BDC15D28E8743B41111 /* libPods-WatchApp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D8F163F5BBAE9176E64D007C /* libPods-WatchApp.a */; }; - EAF387E694DFE9AF9F95218B /* libPods-DashWalletTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CADD19F58827E5801741B996 /* libPods-DashWalletTests.a */; }; + EE0000012DUMMYID001234567 /* POIDetailsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE0000032DUMMYID001234567 /* POIDetailsViewModel.swift */; }; + EE0000022DUMMYID001234567 /* POIDetailsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE0000032DUMMYID001234567 /* POIDetailsViewModel.swift */; }; + EE0000042DUMMYID001234567 /* PercentageFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE0000052DUMMYID001234567 /* PercentageFormatter.swift */; }; + EE0000062DUMMYID001234567 /* PercentageFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE0000052DUMMYID001234567 /* PercentageFormatter.swift */; }; + EE5F3D5C458E92B69D14BFD8 /* NavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD6615F1246B5935365B05BD /* NavigationBar.swift */; }; FB248B5D1F73803100405AE0 /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB248B5C1F73803100405AE0 /* UserNotifications.framework */; }; FB248B631F79BB7C00405AE0 /* SafariServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB248B621F79BB7C00405AE0 /* SafariServices.framework */; }; FB2E5537218BA161003A1B7C /* DWVersionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = FB2E5536218BA161003A1B7C /* DWVersionManager.m */; }; @@ -1641,6 +1643,14 @@ FBF3F42D1E42B00C00C7248E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBF3F42C1E42B00C00C7248E /* UIKit.framework */; }; FBF3F42F1E42B01E00C7248E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBF3F42E1E42B01E00C7248E /* CoreGraphics.framework */; }; FBF3F4311E42B02800C7248E /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBF3F4301E42B02800C7248E /* ImageIO.framework */; }; + FF0000012DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF0000042DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift */; }; + FF0000022DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF0000042DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift */; }; + FF0000052DUMMYID001234567 /* PiggyCardsModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF0000062DUMMYID001234567 /* PiggyCardsModels.swift */; }; + FF0000072DUMMYID001234567 /* PiggyCardsModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF0000062DUMMYID001234567 /* PiggyCardsModels.swift */; }; + FF0000082DUMMYID001234567 /* BarcodeScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF0000092DUMMYID001234567 /* BarcodeScanner.swift */; }; + FF0000102DUMMYID001234567 /* BarcodeScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF0000092DUMMYID001234567 /* BarcodeScanner.swift */; }; + GG0000012DUMMYID001234567 /* GeoRestrictionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = GG0000032DUMMYID001234567 /* GeoRestrictionService.swift */; }; + GG0000022DUMMYID001234567 /* GeoRestrictionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = GG0000032DUMMYID001234567 /* GeoRestrictionService.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -1718,7 +1728,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 01F09AF3E3D8868F988B61A9 /* Pods-DashWalletScreenshotsUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletScreenshotsUITests.debug.xcconfig"; path = "Target Support Files/Pods-DashWalletScreenshotsUITests/Pods-DashWalletScreenshotsUITests.debug.xcconfig"; sourceTree = ""; }; + 04D182469170A3A2843F51CA /* Pods-WatchApp.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp.testflight.xcconfig"; path = "Target Support Files/Pods-WatchApp/Pods-WatchApp.testflight.xcconfig"; sourceTree = ""; }; + 0995737D764092DF77CB88AC /* Pods-WatchApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp.debug.xcconfig"; path = "Target Support Files/Pods-WatchApp/Pods-WatchApp.debug.xcconfig"; sourceTree = ""; }; 0F36937D2919A5DB007F4E91 /* TwoFactorAuthViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwoFactorAuthViewController.swift; sourceTree = ""; }; 0F3693802919A70B007F4E91 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Coinbase.storyboard; sourceTree = ""; }; 0F6EDF9D28C896BC000427E7 /* CoinbaseUserAuthInformation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoinbaseUserAuthInformation.swift; sourceTree = ""; }; @@ -1794,14 +1805,7 @@ 11E47BAA28EB38510097CFA0 /* SendCoinsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendCoinsService.swift; sourceTree = ""; }; 11E47BAC28EB3A7D0097CFA0 /* CrowdNode+Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CrowdNode+Constants.swift"; sourceTree = ""; }; 11ED906A29681773003784F9 /* StakingInfoDialogController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StakingInfoDialogController.swift; sourceTree = ""; }; - 146E2F5124D22E068480F04F /* Pods-DashWalletTests.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletTests.testflight.xcconfig"; path = "Target Support Files/Pods-DashWalletTests/Pods-DashWalletTests.testflight.xcconfig"; sourceTree = ""; }; - 17F10C4797201AB6B2B80351 /* Pods-WatchApp.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp.testnet.xcconfig"; path = "Target Support Files/Pods-WatchApp/Pods-WatchApp.testnet.xcconfig"; sourceTree = ""; }; - 1946AE4B077923ED5BEF70FD /* libPods-WatchApp Extension.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-WatchApp Extension.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 1A13DF165F6A0780F58985AB /* Pods-DashWalletScreenshotsUITests.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletScreenshotsUITests.testnet.xcconfig"; path = "Target Support Files/Pods-DashWalletScreenshotsUITests/Pods-DashWalletScreenshotsUITests.testnet.xcconfig"; sourceTree = ""; }; - 1D267CDE2ECF86920053AD68 /* AddProviderToGiftCardsTable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddProviderToGiftCardsTable.swift; sourceTree = ""; }; - 1DAD1B002ED4037F00C8090E /* GeoRestrictionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeoRestrictionService.swift; sourceTree = ""; }; - 1DAD1AA82ED2037F00C8090E /* BarcodeScanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BarcodeScanner.swift; sourceTree = ""; }; - 1FA780FC3C067D0F6DEE9543 /* Pods-DashWalletTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletTests.debug.xcconfig"; path = "Target Support Files/Pods-DashWalletTests/Pods-DashWalletTests.debug.xcconfig"; sourceTree = ""; }; + 1C3070D5E872E975F8473A68 /* Pods-dashwallet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashwallet.release.xcconfig"; path = "Target Support Files/Pods-dashwallet/Pods-dashwallet.release.xcconfig"; sourceTree = ""; }; 222040C51C1A1940005CE1C3 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; 222E7F551C46E9B8009AB45D /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 222E7F571C46E9BE009AB45D /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; @@ -1809,8 +1813,8 @@ 22B6A4471C0E963900673913 /* libbz2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libbz2.tbd; path = usr/lib/libbz2.tbd; sourceTree = SDKROOT; }; 22D3613C1C56F2CD0057CF76 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; }; 22F45A0A1C30EAB700B07A15 /* BRAWKeypad.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BRAWKeypad.swift; sourceTree = ""; }; - 24FB5BA96FA10F1B82E20055 /* Pods-TodayExtension.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TodayExtension.testnet.xcconfig"; path = "Target Support Files/Pods-TodayExtension/Pods-TodayExtension.testnet.xcconfig"; sourceTree = ""; }; - 274345742E0F7EF79CF8C93A /* Pods-WatchApp Extension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp Extension.release.xcconfig"; path = "Target Support Files/Pods-WatchApp Extension/Pods-WatchApp Extension.release.xcconfig"; sourceTree = ""; }; + 281D63D6AC9610BCF4765D07 /* Pods-DashWalletTests.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletTests.testnet.xcconfig"; path = "Target Support Files/Pods-DashWalletTests/Pods-DashWalletTests.testnet.xcconfig"; sourceTree = ""; }; + 28AA9F2D282325F800A4F3AA /* Pods-dashpay.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.release.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.release.xcconfig"; sourceTree = ""; }; 2A0C699A23104588001B8C90 /* DWPaymentInput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWPaymentInput.h; sourceTree = ""; }; 2A0C699B23104588001B8C90 /* DWPaymentInput.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWPaymentInput.m; sourceTree = ""; }; 2A0C699D231045E7001B8C90 /* DWPaymentInput+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DWPaymentInput+Private.h"; sourceTree = ""; }; @@ -2259,9 +2263,9 @@ 2AFCB9C323BE76EC00FF59A6 /* DWUpholdTransactionObject+DWView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "DWUpholdTransactionObject+DWView.m"; sourceTree = ""; }; 2AFF01D9243F4559003718DC /* DWDPRegistrationStatus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWDPRegistrationStatus.h; sourceTree = ""; }; 2AFF01DA243F4559003718DC /* DWDPRegistrationStatus.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWDPRegistrationStatus.m; sourceTree = ""; }; - 2F85B172693D3E14E28731AA /* Pods-dashwallet.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashwallet.testflight.xcconfig"; path = "Target Support Files/Pods-dashwallet/Pods-dashwallet.testflight.xcconfig"; sourceTree = ""; }; - 3225D4E1525D11ACAF802BF9 /* Pods-TodayExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TodayExtension.debug.xcconfig"; path = "Target Support Files/Pods-TodayExtension/Pods-TodayExtension.debug.xcconfig"; sourceTree = ""; }; - 36B4F7C0211EF19218D4461F /* Pods-DashWalletScreenshotsUITests.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletScreenshotsUITests.testflight.xcconfig"; path = "Target Support Files/Pods-DashWalletScreenshotsUITests/Pods-DashWalletScreenshotsUITests.testflight.xcconfig"; sourceTree = ""; }; + 2E17397DF35152CAFBB79068 /* Pods-WatchApp Extension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp Extension.debug.xcconfig"; path = "Target Support Files/Pods-WatchApp Extension/Pods-WatchApp Extension.debug.xcconfig"; sourceTree = ""; }; + 38C4CA9D73A147BA44601741 /* libPods-WatchApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-WatchApp.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3C20BCC772DF4075F8EADAE0 /* libPods-DashWalletScreenshotsUITests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DashWalletScreenshotsUITests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 470617D5299A671900DCC667 /* CrowdNodeCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeCell.swift; sourceTree = ""; }; 47081196298CF20B003FCA3D /* Transaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Transaction.swift; sourceTree = ""; }; 4708119E2990F56F003FCA3D /* TransactionDataItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionDataItem.swift; sourceTree = ""; }; @@ -2398,6 +2402,7 @@ 47AE8C0628C2274200490F5E /* PointOfUseListSearchCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PointOfUseListSearchCell.swift; sourceTree = ""; }; 47AE8C1228C5F0A600490F5E /* POIDetailsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POIDetailsViewController.swift; sourceTree = ""; }; 47AE8C1428C6378E00490F5E /* HairlineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HairlineView.swift; sourceTree = ""; }; + 47AE8C1728C63F9C00490F5E /* POIDetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POIDetailsView.swift; sourceTree = ""; }; 47AE8C1928C6A21A00490F5E /* AllMerchantLocationsDataProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllMerchantLocationsDataProvider.swift; sourceTree = ""; }; 47AE8C1B28C6AA2400490F5E /* PointOfUseLocationServicePopup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PointOfUseLocationServicePopup.swift; sourceTree = ""; }; 47AF180429070B720025803E /* Types.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Types.swift; sourceTree = ""; }; @@ -2443,13 +2448,16 @@ 47F4B6CC29485A8B00AED4C9 /* ConfirmOrderCells.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfirmOrderCells.swift; sourceTree = ""; }; 47FA3AFE29350929008D58DC /* SyncingActivityMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncingActivityMonitor.swift; sourceTree = ""; }; 47FA3B0129364991008D58DC /* HTTPClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPClient.swift; sourceTree = ""; }; - 481BC7445B8333F6878FAA20 /* Pods-DashWalletTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletTests.release.xcconfig"; path = "Target Support Files/Pods-DashWalletTests/Pods-DashWalletTests.release.xcconfig"; sourceTree = ""; }; - 56FC360EE306AA26A03F9818 /* Pods-WatchApp Extension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp Extension.debug.xcconfig"; path = "Target Support Files/Pods-WatchApp Extension/Pods-WatchApp Extension.debug.xcconfig"; sourceTree = ""; }; - 58E654E571C2BE6208FBF352 /* libPods-dashpay.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-dashpay.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 5F9EF7C7D0B76255AA95D29C /* Pods-dashpay.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.debug.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.debug.xcconfig"; sourceTree = ""; }; - 640B293ED8F6BC5016CD13EC /* libPods-dashwallet.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-dashwallet.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 68F834C43B4E8FD4E9D4A3EB /* Pods-dashwallet.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashwallet.testnet.xcconfig"; path = "Target Support Files/Pods-dashwallet/Pods-dashwallet.testnet.xcconfig"; sourceTree = ""; }; + 4944819B9E17D4CC7DBFF293 /* Pods-WatchApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp.release.xcconfig"; path = "Target Support Files/Pods-WatchApp/Pods-WatchApp.release.xcconfig"; sourceTree = ""; }; + 4C22BC09CF6178544B2300A4 /* libPods-WatchApp Extension.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-WatchApp Extension.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4D37A3F73905BC239A9D127D /* Pods-WatchApp Extension.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp Extension.testnet.xcconfig"; path = "Target Support Files/Pods-WatchApp Extension/Pods-WatchApp Extension.testnet.xcconfig"; sourceTree = ""; }; + 62C1F7A3ABEE7CF3BBB270C4 /* Pods-DashWalletTests.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletTests.testflight.xcconfig"; path = "Target Support Files/Pods-DashWalletTests/Pods-DashWalletTests.testflight.xcconfig"; sourceTree = ""; }; + 67217DE34817FB304EDEA8D4 /* Pods-dashpay.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.testnet.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.testnet.xcconfig"; sourceTree = ""; }; + 6A44C167AF8F881176AFB256 /* Pods-TodayExtension.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TodayExtension.testflight.xcconfig"; path = "Target Support Files/Pods-TodayExtension/Pods-TodayExtension.testflight.xcconfig"; sourceTree = ""; }; + 6DC4B39C45C824674E05DB22 /* Pods-dashwallet.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashwallet.testflight.xcconfig"; path = "Target Support Files/Pods-dashwallet/Pods-dashwallet.testflight.xcconfig"; sourceTree = ""; }; 708B9F2B4B1E4C31B5010CDF /* RadioButtonRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RadioButtonRow.swift; path = "DashWallet/Sources/UI/SwiftUI Components/RadioButtonRow.swift"; sourceTree = ""; }; + 718A7E2BCD93948084E43A8F /* Pods-DashWalletScreenshotsUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletScreenshotsUITests.release.xcconfig"; path = "Target Support Files/Pods-DashWalletScreenshotsUITests/Pods-DashWalletScreenshotsUITests.release.xcconfig"; sourceTree = ""; }; + 74F4F603C555A521F738DC9E /* Pods-TodayExtension.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TodayExtension.testnet.xcconfig"; path = "Target Support Files/Pods-TodayExtension/Pods-TodayExtension.testnet.xcconfig"; sourceTree = ""; }; 7502A4862AE401EF00ACDDD3 /* UsernameVotingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsernameVotingViewController.swift; sourceTree = ""; }; 750364392C89CFB70029EC0D /* CoinJoinProgressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoinJoinProgressView.swift; sourceTree = ""; }; 7503643D2C89D49A0029EC0D /* CoinJoinService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoinJoinService.swift; sourceTree = ""; }; @@ -2493,7 +2501,6 @@ 753261B12CBC157F003CDE00 /* GetStartedViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GetStartedViewController.swift; sourceTree = ""; }; 75387B492E0400C300BCCC72 /* MerchantDenominations.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantDenominations.swift; sourceTree = ""; }; 753CD8782E2E218800BCF070 /* mixing_anim.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = mixing_anim.json; sourceTree = ""; }; - 753CE9D72E12B6F9004A0A13 /* POIDetailsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POIDetailsViewModel.swift; sourceTree = ""; }; 753E46E72DE1E24300A3FF2A /* CTXSpendModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CTXSpendModels.swift; sourceTree = ""; }; 753F75332DD0D41900D40DFE /* DashSpendPayScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpendPayScreen.swift; sourceTree = ""; }; 753F75362DD0D75F00D40DFE /* DashSpendPayViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpendPayViewModel.swift; sourceTree = ""; }; @@ -2503,12 +2510,13 @@ 753FDBED2AECF52B0005EEC3 /* UsernameVoting.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = UsernameVoting.storyboard; sourceTree = ""; }; 754495DC2AE91B6300492817 /* GroupedRequestCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupedRequestCell.swift; sourceTree = ""; }; 754495DE2AE91D3500492817 /* UsernameRequestCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsernameRequestCell.swift; sourceTree = ""; }; - 754565C42DAA52A000DA4E8E /* CTXSpendAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CTXSpendAPI.swift; sourceTree = ""; }; - 754565C52DAA52A000DA4E8E /* CTXSpendEndpoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CTXSpendEndpoint.swift; sourceTree = ""; }; - 754565C72DAA52A000DA4E8E /* CTXSpendRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CTXSpendRepository.swift; sourceTree = ""; }; + 754565C42DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTX/CTXSpendAPI.swift; sourceTree = ""; }; + 754565C52DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTX/CTXSpendEndpoint.swift; sourceTree = ""; }; + 754565C72DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTX/CTXSpendRepository.swift; sourceTree = ""; }; 754565D02DABA5EB00DA4E8E /* MerchantTypesDialog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantTypesDialog.swift; sourceTree = ""; }; - 7545ED522DA91A2F0075F45C /* CTXConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CTXConstants.swift; sourceTree = ""; }; + 7545ED522DA91A2F0075F45C /* DashSpend/CTXConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTXConstants.swift; sourceTree = ""; }; 7545ED562DA91AEA0075F45C /* DashSpendUserAuthViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpendUserAuthViewModel.swift; sourceTree = ""; }; + 7545ED5C2DA91F590075F45C /* DashSpendTermsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpendTermsScreen.swift; sourceTree = ""; }; 7545ED5F2DA91FC60075F45C /* NumericKeyboardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumericKeyboardView.swift; sourceTree = ""; }; 7549BE522DEAEA14004F0BAF /* MetadataProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetadataProvider.swift; sourceTree = ""; }; 7549BE562DEAECB0004F0BAF /* CustomIconMetadataProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomIconMetadataProvider.swift; sourceTree = ""; }; @@ -2552,14 +2560,6 @@ 757514DF2B15D8DE0026AD8E /* VotingConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VotingConstants.swift; sourceTree = ""; }; 757514E12B15DB510026AD8E /* ShadowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShadowView.swift; sourceTree = ""; }; 757514E42B1735370026AD8E /* JoinDashPayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoinDashPayView.swift; sourceTree = ""; }; - 757AEBC42E113173007BE8B4 /* PiggyCardsConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsConstants.swift; sourceTree = ""; }; - 757AEBC72E113185007BE8B4 /* PiggyCardsModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsModels.swift; sourceTree = ""; }; - 757AEBCA2E1131A1007BE8B4 /* PiggyCardsAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsAPI.swift; sourceTree = ""; }; - 757AEBCB2E1131A1007BE8B4 /* PiggyCardsEndpoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsEndpoint.swift; sourceTree = ""; }; - 757AEBCC2E1131A1007BE8B4 /* PiggyCardsRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsRepository.swift; sourceTree = ""; }; - 757AEBD92E1139B4007BE8B4 /* DashSpendTermsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpendTermsScreen.swift; sourceTree = ""; }; - 757AEBE02E114E9B007BE8B4 /* DashSpendRepositoryFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpendRepositoryFactory.swift; sourceTree = ""; }; - 757AEBE32E114EE0007BE8B4 /* DashSpendRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpendRepository.swift; sourceTree = ""; }; 757B937C2BFF4F93002046A5 /* GroupedTransactionsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupedTransactionsScreen.swift; sourceTree = ""; }; 757E09981ADB8EEB006FD352 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; 7581B1992CE349BB00714007 /* ConfirmSpendDialog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfirmSpendDialog.swift; sourceTree = ""; }; @@ -2581,12 +2581,10 @@ 759AFDE22CC67E89007072D2 /* VotingInfoScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VotingInfoScreen.swift; sourceTree = ""; }; 759C8F9E2B593589004B1305 /* CrowdNodeAPYView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeAPYView.swift; sourceTree = ""; }; 75A0A3F22CA7DBCF003ED48B /* TimeUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TimeUtils.swift; sourceTree = ""; }; - D9B18E3F81E54074AC0E0CECAB2421C2 /* PercentageFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PercentageFormatter.swift; sourceTree = ""; }; - 75A2F3022DE48C860046BE17 /* CTXSpendTokenService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CTXSpendTokenService.swift; sourceTree = ""; }; + 75A2F3022DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTX/CTXSpendTokenService.swift; sourceTree = ""; }; 75A8C1632AE5725C0042256E /* UsernameRequestsDAO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsernameRequestsDAO.swift; sourceTree = ""; }; 75A8C1662AE5734A0042256E /* UsernameRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsernameRequest.swift; sourceTree = ""; }; 75A8C1682AE6A1AC0042256E /* VotingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VotingViewModel.swift; sourceTree = ""; }; - 75A92B8B2E0FDDA900BFFA2D /* GiftCardProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GiftCardProvider.swift; sourceTree = ""; }; 75AA33CB2BF9C82700F12465 /* ModalDialog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModalDialog.swift; sourceTree = ""; }; 75AA33CE2BF9D44A00F12465 /* ButtonsGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonsGroup.swift; sourceTree = ""; }; 75AA33D12BF9E18E00F12465 /* Color+DWStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Color+DWStyle.swift"; sourceTree = ""; }; @@ -2640,10 +2638,6 @@ 75EE38D72CBFE52B00845FFF /* ContactsPlaceholderViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactsPlaceholderViewController.swift; sourceTree = ""; }; 75EE9F412DE2F74B000AD1AD /* DashSpendConfirmationDialog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpendConfirmationDialog.swift; sourceTree = ""; }; 75F2E0B61BE2D5F000EAE861 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; - 75F3EF4A2E13D1670092A0D9 /* PiggyCardsTokenService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsTokenService.swift; sourceTree = ""; }; - 75F3EF4B2E13D1680092A0D0 /* PiggyCardsCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsCache.swift; sourceTree = ""; }; - 75F3EF4D2E1553BB0092A0D9 /* DashSpendError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpendError.swift; sourceTree = ""; }; - 75F3EF542E16AD060092A0D9 /* POIDetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POIDetailsView.swift; sourceTree = ""; }; 75F51AAC2ABD8C800057B499 /* IntegrationViewController+Uphold.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "IntegrationViewController+Uphold.swift"; sourceTree = ""; }; 75F51AAE2ABD8D070057B499 /* IntegrationViewController+Coinbase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "IntegrationViewController+Coinbase.swift"; sourceTree = ""; }; 75F990812AFD1065006759AB /* UsernameRequestDetailsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsernameRequestDetailsViewController.swift; sourceTree = ""; }; @@ -2656,15 +2650,16 @@ 75FFD6C02BF493A60032879E /* HomeViewController+SecureWalletDelegateImpl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeViewController+SecureWalletDelegateImpl.swift"; sourceTree = ""; }; 75FFD6C32BF494E20032879E /* HomeViewController+ImportPrivateKeyDelegateImpl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeViewController+ImportPrivateKeyDelegateImpl.swift"; sourceTree = ""; }; 75FFD6C62BF495800032879E /* HomeViewController+Shortcuts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeViewController+Shortcuts.swift"; sourceTree = ""; }; - 7D4ABD3D67B2A9B1CA91087A /* Pods-dashpay.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.testflight.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.testflight.xcconfig"; sourceTree = ""; }; - 8C27AC100E93227C1C780B9B /* Pods-WatchApp Extension.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp Extension.testnet.xcconfig"; path = "Target Support Files/Pods-WatchApp Extension/Pods-WatchApp Extension.testnet.xcconfig"; sourceTree = ""; }; - 8E3AF0B3608E27017BA8CCB8 /* Pods-WatchApp.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp.testflight.xcconfig"; path = "Target Support Files/Pods-WatchApp/Pods-WatchApp.testflight.xcconfig"; sourceTree = ""; }; - 8EF27AB178913A4F7CE601BA /* Pods-WatchApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp.release.xcconfig"; path = "Target Support Files/Pods-WatchApp/Pods-WatchApp.release.xcconfig"; sourceTree = ""; }; - 935B82D06EFE42FC581D3A4A /* Pods-dashwallet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashwallet.debug.xcconfig"; path = "Target Support Files/Pods-dashwallet/Pods-dashwallet.debug.xcconfig"; sourceTree = ""; }; - 9766A9003AD824CA2EAA01A2 /* Pods-TodayExtension.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TodayExtension.testflight.xcconfig"; path = "Target Support Files/Pods-TodayExtension/Pods-TodayExtension.testflight.xcconfig"; sourceTree = ""; }; - A3061D2E6CAD5509B5E8B276 /* Pods-dashpay.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.testnet.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.testnet.xcconfig"; sourceTree = ""; }; - A5C7B9C768A2B7DF6F1C4547 /* Pods-WatchApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp.debug.xcconfig"; path = "Target Support Files/Pods-WatchApp/Pods-WatchApp.debug.xcconfig"; sourceTree = ""; }; - B6C69EDE30817777EA98257C /* libPods-TodayExtension.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TodayExtension.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 77215C3978EE089C06A41979 /* Pods-DashWalletTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletTests.debug.xcconfig"; path = "Target Support Files/Pods-DashWalletTests/Pods-DashWalletTests.debug.xcconfig"; sourceTree = ""; }; + 8391BA0D088FF516D63DE9A1 /* Pods-dashpay.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.testflight.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.testflight.xcconfig"; sourceTree = ""; }; + 86CC430C535DAEBF900E5914 /* Pods-dashwallet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashwallet.debug.xcconfig"; path = "Target Support Files/Pods-dashwallet/Pods-dashwallet.debug.xcconfig"; sourceTree = ""; }; + 91F0B8B82F3FAB7C00E713AE /* KeysOverviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeysOverviewView.swift; sourceTree = ""; }; + A47B6DF71195E41A5B7B5F99 /* Pods-dashpay.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.debug.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.debug.xcconfig"; sourceTree = ""; }; + AA0000032DUMMYID001234567 /* AddProviderToGiftCardsTable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddProviderToGiftCardsTable.swift; sourceTree = ""; }; + AA0000062DUMMYID001234567 /* DashSpend/GiftCardProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/GiftCardProvider.swift; sourceTree = ""; }; + AD6615F1246B5935365B05BD /* NavigationBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationBar.swift; sourceTree = ""; }; + AF918A810315A7BE335BFFA6 /* Pods-WatchApp.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp.testnet.xcconfig"; path = "Target Support Files/Pods-WatchApp/Pods-WatchApp.testnet.xcconfig"; sourceTree = ""; }; + B1A681489B9516DC10084A61 /* Pods-DashWalletScreenshotsUITests.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletScreenshotsUITests.testflight.xcconfig"; path = "Target Support Files/Pods-DashWalletScreenshotsUITests/Pods-DashWalletScreenshotsUITests.testflight.xcconfig"; sourceTree = ""; }; BA4A72661BE11AFA00E39C01 /* BRAWWeakTimerTarget.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BRAWWeakTimerTarget.swift; sourceTree = ""; }; BA4EECDF1B351AE200D443A3 /* DWAppGroupConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWAppGroupConstants.h; sourceTree = ""; }; BA54D3CD1B2EA74000C9CB28 /* TodayExtensionAssets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = TodayExtensionAssets.xcassets; sourceTree = ""; }; @@ -2687,12 +2682,20 @@ BAE12BE61B2DEE7F00895CC5 /* NotificationCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NotificationCenter.framework; path = System/Library/Frameworks/NotificationCenter.framework; sourceTree = SDKROOT; }; BAE12BEA1B2DEE7F00895CC5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; BAE12C051B2DEEF700895CC5 /* DWTodayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWTodayViewController.m; sourceTree = ""; }; + BB0000072DUMMYID001234567 /* DashSpend/DashSpendError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/DashSpendError.swift; sourceTree = ""; }; + BB0000082DUMMYID001234567 /* DashSpend/DashSpendRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/DashSpendRepository.swift; sourceTree = ""; }; + BB0000092DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/DashSpendRepositoryFactory.swift; sourceTree = ""; }; + BC46CEE26088DC2B21D22315 /* Pods-DashWalletScreenshotsUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletScreenshotsUITests.debug.xcconfig"; path = "Target Support Files/Pods-DashWalletScreenshotsUITests/Pods-DashWalletScreenshotsUITests.debug.xcconfig"; sourceTree = ""; }; + C09FD41E863456F8BF96B2DB /* Pods-dashwallet.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashwallet.testnet.xcconfig"; path = "Target Support Files/Pods-dashwallet/Pods-dashwallet.testnet.xcconfig"; sourceTree = ""; }; + C1AFBC4E154DF42D982613E4 /* Pods-DashWalletScreenshotsUITests.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletScreenshotsUITests.testnet.xcconfig"; path = "Target Support Files/Pods-DashWalletScreenshotsUITests/Pods-DashWalletScreenshotsUITests.testnet.xcconfig"; sourceTree = ""; }; C3DAD266246AA6F10001624F /* DWScreenshotWarningViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWScreenshotWarningViewController.h; sourceTree = ""; }; C3DAD267246AA6F10001624F /* DWScreenshotWarningViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWScreenshotWarningViewController.m; sourceTree = ""; }; C3DAD2CD247585C10001624F /* NSPredicate+DWFullTextSearch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSPredicate+DWFullTextSearch.h"; sourceTree = ""; }; C3DAD2CE247585C10001624F /* NSPredicate+DWFullTextSearch.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSPredicate+DWFullTextSearch.m"; sourceTree = ""; }; + C56BFBBABD008D06578BDD9C /* libPods-DashWalletTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DashWalletTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; C909614C29EFF7D600002D82 /* WalletKeysOverviewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletKeysOverviewModel.swift; sourceTree = ""; }; C909615029F158D700002D82 /* DerivationPathKeysViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DerivationPathKeysViewController.swift; sourceTree = ""; }; + 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DerivationPathKeysView.swift; sourceTree = ""; }; C909615229F28E3700002D82 /* DerivationPathKeysModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DerivationPathKeysModel.swift; sourceTree = ""; }; C909615429F297DD00002D82 /* DerivationPathKeysCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DerivationPathKeysCell.swift; sourceTree = ""; }; C909615829F29C9200002D82 /* KeysOverviewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeysOverviewCell.swift; sourceTree = ""; }; @@ -2701,6 +2704,7 @@ C917024029D462C6008C034D /* PayViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PayViewController.swift; sourceTree = ""; }; C91E919629FBACE6003E7883 /* ExtendedPublicKeysModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtendedPublicKeysModel.swift; sourceTree = ""; }; C91E91AD29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtendedPublicKeysViewController.swift; sourceTree = ""; }; + B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtendedPublicKeySheet.swift; sourceTree = ""; }; C943B2BA2A408CEC00AF23C5 /* DWUpdatingUserProfileView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWUpdatingUserProfileView.h; sourceTree = ""; }; C943B2BB2A408CEC00AF23C5 /* DWCurrentUserProfileView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWCurrentUserProfileView.h; sourceTree = ""; }; C943B2BC2A408CEC00AF23C5 /* DWErrorUpdatingUserProfileView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWErrorUpdatingUserProfileView.m; sourceTree = ""; }; @@ -3139,14 +3143,21 @@ C9F4520A2A1209D100825057 /* HomeHeaderModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeHeaderModel.swift; sourceTree = ""; }; C9FAABB42AB793CE00878224 /* BuySellPortal.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = BuySellPortal.storyboard; sourceTree = ""; }; C9FAABB62AB799AE00878224 /* UpholdPortalModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpholdPortalModel.swift; sourceTree = ""; }; - CADD19F58827E5801741B996 /* libPods-DashWalletTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DashWalletTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - CB5FF6F5CB2E4B13DC2C3E3D /* Pods-dashpay.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.release.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.release.xcconfig"; sourceTree = ""; }; - D1076C503456F2EAB8B218B5 /* libPods-DashWalletScreenshotsUITests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DashWalletScreenshotsUITests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - D8F163F5BBAE9176E64D007C /* libPods-WatchApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-WatchApp.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - DAB1F0C19723DDC2CA2E838A /* Pods-DashWalletTests.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletTests.testnet.xcconfig"; path = "Target Support Files/Pods-DashWalletTests/Pods-DashWalletTests.testnet.xcconfig"; sourceTree = ""; }; - DB35A287E58331F58D99D5F1 /* Pods-TodayExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TodayExtension.release.xcconfig"; path = "Target Support Files/Pods-TodayExtension/Pods-TodayExtension.release.xcconfig"; sourceTree = ""; }; - ECEC6355C8742EF241A10660 /* Pods-dashwallet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashwallet.release.xcconfig"; path = "Target Support Files/Pods-dashwallet/Pods-dashwallet.release.xcconfig"; sourceTree = ""; }; - EF6903EDB8E53378EBD7E567 /* Pods-DashWalletScreenshotsUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletScreenshotsUITests.release.xcconfig"; path = "Target Support Files/Pods-DashWalletScreenshotsUITests/Pods-DashWalletScreenshotsUITests.release.xcconfig"; sourceTree = ""; }; + CC0000062DUMMYID001234567 /* PiggyCardsAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsAPI.swift; sourceTree = ""; }; + CC0000072DUMMYID001234567 /* PiggyCardsCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsCache.swift; sourceTree = ""; }; + CC0000082DUMMYID001234567 /* PiggyCardsEndpoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsEndpoint.swift; sourceTree = ""; }; + CC0000092DUMMYID001234567 /* PiggyCardsRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsRepository.swift; sourceTree = ""; }; + CC0000102DUMMYID001234567 /* PiggyCardsTokenService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsTokenService.swift; sourceTree = ""; }; + D18D0D69B7365947239D4F97 /* libPods-TodayExtension.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TodayExtension.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + D53435DCAF024BC82E0247F3 /* ImportPrivateKeySheet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ImportPrivateKeySheet.swift; sourceTree = ""; }; + D6E23A2DA41FE189E773C705 /* libPods-dashpay.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-dashpay.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + D8BD81810F2B0C11C86E7A5E /* Pods-DashWalletTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletTests.release.xcconfig"; path = "Target Support Files/Pods-DashWalletTests/Pods-DashWalletTests.release.xcconfig"; sourceTree = ""; }; + D96AAF71E3E67F7AD309BCC4 /* Pods-TodayExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TodayExtension.release.xcconfig"; path = "Target Support Files/Pods-TodayExtension/Pods-TodayExtension.release.xcconfig"; sourceTree = ""; }; + E57EEDA37189E949FBAAA627 /* Pods-WatchApp Extension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp Extension.release.xcconfig"; path = "Target Support Files/Pods-WatchApp Extension/Pods-WatchApp Extension.release.xcconfig"; sourceTree = ""; }; + EDE78DB35CE393ADB4F3C5DD /* Pods-TodayExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TodayExtension.debug.xcconfig"; path = "Target Support Files/Pods-TodayExtension/Pods-TodayExtension.debug.xcconfig"; sourceTree = ""; }; + EE0000032DUMMYID001234567 /* POIDetailsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POIDetailsViewModel.swift; sourceTree = ""; }; + EE0000052DUMMYID001234567 /* PercentageFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PercentageFormatter.swift; sourceTree = ""; }; + F3BA4BE42F52588AED15BF7E /* libPods-dashwallet.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-dashwallet.a"; sourceTree = BUILT_PRODUCTS_DIR; }; FB0ACB9E1F9AB76800F4AB52 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Localizable.strings; sourceTree = ""; }; FB0ACBA01F9ABB6200F4AB52 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = ""; }; FB1212A91FFFB0F3000E407E /* dashwalletTodayExtension.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; name = dashwalletTodayExtension.entitlements; path = DashWallet/dashwalletTodayExtension.entitlements; sourceTree = SOURCE_ROOT; }; @@ -3179,7 +3190,6 @@ FB6DD3811F7FA48500BC1E4D /* dashwallet.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = dashwallet.entitlements; sourceTree = ""; }; FB8ACEB422E0502100EE5035 /* DWUpholdMainnetConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWUpholdMainnetConstants.h; sourceTree = ""; }; FB8ACEB522E0502100EE5035 /* DWUpholdMainnetConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWUpholdMainnetConstants.m; sourceTree = ""; }; - FBC78F829276FEA507762984 /* Pods-WatchApp Extension.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp Extension.testflight.xcconfig"; path = "Target Support Files/Pods-WatchApp Extension/Pods-WatchApp Extension.testflight.xcconfig"; sourceTree = ""; }; FBEF3AED2182395800917AB6 /* DashSync.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DashSync.framework; sourceTree = BUILT_PRODUCTS_DIR; }; FBEF3AEF21823CD800917AB6 /* DWEnvironment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DWEnvironment.h; sourceTree = ""; }; FBEF3AF021823CD800917AB6 /* DWEnvironment.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DWEnvironment.m; sourceTree = ""; }; @@ -3187,6 +3197,11 @@ FBF3F42C1E42B00C00C7248E /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; FBF3F42E1E42B01E00C7248E /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; FBF3F4301E42B02800C7248E /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; }; + FC016B99DFFB0CBAC3D19290 /* Pods-WatchApp Extension.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp Extension.testflight.xcconfig"; path = "Target Support Files/Pods-WatchApp Extension/Pods-WatchApp Extension.testflight.xcconfig"; sourceTree = ""; }; + FF0000042DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/PiggyCardsConstants.swift; sourceTree = ""; }; + FF0000062DUMMYID001234567 /* PiggyCardsModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsModels.swift; sourceTree = ""; }; + FF0000092DUMMYID001234567 /* BarcodeScanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BarcodeScanner.swift; sourceTree = ""; }; + GG0000032DUMMYID001234567 /* GeoRestrictionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeoRestrictionService.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -3194,7 +3209,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 025379347B50D32FBC496201 /* libPods-DashWalletScreenshotsUITests.a in Frameworks */, + D0B1968E57F8D7B118C22CED /* libPods-DashWalletScreenshotsUITests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3222,7 +3237,7 @@ 222040C61C1A1940005CE1C3 /* WebKit.framework in Frameworks */, 22B6A4481C0E963900673913 /* libbz2.tbd in Frameworks */, DE3A167A235B79D705C0A962 /* (null) in Frameworks */, - 9987309B7B5B1EAD3B7A98F0 /* libPods-dashwallet.a in Frameworks */, + AEAE60406265A73AFD573FD1 /* libPods-dashwallet.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3230,7 +3245,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - EAF387E694DFE9AF9F95218B /* libPods-DashWalletTests.a in Frameworks */, + 3198E8048E48954CD87BAD11 /* libPods-DashWalletTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3238,7 +3253,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E94E3BDC15D28E8743B41111 /* libPods-WatchApp.a in Frameworks */, + 09F4E16CAEAE41E2C6EA7A27 /* libPods-WatchApp.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3246,7 +3261,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 192E5E737398F69154940D09 /* libPods-WatchApp Extension.a in Frameworks */, + A30AF4A11189A2EFB04EB535 /* libPods-WatchApp Extension.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3255,7 +3270,7 @@ buildActionMask = 2147483647; files = ( 754119E01CDA93FF0042DC51 /* NotificationCenter.framework in Frameworks */, - 65A765E497479DB5E3D23971 /* libPods-TodayExtension.a in Frameworks */, + 09A6CB66AEDCEA04C9D670DF /* libPods-TodayExtension.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3282,7 +3297,7 @@ C9D2C9062A320AA000D15901 /* Security.framework in Frameworks */, C9D2C9072A320AA000D15901 /* WebKit.framework in Frameworks */, C9D2C9082A320AA000D15901 /* libbz2.tbd in Frameworks */, - 7307A8C306EFB9D9F6B655D2 /* libPods-dashpay.a in Frameworks */, + AE99C52D130994B720927E8F /* libPods-dashpay.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3693,6 +3708,7 @@ 2A10EB332358996700C38B61 /* DWImportWalletInfoViewController.h */, 2A10EB342358996700C38B61 /* DWImportWalletInfoViewController.m */, 2A10EB3D2358BDA500C38B61 /* ImportWalletInfo.storyboard */, + D53435DCAF024BC82E0247F3 /* ImportPrivateKeySheet.swift */, ); path = ImportWallet; sourceTree = ""; @@ -4021,6 +4037,7 @@ 11C5F51128E5D0C500F6F135 /* CrowdNode */, 47A50F362912D9A800C70123 /* Payment Controller */, 4751136A28D9A3BE00223B77 /* Buy Sell */, + 0F6EDFE028C8AE32000427E7 /* Coinbase */, 47AE8BB328C1305E00490F5E /* Explore Dash */, 2AB231CF2196E23200A6E7E6 /* Start */, 2A913E6C23A26469006A2A59 /* Onboarding */, @@ -4036,7 +4053,6 @@ 2A44311B22CC9B2C009BAF7F /* RootNavigation */, 2A4430EF22CBC77A009BAF7F /* Views */, 2A4430E922CBB98D009BAF7F /* Setup */, - 0F6EDFE028C8AE32000427E7 /* Coinbase */, ); path = UI; sourceTree = ""; @@ -4461,6 +4477,7 @@ children = ( C91E919629FBACE6003E7883 /* ExtendedPublicKeysModel.swift */, C91E91AD29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift */, + B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */, ); path = ExtendedKeys; sourceTree = ""; @@ -4894,6 +4911,7 @@ C909615729F29C7E00002D82 /* Model */, C909615629F29C7500002D82 /* Cell */, C9903A5329E6A5F600535A4E /* KeysOverviewViewController.swift */, + 91F0B8B82F3FAB7C00E713AE /* KeysOverviewView.swift */, ); path = Overview; sourceTree = ""; @@ -4904,6 +4922,7 @@ 2AB66E0923572572007BE825 /* Models */, 2AB66E03235722E0007BE825 /* Views */, C909615029F158D700002D82 /* DerivationPathKeysViewController.swift */, + 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */, ); path = DerivationPathKeys; sourceTree = ""; @@ -5183,9 +5202,9 @@ 4709C310287E78BD00B4BD48 /* Migrations */ = { isa = PBXGroup; children = ( - 1D267CDE2ECF86920053AD68 /* AddProviderToGiftCardsTable.swift */, 7549BE5F2DEAF628004F0BAF /* AddIconBitmapsTable.swift */, 75D9EBB72DE5CC3A009416A2 /* AddGiftCardsTable.swift */, + AA0000032DUMMYID001234567 /* AddProviderToGiftCardsTable.swift */, 4709C311287E78BD00B4BD48 /* SeedDB.swift */, ); path = Migrations; @@ -5652,7 +5671,9 @@ 47AE8B9628BFACE800490F5E /* Model */ = { isa = PBXGroup; children = ( - 757AEBDC2E113D6E007BE8B4 /* DashSpend */, + 7545ED522DA91A2F0075F45C /* DashSpend/CTXConstants.swift */, + AA0000062DUMMYID001234567 /* DashSpend/GiftCardProvider.swift */, + FF0000042DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift */, 47AE8B9A28BFAD2000490F5E /* Entites */, 47AE8B9928BFAD0B00490F5E /* DAO */, ); @@ -5671,9 +5692,16 @@ 47AE8B9828BFAD0000490F5E /* Services */ = { isa = PBXGroup; children = ( - 1DAD1B002ED4037F00C8090E /* GeoRestrictionService.swift */, - 1DAD1AA82ED2037F00C8090E /* BarcodeScanner.swift */, - 757AEBDD2E113D7B007BE8B4 /* DashSpend */, + FF0000092DUMMYID001234567 /* BarcodeScanner.swift */, + 75A2F3022DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift */, + 754565C42DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift */, + 754565C52DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift */, + 754565C72DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift */, + BB0000072DUMMYID001234567 /* DashSpend/DashSpendError.swift */, + BB0000082DUMMYID001234567 /* DashSpend/DashSpendRepository.swift */, + BB0000092DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift */, + GG0000032DUMMYID001234567 /* GeoRestrictionService.swift */, + DD0000012DUMMYID001234567 /* DashSpend/PiggyCards */, 47AE8BAC28BFAE6700490F5E /* DWLocationManager.swift */, 47AE8BA828BFAE5800490F5E /* ExploreDatabaseSyncManager.swift */, ); @@ -5692,10 +5720,10 @@ 47AE8B9A28BFAD2000490F5E /* Entites */ = { isa = PBXGroup; children = ( - 757AEBC72E113185007BE8B4 /* PiggyCardsModels.swift */, 75D9EBBB2DE5CD8B009416A2 /* GiftCard.swift */, 753E46E72DE1E24300A3FF2A /* CTXSpendModels.swift */, 47AE8B9B28BFAD2800490F5E /* ExplorePointOfUse.swift */, + FF0000062DUMMYID001234567 /* PiggyCardsModels.swift */, ); path = Entites; sourceTree = ""; @@ -5829,8 +5857,8 @@ 47AE8C1628C63F9400490F5E /* Views */ = { isa = PBXGroup; children = ( - 75F3EF542E16AD060092A0D9 /* POIDetailsView.swift */, - 753CE9D72E12B6F9004A0A13 /* POIDetailsViewModel.swift */, + 47AE8C1728C63F9C00490F5E /* POIDetailsView.swift */, + EE0000032DUMMYID001234567 /* POIDetailsViewModel.swift */, ); path = Views; sourceTree = ""; @@ -5923,8 +5951,8 @@ isa = PBXGroup; children = ( 472D13E0299E1F2F006903F1 /* CSVBuilder.swift */, + EE0000052DUMMYID001234567 /* PercentageFormatter.swift */, 75A0A3F22CA7DBCF003ED48B /* TimeUtils.swift */, - D9B18E3F81E54074AC0E0CECAB2421C2 /* PercentageFormatter.swift */, ); path = Utils; sourceTree = ""; @@ -6082,7 +6110,6 @@ 7545ED552DA91AC80075F45C /* DashSpend */ = { isa = PBXGroup; children = ( - 757AEBD92E1139B4007BE8B4 /* DashSpendTermsScreen.swift */, 75D9EBC42DE5CE14009416A2 /* GiftCardDetailsView.swift */, 75D9EBC52DE5CE14009416A2 /* GiftCardDetailsViewModel.swift */, 753F75332DD0D41900D40DFE /* DashSpendPayScreen.swift */, @@ -6091,6 +6118,7 @@ 75C3EDFD2DA7C63C00A4E9C0 /* DashSpendLoginInfoView.swift */, 75C3EDFE2DA7C63C00A4E9C0 /* DashSpendUserAuthScreen.swift */, 7545ED562DA91AEA0075F45C /* DashSpendUserAuthViewModel.swift */, + 7545ED5C2DA91F590075F45C /* DashSpendTermsScreen.swift */, ); path = DashSpend; sourceTree = ""; @@ -6118,6 +6146,7 @@ children = ( 7581B19C2CE3509A00714007 /* Dialogs */, 75EBAA112BB99B6B004488E3 /* BottomSheet.swift */, + AD6615F1246B5935365B05BD /* NavigationBar.swift */, 759ADD562BF3447400767ACD /* Button.swift */, 75CDD7852C08D61300F433D2 /* DashAmount.swift */, 750CEFA02CCA6EA100E87A32 /* TextInput.swift */, @@ -6142,51 +6171,6 @@ path = "SwiftUI Components"; sourceTree = ""; }; - 757AEBDC2E113D6E007BE8B4 /* DashSpend */ = { - isa = PBXGroup; - children = ( - 757AEBC42E113173007BE8B4 /* PiggyCardsConstants.swift */, - 75A92B8B2E0FDDA900BFFA2D /* GiftCardProvider.swift */, - 7545ED522DA91A2F0075F45C /* CTXConstants.swift */, - ); - path = DashSpend; - sourceTree = ""; - }; - 757AEBDD2E113D7B007BE8B4 /* DashSpend */ = { - isa = PBXGroup; - children = ( - 757AEBDF2E113D8A007BE8B4 /* PiggyCards */, - 757AEBDE2E113D86007BE8B4 /* CTX */, - 75F3EF4D2E1553BB0092A0D9 /* DashSpendError.swift */, - 757AEBE02E114E9B007BE8B4 /* DashSpendRepositoryFactory.swift */, - 757AEBE32E114EE0007BE8B4 /* DashSpendRepository.swift */, - ); - path = DashSpend; - sourceTree = ""; - }; - 757AEBDE2E113D86007BE8B4 /* CTX */ = { - isa = PBXGroup; - children = ( - 75A2F3022DE48C860046BE17 /* CTXSpendTokenService.swift */, - 754565C42DAA52A000DA4E8E /* CTXSpendAPI.swift */, - 754565C52DAA52A000DA4E8E /* CTXSpendEndpoint.swift */, - 754565C72DAA52A000DA4E8E /* CTXSpendRepository.swift */, - ); - path = CTX; - sourceTree = ""; - }; - 757AEBDF2E113D8A007BE8B4 /* PiggyCards */ = { - isa = PBXGroup; - children = ( - 757AEBCA2E1131A1007BE8B4 /* PiggyCardsAPI.swift */, - 757AEBCB2E1131A1007BE8B4 /* PiggyCardsEndpoint.swift */, - 757AEBCC2E1131A1007BE8B4 /* PiggyCardsRepository.swift */, - 75F3EF4A2E13D1670092A0D9 /* PiggyCardsTokenService.swift */, - 75F3EF4B2E13D1680092A0D0 /* PiggyCardsCache.swift */, - ); - path = PiggyCards; - sourceTree = ""; - }; 7581B19C2CE3509A00714007 /* Dialogs */ = { isa = PBXGroup; children = ( @@ -6303,7 +6287,7 @@ 75D5F3C0191EC270004AB296 /* Frameworks */, 75D5F3BF191EC270004AB296 /* Products */, 708B9F2B4B1E4C31B5010CDF /* RadioButtonRow.swift */, - E4313B239BF48C0CBA67D201 /* Pods */, + 8AE9CD5705796B04FF0033B6 /* Pods */, ); sourceTree = ""; wrapsLines = 0; @@ -6348,13 +6332,13 @@ 22B6A4471C0E963900673913 /* libbz2.tbd */, 75F2E0B61BE2D5F000EAE861 /* Accelerate.framework */, BAE12BE61B2DEE7F00895CC5 /* NotificationCenter.framework */, - D1076C503456F2EAB8B218B5 /* libPods-DashWalletScreenshotsUITests.a */, - CADD19F58827E5801741B996 /* libPods-DashWalletTests.a */, - B6C69EDE30817777EA98257C /* libPods-TodayExtension.a */, - D8F163F5BBAE9176E64D007C /* libPods-WatchApp.a */, - 1946AE4B077923ED5BEF70FD /* libPods-WatchApp Extension.a */, - 58E654E571C2BE6208FBF352 /* libPods-dashpay.a */, - 640B293ED8F6BC5016CD13EC /* libPods-dashwallet.a */, + 3C20BCC772DF4075F8EADAE0 /* libPods-DashWalletScreenshotsUITests.a */, + C56BFBBABD008D06578BDD9C /* libPods-DashWalletTests.a */, + D18D0D69B7365947239D4F97 /* libPods-TodayExtension.a */, + 38C4CA9D73A147BA44601741 /* libPods-WatchApp.a */, + 4C22BC09CF6178544B2300A4 /* libPods-WatchApp Extension.a */, + D6E23A2DA41FE189E773C705 /* libPods-dashpay.a */, + F3BA4BE42F52588AED15BF7E /* libPods-dashwallet.a */, ); name = Frameworks; sourceTree = ""; @@ -6434,6 +6418,41 @@ path = UsernamePending; sourceTree = ""; }; + 8AE9CD5705796B04FF0033B6 /* Pods */ = { + isa = PBXGroup; + children = ( + BC46CEE26088DC2B21D22315 /* Pods-DashWalletScreenshotsUITests.debug.xcconfig */, + C1AFBC4E154DF42D982613E4 /* Pods-DashWalletScreenshotsUITests.testnet.xcconfig */, + 718A7E2BCD93948084E43A8F /* Pods-DashWalletScreenshotsUITests.release.xcconfig */, + B1A681489B9516DC10084A61 /* Pods-DashWalletScreenshotsUITests.testflight.xcconfig */, + 77215C3978EE089C06A41979 /* Pods-DashWalletTests.debug.xcconfig */, + 281D63D6AC9610BCF4765D07 /* Pods-DashWalletTests.testnet.xcconfig */, + D8BD81810F2B0C11C86E7A5E /* Pods-DashWalletTests.release.xcconfig */, + 62C1F7A3ABEE7CF3BBB270C4 /* Pods-DashWalletTests.testflight.xcconfig */, + EDE78DB35CE393ADB4F3C5DD /* Pods-TodayExtension.debug.xcconfig */, + 74F4F603C555A521F738DC9E /* Pods-TodayExtension.testnet.xcconfig */, + D96AAF71E3E67F7AD309BCC4 /* Pods-TodayExtension.release.xcconfig */, + 6A44C167AF8F881176AFB256 /* Pods-TodayExtension.testflight.xcconfig */, + 0995737D764092DF77CB88AC /* Pods-WatchApp.debug.xcconfig */, + AF918A810315A7BE335BFFA6 /* Pods-WatchApp.testnet.xcconfig */, + 4944819B9E17D4CC7DBFF293 /* Pods-WatchApp.release.xcconfig */, + 04D182469170A3A2843F51CA /* Pods-WatchApp.testflight.xcconfig */, + 2E17397DF35152CAFBB79068 /* Pods-WatchApp Extension.debug.xcconfig */, + 4D37A3F73905BC239A9D127D /* Pods-WatchApp Extension.testnet.xcconfig */, + E57EEDA37189E949FBAAA627 /* Pods-WatchApp Extension.release.xcconfig */, + FC016B99DFFB0CBAC3D19290 /* Pods-WatchApp Extension.testflight.xcconfig */, + A47B6DF71195E41A5B7B5F99 /* Pods-dashpay.debug.xcconfig */, + 67217DE34817FB304EDEA8D4 /* Pods-dashpay.testnet.xcconfig */, + 28AA9F2D282325F800A4F3AA /* Pods-dashpay.release.xcconfig */, + 8391BA0D088FF516D63DE9A1 /* Pods-dashpay.testflight.xcconfig */, + 86CC430C535DAEBF900E5914 /* Pods-dashwallet.debug.xcconfig */, + C09FD41E863456F8BF96B2DB /* Pods-dashwallet.testnet.xcconfig */, + 1C3070D5E872E975F8473A68 /* Pods-dashwallet.release.xcconfig */, + 6DC4B39C45C824674E05DB22 /* Pods-dashwallet.testflight.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; BA913BDF1BD57E4D005A7C0E /* WatchApp */ = { isa = PBXGroup; children = ( @@ -7659,39 +7678,16 @@ path = "Sync View"; sourceTree = ""; }; - E4313B239BF48C0CBA67D201 /* Pods */ = { - isa = PBXGroup; - children = ( - 01F09AF3E3D8868F988B61A9 /* Pods-DashWalletScreenshotsUITests.debug.xcconfig */, - 1A13DF165F6A0780F58985AB /* Pods-DashWalletScreenshotsUITests.testnet.xcconfig */, - EF6903EDB8E53378EBD7E567 /* Pods-DashWalletScreenshotsUITests.release.xcconfig */, - 36B4F7C0211EF19218D4461F /* Pods-DashWalletScreenshotsUITests.testflight.xcconfig */, - 1FA780FC3C067D0F6DEE9543 /* Pods-DashWalletTests.debug.xcconfig */, - DAB1F0C19723DDC2CA2E838A /* Pods-DashWalletTests.testnet.xcconfig */, - 481BC7445B8333F6878FAA20 /* Pods-DashWalletTests.release.xcconfig */, - 146E2F5124D22E068480F04F /* Pods-DashWalletTests.testflight.xcconfig */, - 3225D4E1525D11ACAF802BF9 /* Pods-TodayExtension.debug.xcconfig */, - 24FB5BA96FA10F1B82E20055 /* Pods-TodayExtension.testnet.xcconfig */, - DB35A287E58331F58D99D5F1 /* Pods-TodayExtension.release.xcconfig */, - 9766A9003AD824CA2EAA01A2 /* Pods-TodayExtension.testflight.xcconfig */, - A5C7B9C768A2B7DF6F1C4547 /* Pods-WatchApp.debug.xcconfig */, - 17F10C4797201AB6B2B80351 /* Pods-WatchApp.testnet.xcconfig */, - 8EF27AB178913A4F7CE601BA /* Pods-WatchApp.release.xcconfig */, - 8E3AF0B3608E27017BA8CCB8 /* Pods-WatchApp.testflight.xcconfig */, - 56FC360EE306AA26A03F9818 /* Pods-WatchApp Extension.debug.xcconfig */, - 8C27AC100E93227C1C780B9B /* Pods-WatchApp Extension.testnet.xcconfig */, - 274345742E0F7EF79CF8C93A /* Pods-WatchApp Extension.release.xcconfig */, - FBC78F829276FEA507762984 /* Pods-WatchApp Extension.testflight.xcconfig */, - 5F9EF7C7D0B76255AA95D29C /* Pods-dashpay.debug.xcconfig */, - A3061D2E6CAD5509B5E8B276 /* Pods-dashpay.testnet.xcconfig */, - CB5FF6F5CB2E4B13DC2C3E3D /* Pods-dashpay.release.xcconfig */, - 7D4ABD3D67B2A9B1CA91087A /* Pods-dashpay.testflight.xcconfig */, - 935B82D06EFE42FC581D3A4A /* Pods-dashwallet.debug.xcconfig */, - 68F834C43B4E8FD4E9D4A3EB /* Pods-dashwallet.testnet.xcconfig */, - ECEC6355C8742EF241A10660 /* Pods-dashwallet.release.xcconfig */, - 2F85B172693D3E14E28731AA /* Pods-dashwallet.testflight.xcconfig */, + DD0000012DUMMYID001234567 /* DashSpend/PiggyCards */ = { + isa = PBXGroup; + children = ( + CC0000062DUMMYID001234567 /* PiggyCardsAPI.swift */, + CC0000072DUMMYID001234567 /* PiggyCardsCache.swift */, + CC0000082DUMMYID001234567 /* PiggyCardsEndpoint.swift */, + CC0000092DUMMYID001234567 /* PiggyCardsRepository.swift */, + CC0000102DUMMYID001234567 /* PiggyCardsTokenService.swift */, ); - path = Pods; + path = DashSpend/PiggyCards; sourceTree = ""; }; FB3FF0B0222641210059A9A5 /* Masternode Keys */ = { @@ -7710,7 +7706,7 @@ isa = PBXNativeTarget; buildConfigurationList = 2A46630B2279DC2F0027533B /* Build configuration list for PBXNativeTarget "DashWalletScreenshotsUITests" */; buildPhases = ( - 6A1D9DA6510031A47151028D /* [CP] Check Pods Manifest.lock */, + 910A25650B9BB7C3EDEB829B /* [CP] Check Pods Manifest.lock */, 2ADC722623B4071700D9DD37 /* Run Script Swift Format */, 2A4662FC2279DC2F0027533B /* Sources */, 2A4662FD2279DC2F0027533B /* Frameworks */, @@ -7730,7 +7726,7 @@ isa = PBXNativeTarget; buildConfigurationList = 75D5F3F6191EC270004AB296 /* Build configuration list for PBXNativeTarget "dashwallet" */; buildPhases = ( - F43ED09447AE26F82F4F0B66 /* [CP] Check Pods Manifest.lock */, + 08F6DAB00DF73D2DA860DE1D /* [CP] Check Pods Manifest.lock */, 2AF134F821DE95FC004B9859 /* Run Script - Uphold Constants */, 2A4431D722D6391F009BAF7F /* Run Script - clang-format */, FB0ACB9A1F9A99E400F4AB52 /* Run Script - bartycrouch */, @@ -7740,7 +7736,7 @@ BAE12BF71B2DEE7F00895CC5 /* Embed Foundation Extensions */, BA913C021BD57E4E005A7C0E /* Embed Watch Content */, 2A1AF9FD23C86A4400442AF5 /* Run Script - Cleanup Uphold Constants */, - 1B6BB11A49B1B6567EC4816E /* [CP] Copy Pods Resources */, + 345EF76B976730DE3012526D /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -7757,7 +7753,7 @@ isa = PBXNativeTarget; buildConfigurationList = 75D5F3F9191EC270004AB296 /* Build configuration list for PBXNativeTarget "DashWalletTests" */; buildPhases = ( - B154FDF17FD4F8576539B82B /* [CP] Check Pods Manifest.lock */, + 7C9E00747676DAE0ABAA0C52 /* [CP] Check Pods Manifest.lock */, 75D5F3E1191EC270004AB296 /* Sources */, 75D5F3E2191EC270004AB296 /* Frameworks */, 75D5F3E3191EC270004AB296 /* Resources */, @@ -7776,7 +7772,7 @@ isa = PBXNativeTarget; buildConfigurationList = BA913C011BD57E4E005A7C0E /* Build configuration list for PBXNativeTarget "WatchApp" */; buildPhases = ( - 612A39196B75CEF92F436B7C /* [CP] Check Pods Manifest.lock */, + 6761AFE7CA3EDFF4FF268B23 /* [CP] Check Pods Manifest.lock */, BA913BDC1BD57E4D005A7C0E /* Resources */, BA913C001BD57E4E005A7C0E /* Embed Foundation Extensions */, B361A57803894CC7C6E59498 /* Frameworks */, @@ -7795,7 +7791,7 @@ isa = PBXNativeTarget; buildConfigurationList = BA913BFF1BD57E4E005A7C0E /* Build configuration list for PBXNativeTarget "WatchApp Extension" */; buildPhases = ( - 06A1ABEFED4016E230262239 /* [CP] Check Pods Manifest.lock */, + 7E9BC050F05F77EC2D12DEAD /* [CP] Check Pods Manifest.lock */, 2A858A15237EED350097A7B5 /* Swift Format */, 2A858A16237EED5D0097A7B5 /* Swift Lint */, BA913BE61BD57E4D005A7C0E /* Sources */, @@ -7815,7 +7811,7 @@ isa = PBXNativeTarget; buildConfigurationList = BAE12BF61B2DEE7F00895CC5 /* Build configuration list for PBXNativeTarget "TodayExtension" */; buildPhases = ( - 26352CC8499B59B42FBB7C2C /* [CP] Check Pods Manifest.lock */, + 81600197311AC4FC9835F1D9 /* [CP] Check Pods Manifest.lock */, BAE12BE11B2DEE7F00895CC5 /* Sources */, BAE12BE21B2DEE7F00895CC5 /* Frameworks */, BAE12BE31B2DEE7F00895CC5 /* Resources */, @@ -7833,7 +7829,7 @@ isa = PBXNativeTarget; buildConfigurationList = C9D2C94E2A320AA000D15901 /* Build configuration list for PBXNativeTarget "dashpay" */; buildPhases = ( - E21B5A2C8D3C9CE8A71BF97A /* [CP] Check Pods Manifest.lock */, + E89FBBEF1ECEF3BD173AC8EB /* [CP] Check Pods Manifest.lock */, C9D2C6902A320AA000D15901 /* Run Script - Uphold Constants */, C9D2C6912A320AA000D15901 /* Run Script - clang-format */, C9D2C6922A320AA000D15901 /* Run Script - bartycrouch */, @@ -7841,7 +7837,7 @@ C9D2C8F52A320AA000D15901 /* Frameworks */, C9D2C90A2A320AA000D15901 /* Resources */, C9D2C94D2A320AA000D15901 /* Run Script - Cleanup Uphold Constants */, - CB06FC69C4504C5CDD3A3BAD /* [CP] Copy Pods Resources */, + E5B46042D96D592661436332 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -8134,7 +8130,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 06A1ABEFED4016E230262239 /* [CP] Check Pods Manifest.lock */ = { + 08F6DAB00DF73D2DA860DE1D /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -8149,74 +8145,51 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-WatchApp Extension-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-dashwallet-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 1B6BB11A49B1B6567EC4816E /* [CP] Copy Pods Resources */ = { + 2A1AF9FD23C86A4400442AF5 /* Run Script - Cleanup Uphold Constants */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-dashwallet/Pods-dashwallet-resources.sh", - "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/DashSync/DashSync.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport_Privacy.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities_Privacy.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises_Privacy.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf_Privacy.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSwiftUI/SDWebImageSwiftUI.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.swift.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/gRPC/gRPCCertificates.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/lottie-ios/LottiePrivacyInfo.bundle", ); - name = "[CP] Copy Pods Resources"; + name = "Run Script - Cleanup Uphold Constants"; + outputFileListPaths = ( + ); outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Alamofire.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/DashSync.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleDataTransport_Privacy.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleUtilities_Privacy.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FBLPromises_Privacy.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Protobuf_Privacy.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SDWebImage.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SDWebImageSwiftUI.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SQLite.swift.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/gRPCCertificates.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/LottiePrivacyInfo.bundle", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-dashwallet/Pods-dashwallet-resources.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "# Type a script or drag a script file from your workspace to insert its path.\nif [ \"${CONFIGURATION}\" = \"Release\" ] ; then\nif [ ! -f \"DWUpholdMainnetConstants__Empty.m\" ]; then\n echo \"error: DWUpholdMainnetConstants__Empty.m file not found!\"\n exit 1\nfi\n\ncp \"DWUpholdMainnetConstants__Empty.m\" \"DashWallet/Sources/Models/Uphold/DWUpholdMainnetConstants.m\"\nelse\n # check if original file exist (in case it was moved or deleted while refactoring)\n if [ ! -f \"DashWallet/Sources/Models/Uphold/DWUpholdMainnetConstants.m\" ]; then\n echo \"error: DWUpholdMainnetConstants.m file not found! Fix Uphold Constants build phase\"\n exit 1\n fi\nfi\n"; }; - 26352CC8499B59B42FBB7C2C /* [CP] Check Pods Manifest.lock */ = { + 2A4431D722D6391F009BAF7F /* Run Script - clang-format */ = { isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; + alwaysOutOfDate = 1; + buildActionMask = 12; files = ( ); inputFileListPaths = ( ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", ); - name = "[CP] Check Pods Manifest.lock"; + name = "Run Script - clang-format"; outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-TodayExtension-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; + shellScript = "#!/bin/bash\n\necho \"Reformatting code with clang-format\"\n\nfunction formatObjCFiles() {\n find \"$1\" -name '*.h' -not -path \"*/DWUpholdMainnetConstants.m\" -print0 | xargs -0 clang-format -i -style=file\n find \"$1\" -name '*.m' -not -path \"*/DWUpholdMainnetConstants.m\" -print0 | xargs -0 clang-format -i -style=file\n find \"$1\" -name '*.mm' -not -path \"*/DWUpholdMainnetConstants.m\" -print0 | xargs -0 clang-format -i -style=file\n}\n\nif which clang-format >/dev/null; then\n for SUBDIR in DashWallet/Sources\n do\n formatObjCFiles $SUBDIR\n done\n \n formatObjCFiles TodayExtension\n formatObjCFiles Shared/Sources\nelse\n echo \"warning: clang-format not installed, install it by running `brew install clang-format`\"\nfi\n"; }; - 2A1AF9FD23C86A4400442AF5 /* Run Script - Cleanup Uphold Constants */ = { + 2A858A15237EED350097A7B5 /* Swift Format */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -8225,35 +8198,34 @@ ); inputPaths = ( ); - name = "Run Script - Cleanup Uphold Constants"; + name = "Swift Format"; outputFileListPaths = ( ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "# Type a script or drag a script file from your workspace to insert its path.\nif [ \"${CONFIGURATION}\" = \"Release\" ] ; then\nif [ ! -f \"DWUpholdMainnetConstants__Empty.m\" ]; then\n echo \"error: DWUpholdMainnetConstants__Empty.m file not found!\"\n exit 1\nfi\n\ncp \"DWUpholdMainnetConstants__Empty.m\" \"DashWallet/Sources/Models/Uphold/DWUpholdMainnetConstants.m\"\nelse\n # check if original file exist (in case it was moved or deleted while refactoring)\n if [ ! -f \"DashWallet/Sources/Models/Uphold/DWUpholdMainnetConstants.m\" ]; then\n echo \"error: DWUpholdMainnetConstants.m file not found! Fix Uphold Constants build phase\"\n exit 1\n fi\nfi\n"; + shellScript = "if which swiftformat >/dev/null; then\n swiftformat \"WatchApp Extension\"\nelse\n echo \"warning: SwiftFormat not installed, download from https://github.com/nicklockwood/SwiftFormat\"\nfi\n"; }; - 2A4431D722D6391F009BAF7F /* Run Script - clang-format */ = { + 2A858A16237EED5D0097A7B5 /* Swift Lint */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 12; + buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( ); inputPaths = ( ); - name = "Run Script - clang-format"; + name = "Swift Lint"; outputFileListPaths = ( ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#!/bin/bash\n\necho \"Reformatting code with clang-format\"\n\nfunction formatObjCFiles() {\n find \"$1\" -name '*.h' -not -path \"*/DWUpholdMainnetConstants.m\" -print0 | xargs -0 clang-format -i -style=file\n find \"$1\" -name '*.m' -not -path \"*/DWUpholdMainnetConstants.m\" -print0 | xargs -0 clang-format -i -style=file\n find \"$1\" -name '*.mm' -not -path \"*/DWUpholdMainnetConstants.m\" -print0 | xargs -0 clang-format -i -style=file\n}\n\nif which clang-format >/dev/null; then\n for SUBDIR in DashWallet/Sources\n do\n formatObjCFiles $SUBDIR\n done\n \n formatObjCFiles TodayExtension\n formatObjCFiles Shared/Sources\nelse\n echo \"warning: clang-format not installed, install it by running `brew install clang-format`\"\nfi\n"; + shellScript = "if which swiftlint >/dev/null; then\n swiftlint\nelse\n echo \"warning: SwiftLint does not exist, download from https://github.com/realm/SwiftLint\"\nfi\n"; }; - 2A858A15237EED350097A7B5 /* Swift Format */ = { + 2ADC722623B4071700D9DD37 /* Run Script Swift Format */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -8262,16 +8234,16 @@ ); inputPaths = ( ); - name = "Swift Format"; + name = "Run Script Swift Format"; outputFileListPaths = ( ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if which swiftformat >/dev/null; then\n swiftformat \"WatchApp Extension\"\nelse\n echo \"warning: SwiftFormat not installed, download from https://github.com/nicklockwood/SwiftFormat\"\nfi\n"; + shellScript = "if which swiftformat >/dev/null; then\n swiftformat \"DashWalletScreenshotsUITests\"\nelse\n echo \"warning: SwiftFormat not installed, download from https://github.com/nicklockwood/SwiftFormat\"\nfi\n"; }; - 2A858A16237EED5D0097A7B5 /* Swift Lint */ = { + 2AF134F821DE95FC004B9859 /* Run Script - Uphold Constants */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -8280,16 +8252,54 @@ ); inputPaths = ( ); - name = "Swift Lint"; + name = "Run Script - Uphold Constants"; outputFileListPaths = ( ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if which swiftlint >/dev/null; then\n swiftlint\nelse\n echo \"warning: SwiftLint does not exist, download from https://github.com/realm/SwiftLint\"\nfi\n"; + shellScript = "if [ \"${CONFIGURATION}\" = \"Release\" ] ; then\n if [ ! -f \"DWUpholdMainnetConstants__Release.m\" ]; then\n echo \"error: DWUpholdMainnetConstants__Release.m file not found!\"\n exit 1\n fi\n\n cp \"DWUpholdMainnetConstants__Release.m\" \"DashWallet/Sources/Models/Uphold/DWUpholdMainnetConstants.m\"\nelse\n # check if original file exist (in case it was moved or deleted while refactoring)\n if [ ! -f \"DashWallet/Sources/Models/Uphold/DWUpholdMainnetConstants.m\" ]; then\n echo \"error: DWUpholdMainnetConstants.m file not found! Fix Uphold Constants build phase\"\n exit 1\n fi\nfi\n"; }; - 2ADC722623B4071700D9DD37 /* Run Script Swift Format */ = { + 345EF76B976730DE3012526D /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-dashwallet/Pods-dashwallet-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/DashSync/DashSync.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf_Privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSwiftUI/SDWebImageSwiftUI.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.swift.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/gRPC/gRPCCertificates.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/lottie-ios/LottiePrivacyInfo.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Alamofire.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/DashSync.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleDataTransport_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleUtilities_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FBLPromises_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Protobuf_Privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SDWebImage.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SDWebImageSwiftUI.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SQLite.swift.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/gRPCCertificates.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/LottiePrivacyInfo.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-dashwallet/Pods-dashwallet-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 6761AFE7CA3EDFF4FF268B23 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -8297,17 +8307,21 @@ inputFileListPaths = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); - name = "Run Script Swift Format"; + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( ); outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-WatchApp-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if which swiftformat >/dev/null; then\n swiftformat \"DashWalletScreenshotsUITests\"\nelse\n echo \"warning: SwiftFormat not installed, download from https://github.com/nicklockwood/SwiftFormat\"\nfi\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; }; - 2AF134F821DE95FC004B9859 /* Run Script - Uphold Constants */ = { + 7C9E00747676DAE0ABAA0C52 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -8315,17 +8329,21 @@ inputFileListPaths = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); - name = "Run Script - Uphold Constants"; + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( ); outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-DashWalletTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ \"${CONFIGURATION}\" = \"Release\" ] ; then\n if [ ! -f \"DWUpholdMainnetConstants__Release.m\" ]; then\n echo \"error: DWUpholdMainnetConstants__Release.m file not found!\"\n exit 1\n fi\n\n cp \"DWUpholdMainnetConstants__Release.m\" \"DashWallet/Sources/Models/Uphold/DWUpholdMainnetConstants.m\"\nelse\n # check if original file exist (in case it was moved or deleted while refactoring)\n if [ ! -f \"DashWallet/Sources/Models/Uphold/DWUpholdMainnetConstants.m\" ]; then\n echo \"error: DWUpholdMainnetConstants.m file not found! Fix Uphold Constants build phase\"\n exit 1\n fi\nfi\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; }; - 612A39196B75CEF92F436B7C /* [CP] Check Pods Manifest.lock */ = { + 7E9BC050F05F77EC2D12DEAD /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -8340,14 +8358,14 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-WatchApp-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-WatchApp Extension-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 6A1D9DA6510031A47151028D /* [CP] Check Pods Manifest.lock */ = { + 81600197311AC4FC9835F1D9 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -8362,14 +8380,14 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-DashWalletScreenshotsUITests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-TodayExtension-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - B154FDF17FD4F8576539B82B /* [CP] Check Pods Manifest.lock */ = { + 910A25650B9BB7C3EDEB829B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -8384,7 +8402,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-DashWalletTests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-DashWalletScreenshotsUITests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -8460,7 +8478,7 @@ shellPath = /bin/sh; shellScript = "# Type a script or drag a script file from your workspace to insert its path.\nif [ \"${CONFIGURATION}\" = \"Release\" ] ; then\nif [ ! -f \"DWUpholdMainnetConstants__Empty.m\" ]; then\n echo \"error: DWUpholdMainnetConstants__Empty.m file not found!\"\n exit 1\nfi\n\ncp \"DWUpholdMainnetConstants__Empty.m\" \"DashWallet/Sources/Models/Uphold/DWUpholdMainnetConstants.m\"\nelse\n # check if original file exist (in case it was moved or deleted while refactoring)\n if [ ! -f \"DashWallet/Sources/Models/Uphold/DWUpholdMainnetConstants.m\" ]; then\n echo \"error: DWUpholdMainnetConstants.m file not found! Fix Uphold Constants build phase\"\n exit 1\n fi\nfi\n"; }; - CB06FC69C4504C5CDD3A3BAD /* [CP] Copy Pods Resources */ = { + E5B46042D96D592661436332 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -8500,7 +8518,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-dashpay/Pods-dashpay-resources.sh\"\n"; showEnvVarsInLog = 0; }; - E21B5A2C8D3C9CE8A71BF97A /* [CP] Check Pods Manifest.lock */ = { + E89FBBEF1ECEF3BD173AC8EB /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -8522,28 +8540,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - F43ED09447AE26F82F4F0B66 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-dashwallet-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; FB0ACB9A1F9A99E400F4AB52 /* Run Script - bartycrouch */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -8595,7 +8591,7 @@ C9F451EB2A0BF10B00825057 /* SyncingAlertViewController.swift in Sources */, 11B8449628F5B9F80082770C /* CrowdNodeResponse.swift in Sources */, 47AE8BB228BFF61A00490F5E /* FileManager+DashWallet.swift in Sources */, - 7545ED532DA91A2F0075F45C /* CTXConstants.swift in Sources */, + 7545ED532DA91A2F0075F45C /* DashSpend/CTXConstants.swift in Sources */, 47AE8BF228C1306000490F5E /* PointOfUseItemCell.swift in Sources */, 47083B3229892D770010AF71 /* DSTransaction+DashWallet.swift in Sources */, 751B61C82AE0EDD000D1C2EF /* CoinJoinLevelsViewController.swift in Sources */, @@ -8609,7 +8605,7 @@ 47C661AD28F972BD00028A8D /* NumberKeyboardButton.swift in Sources */, 11AE3DD82997C599000856EE /* IsDefaultEmail.swift in Sources */, 2A9FFF2A2233E60F00956D5F /* DWUpholdAccountObject.m in Sources */, - 75A2F3042DE48C860046BE17 /* CTXSpendTokenService.swift in Sources */, + 75A2F3042DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift in Sources */, 2A9FFE812230FF4700956D5F /* DWFormTableViewController.m in Sources */, C909614D29EFF7D600002D82 /* WalletKeysOverviewModel.swift in Sources */, 4751137528DAF28800223B77 /* UIAssembly.swift in Sources */, @@ -8644,6 +8640,7 @@ 2A74EFFB2305464C00C475EB /* DWRecoverTextView.m in Sources */, 4709C315287EA11900B4BD48 /* TransactionMetadata.swift in Sources */, C91E91AE29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift in Sources */, + B3A1F2C4D5E6078901234568 /* ExtendedPublicKeySheet.swift in Sources */, 47AE8BFE28C1306000490F5E /* AtmListViewController.swift in Sources */, 754D02082D155564005CA466 /* CoinJoinTransaction.swift in Sources */, 47A514602848F75B005A8E3E /* TxDetailViewController.swift in Sources */, @@ -8712,8 +8709,6 @@ 2AD1CE8A22DC9C6F00C99324 /* DWVerifySeedPhraseContentView.m in Sources */, 47A2A2E2293DCCEA00938DB7 /* Coinbase+Constants.swift in Sources */, 47AE8C0728C2274200490F5E /* PointOfUseListSearchCell.swift in Sources */, - 1DAD1B012ED4037F00C8090E /* GeoRestrictionService.swift in Sources */, - 1DAD1AA92ED2037F00C8090E /* BarcodeScanner.swift in Sources */, 4774DCE128F44BA4008CF87D /* ServiceDataProvider.swift in Sources */, C9F451E72A0BA16400825057 /* PaymentButton.swift in Sources */, 2A4431DB22D675CD009BAF7F /* DWPreviewSeedPhraseViewController.m in Sources */, @@ -8747,7 +8742,6 @@ 478C98292942DDB800FAA0F0 /* BuyDashModel.swift in Sources */, 47AE8BF728C1306000490F5E /* MerchantListViewController.swift in Sources */, 2A9FFE062230FF2B00956D5F /* DWUpholdCardObject.m in Sources */, - 757AEBE42E114EE5007BE8B4 /* DashSpendRepository.swift in Sources */, 2A2CD72222F9B571008C7BC9 /* DWIntrinsicCollectionView.m in Sources */, 2A913E7F23A30609006A2A59 /* DWRootModelStub.m in Sources */, 2A2CD6EE22F48159008C7BC9 /* UIDevice+DashWallet.m in Sources */, @@ -8774,7 +8768,6 @@ 752F81AA2E323FDB00ADA76D /* ToolsMenuViewModel.swift in Sources */, 470AE1882926600A001A0514 /* PaymentController.swift in Sources */, 751C05DE2D3E39A800475E52 /* TransactionListDataItem.swift in Sources */, - 753CE9D92E12B6FB004A0A13 /* POIDetailsViewModel.swift in Sources */, 2ADB396C242615C200A6F898 /* CALayer+MBAnimationPersistence.m in Sources */, 2A9FFDF42230FF1A00956D5F /* UIView+DWAnimations.m in Sources */, 114573A42949B221009DCF27 /* VerifiedSuccessfullyViewController.swift in Sources */, @@ -8784,7 +8777,6 @@ 2A913EA423A799F3006A2A59 /* DWTransactionListDataItemObject.m in Sources */, 2A9FFE052230FF2B00956D5F /* DWUpholdAPIProvider.m in Sources */, C94D98282A53035D00F3BEE1 /* EnterAddressViewController.swift in Sources */, - 757AEBE22E114E9B007BE8B4 /* DashSpendRepositoryFactory.swift in Sources */, 47F2C67D28602D4F00C2B774 /* BasePageSheetViewController.swift in Sources */, 119E8D0429051F9900D406C1 /* CrowdNodeRequest.swift in Sources */, 0F6EDFD228C896BD000427E7 /* CoinbaseExchangeRateResponse.swift in Sources */, @@ -8818,8 +8810,6 @@ 47AE8C1328C5F0A700490F5E /* POIDetailsViewController.swift in Sources */, 750CEFA22CCA6EA100E87A32 /* TextInput.swift in Sources */, 47AE8C1C28C6AA2500490F5E /* PointOfUseLocationServicePopup.swift in Sources */, - 75F3EF4C2E13D1670092A0D9 /* PiggyCardsTokenService.swift in Sources */, - 75F3EF4E2E13D1680092A0D2 /* PiggyCardsCache.swift in Sources */, 472D13E8299E4EE7006903F1 /* BalanceModel.swift in Sources */, 47F2C6822860319400C2B774 /* TxReclassifyTransactionsInfoViewController.swift in Sources */, 2A4E535C22F335C200E5168A /* DWTransactionListDataProvider.m in Sources */, @@ -8924,6 +8914,22 @@ 47FA3B0229364991008D58DC /* HTTPClient.swift in Sources */, 7549BE582DEAECB8004F0BAF /* CustomIconMetadataProvider.swift in Sources */, 7549BE602DEAF628004F0BAF /* AddIconBitmapsTable.swift in Sources */, + AA0000012DUMMYID001234567 /* AddProviderToGiftCardsTable.swift in Sources */, + AA0000042DUMMYID001234567 /* DashSpend/GiftCardProvider.swift in Sources */, + BB0000012DUMMYID001234567 /* DashSpend/DashSpendError.swift in Sources */, + BB0000032DUMMYID001234567 /* DashSpend/DashSpendRepository.swift in Sources */, + BB0000052DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift in Sources */, + GG0000012DUMMYID001234567 /* GeoRestrictionService.swift in Sources */, + CC0000112DUMMYID001234567 /* PiggyCardsAPI.swift in Sources */, + CC0000132DUMMYID001234567 /* PiggyCardsCache.swift in Sources */, + CC0000152DUMMYID001234567 /* PiggyCardsEndpoint.swift in Sources */, + CC0000172DUMMYID001234567 /* PiggyCardsRepository.swift in Sources */, + CC0000192DUMMYID001234567 /* PiggyCardsTokenService.swift in Sources */, + EE0000012DUMMYID001234567 /* POIDetailsViewModel.swift in Sources */, + EE0000042DUMMYID001234567 /* PercentageFormatter.swift in Sources */, + FF0000012DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift in Sources */, + FF0000052DUMMYID001234567 /* PiggyCardsModels.swift in Sources */, + FF0000082DUMMYID001234567 /* BarcodeScanner.swift in Sources */, 2A8B9E6F2302A9C200FF8653 /* DWPasteboardAddressExtractor.m in Sources */, 757111A12CF20ED800A7D452 /* CoinJoinMixingTxSet.swift in Sources */, 477F501529531C07003C7508 /* ViewModel+Coinbase.swift in Sources */, @@ -8937,9 +8943,9 @@ 2AD1CE8022DC92BF00C99324 /* NSString+DWTextSize.m in Sources */, 47AE8C0528C1F74A00490F5E /* PointOfUseListFiltersCell.swift in Sources */, 47AE8C1A28C6A21A00490F5E /* AllMerchantLocationsDataProvider.swift in Sources */, - 754565CC2DAA52A000DA4E8E /* CTXSpendAPI.swift in Sources */, - 754565CE2DAA52A000DA4E8E /* CTXSpendRepository.swift in Sources */, - 754565CF2DAA52A000DA4E8E /* CTXSpendEndpoint.swift in Sources */, + 754565CC2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift in Sources */, + 754565CE2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift in Sources */, + 754565CF2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift in Sources */, C9F451E52A0B986E00825057 /* MainTabbarController.swift in Sources */, 7545ED612DA91FC60075F45C /* NumericKeyboardView.swift in Sources */, 47B30D78290BFCA60080C326 /* NumberFormatter+DashWallet.swift in Sources */, @@ -8968,7 +8974,6 @@ 478A2C7228DC909C00AD1420 /* BaseNavigationController.swift in Sources */, 47CDEECC294A2BAD008AE06D /* UIViewController+Coinbase.swift in Sources */, 472D13E1299E1F2F006903F1 /* CSVBuilder.swift in Sources */, - 75F3EF4E2E1553BF0092A0D9 /* DashSpendError.swift in Sources */, 0F6EDFC428C896BD000427E7 /* CoinbaseUserAuthInformation.swift in Sources */, 2A913EB623A7E145006A2A59 /* DWTransactionStub.m in Sources */, 118C05B829928F7800717E65 /* OnlineAccountEmailController.swift in Sources */, @@ -8993,6 +8998,7 @@ 7592AA7C2B9B08C000417F9E /* SupportedTopperPaymentMethods.swift in Sources */, 7503643E2C89D49A0029EC0D /* CoinJoinService.swift in Sources */, 75AA33CC2BF9C82700F12465 /* ModalDialog.swift in Sources */, + 7545ED5D2DA91F590075F45C /* DashSpendTermsScreen.swift in Sources */, 2A44314022CF642C009BAF7F /* DWRootModel.m in Sources */, 47C661AF28FDAA3400028A8D /* BaseAmountViewController.swift in Sources */, 478C982C2942F03500FAA0F0 /* SendingToView.swift in Sources */, @@ -9012,7 +9018,6 @@ 753F75352DD0D42300D40DFE /* DashSpendPayScreen.swift in Sources */, 47F005FF297164600029EB10 /* UITableView+DashWallet.swift in Sources */, 47C661B228FDC72700028A8D /* TransferAmountViewController.swift in Sources */, - 75A92B8C2E0FDDA900BFFA2D /* GiftCardProvider.swift in Sources */, C94F5E8E29D404850034FD57 /* ShortcutCell.swift in Sources */, 75B3C1B22E36100100CAFE05 /* ShortcutCustomizeBannerView.swift in Sources */, 75B3C1A22E36100100CAFE02 /* ShortcutSelectionView.swift in Sources */, @@ -9020,7 +9025,6 @@ FBEF3AF121823CD800917AB6 /* DWEnvironment.m in Sources */, 47AE8BF028C1306000490F5E /* AtmItemCell.swift in Sources */, 0F6EDFD728C896BD000427E7 /* CoinbaseService.swift in Sources */, - 757AEBC92E113185007BE8B4 /* PiggyCardsModels.swift in Sources */, 2A8B9E5622FEDF2900FF8653 /* DWControllerCollectionView.m in Sources */, 2A9FFDF52230FF1A00956D5F /* SFSafariViewController+DashWallet.m in Sources */, 474C7218298A422500475CA6 /* TransactionItemView.swift in Sources */, @@ -9032,7 +9036,7 @@ 2A6300452328D07500827825 /* DWLockPinInputView.m in Sources */, 2A0C69AC23125074001B8C90 /* UIView+DWHUD.m in Sources */, 75EBAA122BB99B6B004488E3 /* BottomSheet.swift in Sources */, - 1D267CE02ECF86920053AD68 /* AddProviderToGiftCardsTable.swift in Sources */, + B453B34B871E4125607DACDC /* NavigationBar.swift in Sources */, 75CED09E2ACFD0ED0095F10C /* CoinbaseDepositRequest.swift in Sources */, C94D98212A4CC78F00F3BEE1 /* DashInputField.swift in Sources */, 2A8B9E6822FFE4CC00FF8653 /* DWPayOptionModel.m in Sources */, @@ -9040,8 +9044,8 @@ 0F6EDFC928C896BD000427E7 /* CoinbaseTokenResponse.swift in Sources */, C9F42FB229DD5141001BC549 /* BackupInfoViewController.swift in Sources */, 2A7A7BAE234770C900451078 /* DWCaptureSessionManager.m in Sources */, + 91F0B8BA2F3FAB7C00E713AE /* KeysOverviewView.swift in Sources */, 759C8F9F2B593589004B1305 /* CrowdNodeAPYView.swift in Sources */, - 757AEBDB2E1139B4007BE8B4 /* DashSpendTermsScreen.swift in Sources */, C94D982E2A544E8E00F3BEE1 /* UIButton+Dash.swift in Sources */, C956AF2B2A5CC97F002FAB75 /* ConfirmPaymentModel.swift in Sources */, 2A11F59F2194BD6200E7B563 /* DWDataMigrationManager.m in Sources */, @@ -9051,6 +9055,7 @@ 47305870295AD62B004641DA /* NavigationBarAppearanceCustomizable.swift in Sources */, 471DD1B6290A901200E030C8 /* AmountObject.swift in Sources */, C909615129F158D700002D82 /* DerivationPathKeysViewController.swift in Sources */, + A0795C9369A1402498C00F69 /* DerivationPathKeysView.swift in Sources */, 4709C31E2880247C00B4BD48 /* DSTransaction+DashWallet.m in Sources */, 75D6D8E42D96A6DB00E40A6D /* StubTransactionSource.swift in Sources */, 75CDD7802C0898E400F433D2 /* Shape.swift in Sources */, @@ -9102,6 +9107,7 @@ 75D9EBC32DE5CD9C009416A2 /* GiftCardsDAO.swift in Sources */, 111C3C4E296C52F800788E18 /* WithdrawalLimit.swift in Sources */, 2A8B9E6522FFE43500FF8653 /* DWPayModel.m in Sources */, + 47AE8C1828C63F9C00490F5E /* POIDetailsView.swift in Sources */, 47E4F7C7297596D9006BEA68 /* DSChain+DashWallet.m in Sources */, 1193FF3B2961960B004EA8D7 /* FromLabel.swift in Sources */, 2A9172D325233F4F0024B4C5 /* DWPhraseRepairChildViewController.m in Sources */, @@ -9137,7 +9143,6 @@ 2AD1CE9722DD0E8E00C99324 /* DWSeedWordModel+DWLayoutSupport.m in Sources */, 75A0A3F32CA7DBCF003ED48B /* TimeUtils.swift in Sources */, 47EEE243293F436200049E0B /* CoinbaseAPIClient.swift in Sources */, - 7DC62C07EC8B45E0B605409B669257E9 /* PercentageFormatter.swift in Sources */, 47B30D80291123D30080C326 /* SendAmountViewController.swift in Sources */, 47CF46A1296540EF0067B6EE /* AccountService.swift in Sources */, 47C6E6E7291A90B3003FEDF2 /* ListHandlerView.swift in Sources */, @@ -9145,7 +9150,6 @@ 754D020E2D1558EB005CA466 /* GroupedTransactions.swift in Sources */, 11BD738128E7356100A34022 /* CrowdNode.swift in Sources */, 47AE8B9F28BFAD8200490F5E /* SQLite+ExloreDash.swift in Sources */, - 757AEBC62E113173007BE8B4 /* PiggyCardsConstants.swift in Sources */, 2A1F6415238FEEA900A9B505 /* DWAdvancedSecurityModel.m in Sources */, 47AE8BF828C1306000490F5E /* AtmDataProvider.swift in Sources */, 110C67952921147F006B580C /* GettingStartedViewController.swift in Sources */, @@ -9164,10 +9168,6 @@ 4751CAD92970509600F63AC4 /* ConvertCryptoOrderPreviewViews.swift in Sources */, 75E2F3CA2AA4D1B900C3B458 /* Topper.swift in Sources */, 2A8F422021BEFEEA00858B91 /* DWAboutModel.m in Sources */, - 75F3EF562E16AD060092A0D9 /* POIDetailsView.swift in Sources */, - 757AEBD22E1131A1007BE8B4 /* PiggyCardsAPI.swift in Sources */, - 757AEBD42E1131A1007BE8B4 /* PiggyCardsRepository.swift in Sources */, - 757AEBD52E1131A1007BE8B4 /* PiggyCardsEndpoint.swift in Sources */, 1141E4C5291FDC7A00ACDA9E /* WelcomeToCrowdNodeViewController.swift in Sources */, 2A4E531D22EA49FE00E5168A /* DWProgressView.m in Sources */, 7569D6892DE6DB6700768BFF /* ExploreContentsView.swift in Sources */, @@ -9175,6 +9175,7 @@ 477F501729543834003C7508 /* BaseViewController+NetworkReachability.swift in Sources */, 75D5F3CE191EC270004AB296 /* main.m in Sources */, 2A8C24B423336FEA00000D43 /* DWQuickReceiveViewController.m in Sources */, + 893AE6F535290DD1CEE89219 /* ImportPrivateKeySheet.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -9247,7 +9248,6 @@ 759609212C4553A400F3BF04 /* BuyCreditsViewController.swift in Sources */, 7549BE5E2DEAF55B004F0BAF /* IconBitmapDAO.swift in Sources */, C9D2C6A32A320AA000D15901 /* ApiCode.swift in Sources */, - 757AEBE12E114E9B007BE8B4 /* DashSpendRepositoryFactory.swift in Sources */, 75FEC6AF2CE0C58A00F87B48 /* VerifyIdentityScreen.swift in Sources */, C9D2C6A42A320AA000D15901 /* CoinbaseEntryPointModel.swift in Sources */, C943B4F02A40A54600AF23C5 /* DWUserProfileNavigationTitleView.m in Sources */, @@ -9259,8 +9259,6 @@ C956AF142A5B5949002FAB75 /* EnterAddressViewController.swift in Sources */, C9D2C6AA2A320AA000D15901 /* DSTransaction+DashWallet.swift in Sources */, C943B4C52A40A54600AF23C5 /* DWUserSearchModel.m in Sources */, - 75F3EF4B2E13D1670092A0D9 /* PiggyCardsTokenService.swift in Sources */, - 75F3EF4D2E13D1680092A0D1 /* PiggyCardsCache.swift in Sources */, C9D2C6AC2A320AA000D15901 /* PayableViewController.swift in Sources */, C9D2C6AD2A320AA000D15901 /* HairlineView.swift in Sources */, C943B51B2A40A54600AF23C5 /* BaseInvitationViewController.swift in Sources */, @@ -9324,6 +9322,7 @@ C943B5012A40A54600AF23C5 /* DWDPGenericItemView.m in Sources */, C9D2C6D52A320AA000D15901 /* TransactionMetadata.swift in Sources */, C9D2C6D62A320AA000D15901 /* ExtendedPublicKeysViewController.swift in Sources */, + B3A1F2C4D5E6078901234569 /* ExtendedPublicKeySheet.swift in Sources */, C9D2C6D82A320AA000D15901 /* AtmListViewController.swift in Sources */, C9D2C6D92A320AA000D15901 /* TxDetailViewController.swift in Sources */, C9D2C6DA2A320AA000D15901 /* NSAttributedString+Builder.swift in Sources */, @@ -9337,7 +9336,6 @@ C9D2C6DE2A320AA000D15901 /* DWSeedPhraseTitledView.m in Sources */, C9D2C6E02A320AA000D15901 /* CrowdNodeTopUpTx.swift in Sources */, 759ADD582BF3447400767ACD /* Button.swift in Sources */, - 753CE9D82E12B6FB004A0A13 /* POIDetailsViewModel.swift in Sources */, C943B3302A408CED00AF23C5 /* DWSaveAlertChildView.m in Sources */, C9D2C6E12A320AA000D15901 /* BackupInfoItemView.swift in Sources */, C9D2C6E32A320AA000D15901 /* AccountCreatingController.swift in Sources */, @@ -9358,7 +9356,7 @@ C943B31D2A408CED00AF23C5 /* DWUserProfileContainerView.m in Sources */, C9D2C6F02A320AA000D15901 /* UIImage+Utils.m in Sources */, C943B4BE2A40A54600AF23C5 /* DWGlobalMatchFailedHeaderView.m in Sources */, - 75A2F3032DE48C860046BE17 /* CTXSpendTokenService.swift in Sources */, + 75A2F3032DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift in Sources */, C943B4C22A40A54600AF23C5 /* BaseCollectionReusableView.m in Sources */, C9D2C6F22A320AA000D15901 /* DWSetupViewController.m in Sources */, C9D2C6F32A320AA000D15901 /* ExploreDatabaseConnection.swift in Sources */, @@ -9398,6 +9396,7 @@ C9D2C7072A320AA000D15901 /* AmountInputTypeSwitcher.swift in Sources */, C943B4FA2A40A54600AF23C5 /* DWDPOutgoingRequestNotificationObject.m in Sources */, 75EBAA132BB99B6B004488E3 /* BottomSheet.swift in Sources */, + EE5F3D5C458E92B69D14BFD8 /* NavigationBar.swift in Sources */, C9D2C7082A320AA000D15901 /* DWPlaceholderFormCellModel.m in Sources */, C9D2C7092A320AA000D15901 /* DWOverlapControl.m in Sources */, C9D2C70A2A320AA000D15901 /* CoinsToAddressTxFilter.swift in Sources */, @@ -9419,9 +9418,6 @@ C9D2C7142A320AA000D15901 /* AmountView.swift in Sources */, C9D2C7152A320AA000D15901 /* DWBasePayViewController.m in Sources */, C943B4AC2A40A54600AF23C5 /* DWContactsViewController.m in Sources */, - 757AEBCE2E1131A1007BE8B4 /* PiggyCardsAPI.swift in Sources */, - 757AEBD02E1131A1007BE8B4 /* PiggyCardsRepository.swift in Sources */, - 757AEBD12E1131A1007BE8B4 /* PiggyCardsEndpoint.swift in Sources */, C9D2C7162A320AA000D15901 /* CrowdNodeTransferModel.swift in Sources */, 750CED612C94BFD7000FB837 /* SettingsMenuViewModel.swift in Sources */, C9D2C7172A320AA000D15901 /* DWSetPinViewController.m in Sources */, @@ -9460,7 +9456,6 @@ C9D2C7342A320AA000D15901 /* DWPinView.m in Sources */, C9D2C7362A320AA000D15901 /* DWBaseReceiveModel.m in Sources */, 7545ED582DA91AF10075F45C /* DashSpendUserAuthViewModel.swift in Sources */, - 1D267CDF2ECF86920053AD68 /* AddProviderToGiftCardsTable.swift in Sources */, C943B52E2A40A54600AF23C5 /* DWNotificationsProvider.m in Sources */, C943B4F12A40A54600AF23C5 /* DWUserProfileContactActionsCell.m in Sources */, C9D2C7372A320AA000D15901 /* DWSegmentSlider.m in Sources */, @@ -9510,7 +9505,6 @@ 7566F48B2BB6CAF2005238D2 /* MenuItem.swift in Sources */, C9D2C74F2A320AA000D15901 /* DWSeedPhraseRow.m in Sources */, C943B5132A40A54600AF23C5 /* DWHistoryFilterContentView.m in Sources */, - 75F3EF4F2E1553BF0092A0D9 /* DashSpendError.swift in Sources */, C943B4BC2A40A54600AF23C5 /* DWRootContactsViewController.m in Sources */, C943B4C32A40A54600AF23C5 /* DWTitleActionHeaderView.m in Sources */, 7531308E2B47EC910069C9B7 /* UpholdClient.swift in Sources */, @@ -9523,7 +9517,7 @@ C9D2C7552A320AA000D15901 /* DWPaymentInput.m in Sources */, C9D2C7572A320AA000D15901 /* OnlineAccountDetailsController.swift in Sources */, C9D2C7582A320AA000D15901 /* UIApplication+DashWallet.swift in Sources */, - 7545ED542DA91A2F0075F45C /* CTXConstants.swift in Sources */, + 7545ED542DA91A2F0075F45C /* DashSpend/CTXConstants.swift in Sources */, C9D2C7592A320AA000D15901 /* OnlineAccountInfoController.swift in Sources */, C9D2C75A2A320AA000D15901 /* PaymentController.swift in Sources */, C9D2C75B2A320AA000D15901 /* CALayer+MBAnimationPersistence.m in Sources */, @@ -9629,7 +9623,6 @@ C9D2C79E2A320AA000D15901 /* UIFont+DWFont.m in Sources */, C9D2C79F2A320AA000D15901 /* CustodialSwapsViewController.swift in Sources */, C9D2C7A02A320AA000D15901 /* NSAttributedString+DWHighlightText.m in Sources */, - 757AEBDA2E1139B4007BE8B4 /* DashSpendTermsScreen.swift in Sources */, C9D2C7A12A320AA000D15901 /* CoinbaseInfoViewController.swift in Sources */, C9D2C7A22A320AA000D15901 /* DWSelectorFormCellModel.m in Sources */, C943B5142A40A54600AF23C5 /* DWHistoryFilterViewController.m in Sources */, @@ -9713,6 +9706,22 @@ C9D2C7E02A320AA000D15901 /* TransactionFilter.swift in Sources */, C9D2C7E22A320AA000D15901 /* CrowdNodeWithdrawalReceivedTx.swift in Sources */, 7549BE612DEAF628004F0BAF /* AddIconBitmapsTable.swift in Sources */, + AA0000022DUMMYID001234567 /* AddProviderToGiftCardsTable.swift in Sources */, + AA0000052DUMMYID001234567 /* DashSpend/GiftCardProvider.swift in Sources */, + BB0000022DUMMYID001234567 /* DashSpend/DashSpendError.swift in Sources */, + BB0000042DUMMYID001234567 /* DashSpend/DashSpendRepository.swift in Sources */, + BB0000062DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift in Sources */, + GG0000022DUMMYID001234567 /* GeoRestrictionService.swift in Sources */, + CC0000122DUMMYID001234567 /* PiggyCardsAPI.swift in Sources */, + CC0000142DUMMYID001234567 /* PiggyCardsCache.swift in Sources */, + CC0000162DUMMYID001234567 /* PiggyCardsEndpoint.swift in Sources */, + CC0000182DUMMYID001234567 /* PiggyCardsRepository.swift in Sources */, + CC0000202DUMMYID001234567 /* PiggyCardsTokenService.swift in Sources */, + EE0000022DUMMYID001234567 /* POIDetailsViewModel.swift in Sources */, + EE0000062DUMMYID001234567 /* PercentageFormatter.swift in Sources */, + FF0000022DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift in Sources */, + FF0000072DUMMYID001234567 /* PiggyCardsModels.swift in Sources */, + FF0000102DUMMYID001234567 /* BarcodeScanner.swift in Sources */, C943B4B62A40A54600AF23C5 /* DWFetchedResultsDataSource.m in Sources */, C9D2C7E32A320AA000D15901 /* PointOfUseListSegmentedCell.swift in Sources */, 7513DA892AB17606005D55F6 /* Topper.swift in Sources */, @@ -9755,6 +9764,7 @@ C9D2C8052A320AA000D15901 /* IntegrationViewController.swift in Sources */, C9D2C8062A320AA000D15901 /* NSString+DWTextSize.m in Sources */, C9D2C8072A320AA000D15901 /* PointOfUseListFiltersCell.swift in Sources */, + 7545ED5E2DA91F590075F45C /* DashSpendTermsScreen.swift in Sources */, 75AA33D02BF9D44A00F12465 /* ButtonsGroup.swift in Sources */, C9D2C80C2A320AA000D15901 /* AllMerchantLocationsDataProvider.swift in Sources */, C9D2C80D2A320AA000D15901 /* MainTabbarController.swift in Sources */, @@ -9771,7 +9781,6 @@ 75EE9F422DE2F750000AD1AD /* DashSpendConfirmationDialog.swift in Sources */, C9D2C8142A320AA000D15901 /* DWCenteredScrollView.m in Sources */, C9D2C8162A320AA000D15901 /* DWPhraseRepairViewController.m in Sources */, - 757AEBC82E113185007BE8B4 /* PiggyCardsModels.swift in Sources */, 75AA33CD2BF9C82700F12465 /* ModalDialog.swift in Sources */, C9D2C8172A320AA000D15901 /* DWBiometricAuthModel.m in Sources */, C943B52A2A40A54600AF23C5 /* UIImageView+DWDPAvatar.m in Sources */, @@ -9832,8 +9841,6 @@ C943B4FF2A40A54600AF23C5 /* DWDPGenericContactRequestItemView.m in Sources */, C9D2C8402A320AA000D15901 /* DWQRScanView.m in Sources */, 75C1F0462AE26AC0006929CA /* CoinJoinLevelsViewModel.swift in Sources */, - 1DAD1B022ED4037F00C8090E /* GeoRestrictionService.swift in Sources */, - 1DAD1AAA2ED2037F00C8090E /* BarcodeScanner.swift in Sources */, C9D2C8412A320AA000D15901 /* ServiceItem.swift in Sources */, C9D2C8422A320AA000D15901 /* ErrorPresentable.swift in Sources */, C9D2C8432A320AA000D15901 /* DWPinInputStepView.m in Sources */, @@ -9869,8 +9876,8 @@ C9D2C85B2A320AA000D15901 /* PointOfUseListEmptyResultsView.swift in Sources */, 75A0A3F42CA7DBCF003ED48B /* TimeUtils.swift in Sources */, 75D9EBC82DE5CE14009416A2 /* GiftCardDetailsViewModel.swift in Sources */, - 85A75E8713D440908EAF3F7A9BADF9E2 /* PercentageFormatter.swift in Sources */, 75D9EBC92DE5CE14009416A2 /* GiftCardDetailsView.swift in Sources */, + 91F0B8B92F3FAB7C00E713AE /* KeysOverviewView.swift in Sources */, 75FFD6C82BF495800032879E /* HomeViewController+Shortcuts.swift in Sources */, C9D2C85D2A320AA000D15901 /* DWLockPinInputView.m in Sources */, C9D2C85E2A320AA000D15901 /* UIView+DWHUD.m in Sources */, @@ -9896,6 +9903,7 @@ C943B3462A409FFA00AF23C5 /* DWDPAvatarView.m in Sources */, C9D2C8702A320AA000D15901 /* AmountObject.swift in Sources */, C9D2C8712A320AA000D15901 /* DerivationPathKeysViewController.swift in Sources */, + 8A7607606A594C6E99A2FAC7 /* DerivationPathKeysView.swift in Sources */, 758A8F182C4D35A80012FA41 /* NSLayoutConstraint+DashWallet.swift in Sources */, C9D2C8722A320AA000D15901 /* DSTransaction+DashWallet.m in Sources */, C943B58D2A40ED6F00AF23C5 /* DWCreateUsernameViewController.m in Sources */, @@ -9904,7 +9912,6 @@ C9D2C8762A320AA000D15901 /* DWUpholdMainnetConstants.m in Sources */, C9D2C8792A320AA000D15901 /* Style.swift in Sources */, C9D2C87A2A320AA000D15901 /* PayViewController.swift in Sources */, - 75A92B8D2E0FDDA900BFFA2D /* GiftCardProvider.swift in Sources */, C9D2C87B2A320AA000D15901 /* DatabaseConnection.swift in Sources */, C9D2C87C2A320AA000D15901 /* DWSwitcherFormCellModel.m in Sources */, C9D2C87D2A320AA000D15901 /* DWIntrinsicTextView.m in Sources */, @@ -9950,7 +9957,6 @@ C943B5062A40A54600AF23C5 /* UICollectionView+DWDPItemDequeue.m in Sources */, C9D2C8A02A320AA000D15901 /* SendCoinsService.swift in Sources */, C9D2C8A12A320AA000D15901 /* ShortcutAction.swift in Sources */, - 75F3EF582E16AD060092A0D9 /* POIDetailsView.swift in Sources */, C956AF112A5B592E002FAB75 /* UIButton+Dash.swift in Sources */, C9D2C8A22A320AA000D15901 /* DWModalChevronView.m in Sources */, C956AF0F2A5B592E002FAB75 /* TappableTextView.swift in Sources */, @@ -9966,8 +9972,8 @@ C943B5302A40A54600AF23C5 /* DWNotificationsFetchedDataSource.m in Sources */, C9D2C8AA2A320AA000D15901 /* DWPayModel.m in Sources */, C943B54B2A40B52F00AF23C5 /* UIView+DWAutolayout.m in Sources */, - 757AEBC52E113173007BE8B4 /* PiggyCardsConstants.swift in Sources */, C943B3332A408CED00AF23C5 /* DWTextFieldFormCellModel.m in Sources */, + C9D2C8AD2A320AA000D15901 /* POIDetailsView.swift in Sources */, C9D2C8AE2A320AA000D15901 /* DSChain+DashWallet.m in Sources */, C9D2C8AF2A320AA000D15901 /* FromLabel.swift in Sources */, C9D2C8B02A320AA000D15901 /* DWPhraseRepairChildViewController.m in Sources */, @@ -9976,9 +9982,9 @@ 757422222DF87B5200CB0175 /* MerchantFiltersView.swift in Sources */, C943B5382A40A65B00AF23C5 /* DWScrollingViewController.m in Sources */, C9D2C8B22A320AA000D15901 /* CoinbaseAccountAddress.swift in Sources */, - 754565C82DAA52A000DA4E8E /* CTXSpendAPI.swift in Sources */, - 754565CA2DAA52A000DA4E8E /* CTXSpendRepository.swift in Sources */, - 754565CB2DAA52A000DA4E8E /* CTXSpendEndpoint.swift in Sources */, + 754565C82DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift in Sources */, + 754565CA2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift in Sources */, + 754565CB2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift in Sources */, C930784E2A6AD59E00906E4B /* ConfirmPaymentModel.swift in Sources */, C9D2C8B42A320AA000D15901 /* CrowdNodeTransferViewController.swift in Sources */, C9D2C8B62A320AA000D15901 /* CBAuthInterop.swift in Sources */, @@ -9994,7 +10000,6 @@ C9D2C8C22A320AA000D15901 /* TransactionObserver.swift in Sources */, C943B4EB2A40A54600AF23C5 /* DWModalUserProfileViewController.m in Sources */, C9D2C8C32A320AA000D15901 /* DWInfoTextCell.m in Sources */, - 757AEBE52E114EE5007BE8B4 /* DashSpendRepository.swift in Sources */, 7569D68A2DE6DB6700768BFF /* ExploreContentsView.swift in Sources */, C943B50D2A40A54600AF23C5 /* DWConfirmInvitationViewController.m in Sources */, C943B4F62A40A54600AF23C5 /* DWDPContactObject.m in Sources */, @@ -10061,6 +10066,7 @@ C9D2C8F42A320AA000D15901 /* DWQuickReceiveViewController.m in Sources */, 75A8C1692AE6A1AC0042256E /* VotingViewModel.swift in Sources */, 1DD7BE9CD62998F12672140D /* RadioButtonRow.swift in Sources */, + 3A0C6A2A57DFF02865E36200 /* ImportPrivateKeySheet.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -10186,7 +10192,7 @@ /* Begin XCBuildConfiguration section */ 2A4663072279DC2F0027533B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 01F09AF3E3D8868F988B61A9 /* Pods-DashWalletScreenshotsUITests.debug.xcconfig */; + baseConfigurationReference = BC46CEE26088DC2B21D22315 /* Pods-DashWalletScreenshotsUITests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ANALYZER_NONNULL = YES; @@ -10223,7 +10229,7 @@ }; 2A4663082279DC2F0027533B /* Testnet */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1A13DF165F6A0780F58985AB /* Pods-DashWalletScreenshotsUITests.testnet.xcconfig */; + baseConfigurationReference = C1AFBC4E154DF42D982613E4 /* Pods-DashWalletScreenshotsUITests.testnet.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ANALYZER_NONNULL = YES; @@ -10259,7 +10265,7 @@ }; 2A4663092279DC2F0027533B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EF6903EDB8E53378EBD7E567 /* Pods-DashWalletScreenshotsUITests.release.xcconfig */; + baseConfigurationReference = 718A7E2BCD93948084E43A8F /* Pods-DashWalletScreenshotsUITests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ANALYZER_NONNULL = YES; @@ -10295,7 +10301,7 @@ }; 2A46630A2279DC2F0027533B /* Testflight */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 36B4F7C0211EF19218D4461F /* Pods-DashWalletScreenshotsUITests.testflight.xcconfig */; + baseConfigurationReference = B1A681489B9516DC10084A61 /* Pods-DashWalletScreenshotsUITests.testflight.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ANALYZER_NONNULL = YES; @@ -10460,7 +10466,7 @@ }; 75D5F3F7191EC270004AB296 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 935B82D06EFE42FC581D3A4A /* Pods-dashwallet.debug.xcconfig */; + baseConfigurationReference = 86CC430C535DAEBF900E5914 /* Pods-dashwallet.debug.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -10508,7 +10514,6 @@ "-l\"CocoaImageHashing\"", "-l\"CocoaLumberjack\"", "-l\"DAPI-GRPC\"", - "-l\"DSDynamicOptions-iOS14.0\"", "-l\"DWAlertController\"", "-l\"DashSync\"", "-l\"FirebaseCore\"", @@ -10592,7 +10597,7 @@ }; 75D5F3F8191EC270004AB296 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ECEC6355C8742EF241A10660 /* Pods-dashwallet.release.xcconfig */; + baseConfigurationReference = 1C3070D5E872E975F8473A68 /* Pods-dashwallet.release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -10649,7 +10654,6 @@ "-l\"CocoaImageHashing\"", "-l\"CocoaLumberjack\"", "-l\"DAPI-GRPC\"", - "-l\"DSDynamicOptions-iOS14.0\"", "-l\"DWAlertController\"", "-l\"DashSync\"", "-l\"FirebaseCore\"", @@ -10732,7 +10736,7 @@ }; 75D5F3FA191EC270004AB296 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1FA780FC3C067D0F6DEE9543 /* Pods-DashWalletTests.debug.xcconfig */; + baseConfigurationReference = 77215C3978EE089C06A41979 /* Pods-DashWalletTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/dashwallet.app/dashwallet"; @@ -10767,7 +10771,7 @@ }; 75D5F3FB191EC270004AB296 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 481BC7445B8333F6878FAA20 /* Pods-DashWalletTests.release.xcconfig */; + baseConfigurationReference = D8BD81810F2B0C11C86E7A5E /* Pods-DashWalletTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/dashwallet.app/dashwallet"; @@ -10802,7 +10806,7 @@ }; BA913BFB1BD57E4E005A7C0E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A5C7B9C768A2B7DF6F1C4547 /* Pods-WatchApp.debug.xcconfig */; + baseConfigurationReference = 0995737D764092DF77CB88AC /* Pods-WatchApp.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -10824,7 +10828,7 @@ }; BA913BFC1BD57E4E005A7C0E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8EF27AB178913A4F7CE601BA /* Pods-WatchApp.release.xcconfig */; + baseConfigurationReference = 4944819B9E17D4CC7DBFF293 /* Pods-WatchApp.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -10846,7 +10850,7 @@ }; BA913BFD1BD57E4E005A7C0E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 56FC360EE306AA26A03F9818 /* Pods-WatchApp Extension.debug.xcconfig */; + baseConfigurationReference = 2E17397DF35152CAFBB79068 /* Pods-WatchApp Extension.debug.xcconfig */; buildSettings = { CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 44RJ69WHFF; @@ -10873,7 +10877,7 @@ }; BA913BFE1BD57E4E005A7C0E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 274345742E0F7EF79CF8C93A /* Pods-WatchApp Extension.release.xcconfig */; + baseConfigurationReference = E57EEDA37189E949FBAAA627 /* Pods-WatchApp Extension.release.xcconfig */; buildSettings = { CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 44RJ69WHFF; @@ -10900,7 +10904,7 @@ }; BAE12BF31B2DEE7F00895CC5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3225D4E1525D11ACAF802BF9 /* Pods-TodayExtension.debug.xcconfig */; + baseConfigurationReference = EDE78DB35CE393ADB4F3C5DD /* Pods-TodayExtension.debug.xcconfig */; buildSettings = { CODE_SIGN_ENTITLEMENTS = dashwallet/dashwalletTodayExtension.entitlements; CURRENT_PROJECT_VERSION = 1; @@ -10928,7 +10932,7 @@ }; BAE12BF51B2DEE7F00895CC5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DB35A287E58331F58D99D5F1 /* Pods-TodayExtension.release.xcconfig */; + baseConfigurationReference = D96AAF71E3E67F7AD309BCC4 /* Pods-TodayExtension.release.xcconfig */; buildSettings = { CODE_SIGN_ENTITLEMENTS = dashwallet/dashwalletTodayExtension.entitlements; COPY_PHASE_STRIP = NO; @@ -10958,7 +10962,7 @@ }; C9D2C94F2A320AA000D15901 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5F9EF7C7D0B76255AA95D29C /* Pods-dashpay.debug.xcconfig */; + baseConfigurationReference = A47B6DF71195E41A5B7B5F99 /* Pods-dashpay.debug.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -11009,7 +11013,6 @@ "-l\"CocoaImageHashing\"", "-l\"CocoaLumberjack\"", "-l\"DAPI-GRPC\"", - "-l\"DSDynamicOptions-iOS14.0\"", "-l\"DWAlertController\"", "-l\"DashSync\"", "-l\"FirebaseCore\"", @@ -11094,7 +11097,7 @@ }; C9D2C9502A320AA000D15901 /* Testnet */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A3061D2E6CAD5509B5E8B276 /* Pods-dashpay.testnet.xcconfig */; + baseConfigurationReference = 67217DE34817FB304EDEA8D4 /* Pods-dashpay.testnet.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -11144,7 +11147,6 @@ "-l\"CocoaImageHashing\"", "-l\"CocoaLumberjack\"", "-l\"DAPI-GRPC\"", - "-l\"DSDynamicOptions-iOS14.0\"", "-l\"DWAlertController\"", "-l\"DashSync\"", "-l\"FirebaseCore\"", @@ -11229,7 +11231,7 @@ }; C9D2C9512A320AA000D15901 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CB5FF6F5CB2E4B13DC2C3E3D /* Pods-dashpay.release.xcconfig */; + baseConfigurationReference = 28AA9F2D282325F800A4F3AA /* Pods-dashpay.release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -11290,7 +11292,6 @@ "-l\"CocoaImageHashing\"", "-l\"CocoaLumberjack\"", "-l\"DAPI-GRPC\"", - "-l\"DSDynamicOptions-iOS14.0\"", "-l\"DWAlertController\"", "-l\"DashSync\"", "-l\"FirebaseCore\"", @@ -11374,7 +11375,7 @@ }; C9D2C9522A320AA000D15901 /* Testflight */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7D4ABD3D67B2A9B1CA91087A /* Pods-dashpay.testflight.xcconfig */; + baseConfigurationReference = 8391BA0D088FF516D63DE9A1 /* Pods-dashpay.testflight.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -11434,7 +11435,6 @@ "-l\"CocoaImageHashing\"", "-l\"CocoaLumberjack\"", "-l\"DAPI-GRPC\"", - "-l\"DSDynamicOptions-iOS14.0\"", "-l\"DWAlertController\"", "-l\"DashSync\"", "-l\"FirebaseCore\"", @@ -11581,7 +11581,7 @@ }; CEE253D31E26A9BC00A25B15 /* Testflight */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2F85B172693D3E14E28731AA /* Pods-dashwallet.testflight.xcconfig */; + baseConfigurationReference = 6DC4B39C45C824674E05DB22 /* Pods-dashwallet.testflight.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -11638,7 +11638,6 @@ "-l\"CocoaImageHashing\"", "-l\"CocoaLumberjack\"", "-l\"DAPI-GRPC\"", - "-l\"DSDynamicOptions-iOS14.0\"", "-l\"DWAlertController\"", "-l\"DashSync\"", "-l\"FirebaseCore\"", @@ -11721,7 +11720,7 @@ }; CEE253D41E26A9BC00A25B15 /* Testflight */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9766A9003AD824CA2EAA01A2 /* Pods-TodayExtension.testflight.xcconfig */; + baseConfigurationReference = 6A44C167AF8F881176AFB256 /* Pods-TodayExtension.testflight.xcconfig */; buildSettings = { CODE_SIGN_ENTITLEMENTS = dashwallet/dashwalletTodayExtension.entitlements; COPY_PHASE_STRIP = NO; @@ -11751,7 +11750,7 @@ }; CEE253D51E26A9BC00A25B15 /* Testflight */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 146E2F5124D22E068480F04F /* Pods-DashWalletTests.testflight.xcconfig */; + baseConfigurationReference = 62C1F7A3ABEE7CF3BBB270C4 /* Pods-DashWalletTests.testflight.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/dashwallet.app/dashwallet"; @@ -11786,7 +11785,7 @@ }; CEE253D81E26A9BC00A25B15 /* Testflight */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8E3AF0B3608E27017BA8CCB8 /* Pods-WatchApp.testflight.xcconfig */; + baseConfigurationReference = 04D182469170A3A2843F51CA /* Pods-WatchApp.testflight.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -11808,7 +11807,7 @@ }; CEE253D91E26A9BC00A25B15 /* Testflight */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FBC78F829276FEA507762984 /* Pods-WatchApp Extension.testflight.xcconfig */; + baseConfigurationReference = FC016B99DFFB0CBAC3D19290 /* Pods-WatchApp Extension.testflight.xcconfig */; buildSettings = { CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 44RJ69WHFF; @@ -11903,7 +11902,7 @@ }; FB9CC19B1F8511620079309F /* Testnet */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 68F834C43B4E8FD4E9D4A3EB /* Pods-dashwallet.testnet.xcconfig */; + baseConfigurationReference = C09FD41E863456F8BF96B2DB /* Pods-dashwallet.testnet.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -11950,7 +11949,6 @@ "-l\"CocoaImageHashing\"", "-l\"CocoaLumberjack\"", "-l\"DAPI-GRPC\"", - "-l\"DSDynamicOptions-iOS14.0\"", "-l\"DWAlertController\"", "-l\"DashSync\"", "-l\"FirebaseCore\"", @@ -12033,7 +12031,7 @@ }; FB9CC19C1F8511620079309F /* Testnet */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 24FB5BA96FA10F1B82E20055 /* Pods-TodayExtension.testnet.xcconfig */; + baseConfigurationReference = 74F4F603C555A521F738DC9E /* Pods-TodayExtension.testnet.xcconfig */; buildSettings = { CODE_SIGN_ENTITLEMENTS = dashwallet/dashwalletTodayExtension.entitlements; CURRENT_PROJECT_VERSION = 1; @@ -12061,7 +12059,7 @@ }; FB9CC19D1F8511620079309F /* Testnet */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DAB1F0C19723DDC2CA2E838A /* Pods-DashWalletTests.testnet.xcconfig */; + baseConfigurationReference = 281D63D6AC9610BCF4765D07 /* Pods-DashWalletTests.testnet.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/dashwallet.app/dashwallet"; @@ -12096,7 +12094,7 @@ }; FB9CC1A01F8511620079309F /* Testnet */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 17F10C4797201AB6B2B80351 /* Pods-WatchApp.testnet.xcconfig */; + baseConfigurationReference = AF918A810315A7BE335BFFA6 /* Pods-WatchApp.testnet.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -12118,7 +12116,7 @@ }; FB9CC1A11F8511620079309F /* Testnet */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8C27AC100E93227C1C780B9B /* Pods-WatchApp Extension.testnet.xcconfig */; + baseConfigurationReference = 4D37A3F73905BC239A9D127D /* Pods-WatchApp Extension.testnet.xcconfig */; buildSettings = { CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 44RJ69WHFF; diff --git a/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back-dark-mode.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back-dark-mode.imageset/Contents.json new file mode 100644 index 000000000..098dbc350 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back-dark-mode.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "controls-back-dark-mode.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "controls-back-dark-mode@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "controls-back-dark-mode@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "template" + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back-dark-mode.imageset/controls-back-dark-mode.png b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back-dark-mode.imageset/controls-back-dark-mode.png new file mode 100644 index 000000000..deea69d66 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back-dark-mode.imageset/controls-back-dark-mode.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back-dark-mode.imageset/controls-back-dark-mode@2x.png b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back-dark-mode.imageset/controls-back-dark-mode@2x.png new file mode 100644 index 000000000..1d59ea58c Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back-dark-mode.imageset/controls-back-dark-mode@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back-dark-mode.imageset/controls-back-dark-mode@3x.png b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back-dark-mode.imageset/controls-back-dark-mode@3x.png new file mode 100644 index 000000000..f6a1efeb4 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back-dark-mode.imageset/controls-back-dark-mode@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back.imageset/Contents.json new file mode 100644 index 000000000..3b885bef3 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "controls-back.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "controls-back@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "controls-back@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "template" + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back.imageset/controls-back.png b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back.imageset/controls-back.png new file mode 100644 index 000000000..1070d96af Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back.imageset/controls-back.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back.imageset/controls-back@2x.png b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back.imageset/controls-back@2x.png new file mode 100644 index 000000000..eea4947dd Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back.imageset/controls-back@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back.imageset/controls-back@3x.png b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back.imageset/controls-back@3x.png new file mode 100644 index 000000000..7f939d56b Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Controls/controls-back.imageset/controls-back@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/List/Contents.json b/DashWallet/Resources/AppAssets.xcassets/List/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/List/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/List/list-chevron-right.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/List/list-chevron-right.imageset/Contents.json new file mode 100644 index 000000000..5213f510c --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/List/list-chevron-right.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "list-chevron-right.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "list-chevron-right@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "list-chevron-right@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/List/list-chevron-right.imageset/list-chevron-right.png b/DashWallet/Resources/AppAssets.xcassets/List/list-chevron-right.imageset/list-chevron-right.png new file mode 100644 index 000000000..40de94d16 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/List/list-chevron-right.imageset/list-chevron-right.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/List/list-chevron-right.imageset/list-chevron-right@2x.png b/DashWallet/Resources/AppAssets.xcassets/List/list-chevron-right.imageset/list-chevron-right@2x.png new file mode 100644 index 000000000..486a773b2 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/List/list-chevron-right.imageset/list-chevron-right@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/List/list-chevron-right.imageset/list-chevron-right@3x.png b/DashWallet/Resources/AppAssets.xcassets/List/list-chevron-right.imageset/list-chevron-right@3x.png new file mode 100644 index 000000000..36624a162 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/List/list-chevron-right.imageset/list-chevron-right@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet-white.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet-white.imageset/Contents.json new file mode 100644 index 000000000..c9f1cae1c --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet-white.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "icon-close-sheet-white.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon-close-sheet-white@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon-close-sheet-white@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet-white.imageset/icon-close-sheet-white.png b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet-white.imageset/icon-close-sheet-white.png new file mode 100644 index 000000000..7842802c6 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet-white.imageset/icon-close-sheet-white.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet-white.imageset/icon-close-sheet-white@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet-white.imageset/icon-close-sheet-white@2x.png new file mode 100644 index 000000000..96b697777 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet-white.imageset/icon-close-sheet-white@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet-white.imageset/icon-close-sheet-white@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet-white.imageset/icon-close-sheet-white@3x.png new file mode 100644 index 000000000..6cca35d43 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet-white.imageset/icon-close-sheet-white@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet.imageset/Contents.json new file mode 100644 index 000000000..172dbaca9 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "icon-close-sheet.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon-close-sheet@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon-close-sheet@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet.imageset/icon-close-sheet.png b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet.imageset/icon-close-sheet.png new file mode 100644 index 000000000..ae775a912 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet.imageset/icon-close-sheet.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet.imageset/icon-close-sheet@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet.imageset/icon-close-sheet@2x.png new file mode 100644 index 000000000..9723738a3 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet.imageset/icon-close-sheet@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet.imageset/icon-close-sheet@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet.imageset/icon-close-sheet@3x.png new file mode 100644 index 000000000..8dd136eb0 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/icon-close-sheet.imageset/icon-close-sheet@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.large.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.large.imageset/Contents.json new file mode 100644 index 000000000..96215738b --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.large.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "import.private.key.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "import.private.key@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "import.private.key@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.large.imageset/import.private.key.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.large.imageset/import.private.key.png new file mode 100644 index 000000000..36b2245fc Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.large.imageset/import.private.key.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.large.imageset/import.private.key@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.large.imageset/import.private.key@2x.png new file mode 100644 index 000000000..0c4558102 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.large.imageset/import.private.key@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.large.imageset/import.private.key@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.large.imageset/import.private.key@3x.png new file mode 100644 index 000000000..9ff7fa909 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.large.imageset/import.private.key@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-back.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-back.imageset/Contents.json new file mode 100644 index 000000000..7a5feae31 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-back.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "control-back.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "control-back@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "control-back@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-back.imageset/control-back.png b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-back.imageset/control-back.png new file mode 100644 index 000000000..1070d96af Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-back.imageset/control-back.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-back.imageset/control-back@2x.png b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-back.imageset/control-back@2x.png new file mode 100644 index 000000000..eea4947dd Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-back.imageset/control-back@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-back.imageset/control-back@3x.png b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-back.imageset/control-back@3x.png new file mode 100644 index 000000000..7f939d56b Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-back.imageset/control-back@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-close.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-close.imageset/Contents.json new file mode 100644 index 000000000..4be661f68 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-close.imageset/Contents.json @@ -0,0 +1,27 @@ +{ + "images" : [ + { + "filename" : "control-close.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "control-close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "control-close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "localizable" : true, + "template-rendering-intent" : "template" + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-close.imageset/control-close.png b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-close.imageset/control-close.png new file mode 100644 index 000000000..f11573a0d Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-close.imageset/control-close.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-close.imageset/control-close@2x.png b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-close.imageset/control-close@2x.png new file mode 100644 index 000000000..2e2976910 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-close.imageset/control-close@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-close.imageset/control-close@3x.png b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-close.imageset/control-close@3x.png new file mode 100644 index 000000000..7dbbc0ac4 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-close.imageset/control-close@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-info.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-info.imageset/Contents.json new file mode 100644 index 000000000..328805fa0 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-info.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "control-info.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "control-info@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "control-info@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-info.imageset/control-info.png b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-info.imageset/control-info.png new file mode 100644 index 000000000..cc2aeb1f2 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-info.imageset/control-info.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-info.imageset/control-info@2x.png b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-info.imageset/control-info@2x.png new file mode 100644 index 000000000..4d6aacdba Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-info.imageset/control-info@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-info.imageset/control-info@3x.png b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-info.imageset/control-info@3x.png new file mode 100644 index 000000000..0bfb1e8e8 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-info.imageset/control-info@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-plus.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-plus.imageset/Contents.json new file mode 100644 index 000000000..e411d0e2a --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-plus.imageset/Contents.json @@ -0,0 +1,27 @@ +{ + "images" : [ + { + "filename" : "control-plus.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "control-plus@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "control-plus@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "localizable" : true, + "template-rendering-intent" : "template" + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-plus.imageset/control-plus.png b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-plus.imageset/control-plus.png new file mode 100644 index 000000000..0cc40b2aa Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-plus.imageset/control-plus.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-plus.imageset/control-plus@2x.png b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-plus.imageset/control-plus@2x.png new file mode 100644 index 000000000..6985458b4 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-plus.imageset/control-plus@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-plus.imageset/control-plus@3x.png b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-plus.imageset/control-plus@3x.png new file mode 100644 index 000000000..7aee63c8a Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/Navigation bar/toolbar-plus.imageset/control-plus@3x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/Contents.json index d67326913..584b9fb61 100644 --- a/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/Contents.json +++ b/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "Icon.png", + "filename" : "icon_copy_outline.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "Icon@2x.png", + "filename" : "icon_copy_outline@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "Icon@3x.png", + "filename" : "icon_copy_outline@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/Icon.png b/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/Icon.png deleted file mode 100644 index 5acdd050d..000000000 Binary files a/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/Icon.png and /dev/null differ diff --git a/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/Icon@2x.png b/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/Icon@2x.png deleted file mode 100644 index 42e488767..000000000 Binary files a/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/Icon@2x.png and /dev/null differ diff --git a/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/Icon@3x.png b/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/Icon@3x.png deleted file mode 100644 index a30aacc12..000000000 Binary files a/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/Icon@3x.png and /dev/null differ diff --git a/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/icon_copy_outline.png b/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/icon_copy_outline.png new file mode 100644 index 000000000..062189567 Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/icon_copy_outline.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/icon_copy_outline@2x.png b/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/icon_copy_outline@2x.png new file mode 100644 index 000000000..bb8c3fe0f Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/icon_copy_outline@2x.png differ diff --git a/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/icon_copy_outline@3x.png b/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/icon_copy_outline@3x.png new file mode 100644 index 000000000..a5a8f447a Binary files /dev/null and b/DashWallet/Resources/AppAssets.xcassets/icon_copy_outline.imageset/icon_copy_outline@3x.png differ diff --git a/DashWallet/Sources/Application/Constants.swift b/DashWallet/Sources/Application/Constants.swift index eb6035eee..53c365af5 100644 --- a/DashWallet/Sources/Application/Constants.swift +++ b/DashWallet/Sources/Application/Constants.swift @@ -21,3 +21,14 @@ let kOneDash: UInt64 = 100_000_000; let kDefaultCurrencyCode = "USD" let kWalletName = "Dash Wallet" let kDashCurrency = "DASH" + +// MARK: - UI Constants + +/// Menu radius for all menu containers (from Figma design system) +let kMenuRadius: CGFloat = 20 + +/// Menu padding (from Figma design system) +let kMenuPadding: CGFloat = 6 + +/// Menu vertical gap between items in VStack (from Figma design system) +let kMenuVGap: CGFloat = 2 diff --git a/DashWallet/Sources/UI/DashPay/Setup/CreateUsername/CreateUsernameViewController.swift b/DashWallet/Sources/UI/DashPay/Setup/CreateUsername/CreateUsernameViewController.swift index 6e292a0d8..6f66b8674 100644 --- a/DashWallet/Sources/UI/DashPay/Setup/CreateUsername/CreateUsernameViewController.swift +++ b/DashWallet/Sources/UI/DashPay/Setup/CreateUsername/CreateUsernameViewController.swift @@ -78,7 +78,7 @@ struct CreateUsernameView: View { VStack(alignment: .leading, spacing: 0) { Text(NSLocalizedString("Create your username", comment: "Usernames")) .foregroundColor(.primaryText) - .font(.h5Bold) + .font(.title1) .padding(.top, 12) Text(NSLocalizedString("Please note that you will not be able to change it in future", comment: "Usernames")) .foregroundColor(.primaryText) diff --git a/DashWallet/Sources/UI/DashPay/Setup/CreateUsername/VerifyIdentityScreen.swift b/DashWallet/Sources/UI/DashPay/Setup/CreateUsername/VerifyIdentityScreen.swift index b367df736..00f1d9aa9 100644 --- a/DashWallet/Sources/UI/DashPay/Setup/CreateUsername/VerifyIdentityScreen.swift +++ b/DashWallet/Sources/UI/DashPay/Setup/CreateUsername/VerifyIdentityScreen.swift @@ -32,13 +32,13 @@ public struct VerifyIdentityScreen: View { ZStack(alignment: .bottom) { VStack(alignment: .leading) { Text(NSLocalizedString("Verify your identity", comment: "Usernames")) - .font(.h5Bold) + .font(.title1) .multilineTextAlignment(.leading) .lineSpacing(3) .foregroundColor(.primaryText) Text(NSLocalizedString("The link you send will be visible only to the network owners", comment: "Usernames")) - .font(.body2) + .font(.subhead) .multilineTextAlignment(.leading) .lineSpacing(3) .foregroundColor(.secondaryText) @@ -52,7 +52,7 @@ public struct VerifyIdentityScreen: View { .foregroundStyle(Color.secondaryText) Text(text) - .font(.body2) + .font(.subhead) .padding(.top, 2) } .padding(14) @@ -79,14 +79,14 @@ public struct VerifyIdentityScreen: View { .padding(.vertical, 20) Text(NSLocalizedString("Prove your identity", comment: "Usernames")) - .font(.subtitle1) + .font(.calloutMedium) .multilineTextAlignment(.leading) .lineSpacing(3) .foregroundColor(.primaryText) .padding(.top, 8) Text(NSLocalizedString("Make a post with the text above on a well known social media or messaging platform to verify that you are the original owner of the requested username and paste the link bellow", comment: "Usernames")) - .font(.body2) + .font(.subhead) .multilineTextAlignment(.leading) .lineSpacing(3) .foregroundColor(.secondaryText) diff --git a/DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/Details/Views/POIDetailsView.swift b/DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/Details/Views/POIDetailsView.swift index a6a41e15c..a165d1c8b 100644 --- a/DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/Details/Views/POIDetailsView.swift +++ b/DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/Details/Views/POIDetailsView.swift @@ -156,21 +156,21 @@ struct POIDetailsView: View { if merchant.address1?.isEmpty == false { Text(merchant.address1 ?? "") - .font(.body2) + .font(.subhead) .foregroundColor(.primaryText) .fixedSize(horizontal: false, vertical: true) } if merchant.address2?.isEmpty == false { Text(merchant.address2 ?? "") - .font(.body2) + .font(.subhead) .foregroundColor(.primaryText) .fixedSize(horizontal: false, vertical: true) } if merchant.address3?.isEmpty == false { Text(merchant.address3 ?? "") - .font(.body2) + .font(.subhead) .foregroundColor(.primaryText) .fixedSize(horizontal: false, vertical: true) } @@ -179,7 +179,7 @@ struct POIDetailsView: View { let cityAndTerritory = [merchant.city, merchant.territory].compactMap { $0 }.filter { !$0.isEmpty }.joined(separator: ", ") if !cityAndTerritory.isEmpty { Text(cityAndTerritory) - .font(.body2) + .font(.subhead) .foregroundColor(.primaryText) .fixedSize(horizontal: false, vertical: true) } @@ -214,7 +214,7 @@ struct POIDetailsView: View { .foregroundColor(.secondaryText) Text(viewModel.formattedPhoneNumber ?? merchant.phone ?? "") - .font(.body2) + .font(.subhead) .foregroundColor(.dashBlue) } @@ -235,7 +235,7 @@ struct POIDetailsView: View { .foregroundColor(.secondaryText) Text(merchant.website ?? "merchant.com") - .font(.body2) + .font(.subhead) .foregroundColor(.dashBlue) .lineLimit(1) .truncationMode(.tail) diff --git a/DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/List/Filters/MerchantFiltersView.swift b/DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/List/Filters/MerchantFiltersView.swift index 1d06e1214..67c503aed 100644 --- a/DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/List/Filters/MerchantFiltersView.swift +++ b/DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/List/Filters/MerchantFiltersView.swift @@ -281,7 +281,7 @@ private struct FilterDisclosureItem: View { var body: some View { HStack { Text(title) - .font(.body2) + .font(.subhead) .fontWeight(.medium) .foregroundColor(.primaryText) diff --git a/DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/List/MerchantListViewController.swift b/DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/List/MerchantListViewController.swift index 3100a08b9..3a84d9639 100644 --- a/DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/List/MerchantListViewController.swift +++ b/DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/List/MerchantListViewController.swift @@ -211,11 +211,11 @@ class MerchantListViewController: ExplorePointOfUseListViewController { guard !physicalMerchants.isEmpty else { return nil } if Locale.current.usesMetricSystem { - return String(format: NSLocalizedString("%d merchant(s) in %@", comment: "#bc-ignore!"), items.count, + return String.localizedStringWithFormat(NSLocalizedString("%d merchant(s) in %@", comment: "#bc-ignore!"), items.count, ExploreDash.distanceFormatter .string(from: Measurement(value: model.currentRadius, unit: UnitLength.meters))) } else { - return String(format: NSLocalizedString("%d merchant(s) in %@", comment: "#bc-ignore!"), items.count, + return String.localizedStringWithFormat(NSLocalizedString("%d merchant(s) in %@", comment: "#bc-ignore!"), items.count, ExploreDash.distanceFormatter .string(from: Measurement(value: model.currentRadiusMiles, unit: UnitLength.miles))) } diff --git a/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/DashSpendConfirmationDialog.swift b/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/DashSpendConfirmationDialog.swift index 082a66fec..2b9a36c83 100644 --- a/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/DashSpendConfirmationDialog.swift +++ b/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/DashSpendConfirmationDialog.swift @@ -43,7 +43,7 @@ struct DashSpendConfirmationDialog: View { VStack(spacing: 0) { HStack(spacing: 8) { Text(NSLocalizedString("From", comment: "DashSpend")) - .font(.body2) + .font(.subhead) .fontWeight(.medium) .foregroundColor(.tertiaryText) @@ -54,7 +54,7 @@ struct DashSpendConfirmationDialog: View { .frame(width: 24, height: 24) Text(NSLocalizedString("Dash Wallet", comment: "DashSpend")) - .font(.body2) + .font(.subhead) .foregroundColor(.primaryText) } .padding(.horizontal, 12) @@ -62,7 +62,7 @@ struct DashSpendConfirmationDialog: View { HStack(spacing: 8) { Text(NSLocalizedString("To", comment: "DashSpend")) - .font(.body2) + .font(.subhead) .fontWeight(.medium) .foregroundColor(.tertiaryText) @@ -77,7 +77,7 @@ struct DashSpendConfirmationDialog: View { .clipShape(Circle()) Text(merchantName) - .font(.body2) + .font(.subhead) .foregroundColor(.primaryText) } .padding(.horizontal, 12) @@ -85,14 +85,14 @@ struct DashSpendConfirmationDialog: View { HStack { Text(NSLocalizedString("Gift card total", comment: "DashSpend")) - .font(.body2) + .font(.subhead) .fontWeight(.medium) .foregroundColor(.tertiaryText) Spacer() Text(fiatFormatter.string(from: NSDecimalNumber(decimal: originalPrice)) ?? "") - .font(.body2) + .font(.subhead) .foregroundColor(.primaryText) } .padding(.horizontal, 12) @@ -100,14 +100,14 @@ struct DashSpendConfirmationDialog: View { HStack { Text(NSLocalizedString("Discount", comment: "DashSpend")) - .font(.body2) + .font(.subhead) .fontWeight(.medium) .foregroundColor(.tertiaryText) Spacer() Text(PercentageFormatter.format(percent: NSDecimalNumber(decimal: discount * 100).doubleValue)) - .font(.body2) + .font(.subhead) .foregroundColor(.primaryText) } .padding(.horizontal, 12) @@ -115,14 +115,14 @@ struct DashSpendConfirmationDialog: View { HStack { Text(NSLocalizedString("You pay", comment: "DashSpend")) - .font(.body2) + .font(.subhead) .fontWeight(.medium) .foregroundColor(.tertiaryText) Spacer() Text(fiatFormatter.string(from: NSDecimalNumber(decimal: originalPrice * (1 - discount))) ?? "") - .font(.body2) + .font(.subhead) .foregroundColor(.primaryText) } .padding(.horizontal, 12) diff --git a/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/DashSpendPayScreen.swift b/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/DashSpendPayScreen.swift index 6711ebdff..b7b3ec290 100644 --- a/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/DashSpendPayScreen.swift +++ b/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/DashSpendPayScreen.swift @@ -86,7 +86,7 @@ struct DashSpendPayScreen: View { HStack { if viewModel.showLimits { Text(viewModel.minimumLimitMessage) - .font(.body2) + .font(.subhead) .foregroundColor(Color.primaryText) .padding(.leading, 20) Spacer() @@ -94,14 +94,14 @@ struct DashSpendPayScreen: View { if let error = viewModel.error { Text(error.localizedDescription) - .font(.body2) + .font(.subhead) .foregroundColor(Color.systemRed) .multilineTextAlignment(.center) .fixedSize(horizontal: false, vertical: true) .padding(.horizontal, 10) } else if viewModel.showCost { Text(viewModel.costMessage) - .font(.body2) + .font(.subhead) .foregroundColor(Color.primaryText) .multilineTextAlignment(.center) .fixedSize(horizontal: false, vertical: true) @@ -111,7 +111,7 @@ struct DashSpendPayScreen: View { if viewModel.showLimits { Spacer() Text(viewModel.maximumLimitMessage) - .font(.body2) + .font(.subhead) .foregroundColor(Color.primaryText) .padding(.trailing, 20) } @@ -128,7 +128,7 @@ struct DashSpendPayScreen: View { if viewModel.isLoading && !viewModel.hasValidLimits && viewModel.denominations.isEmpty { VStack(spacing: 20) { Text(NSLocalizedString("Loading gift card options...", comment: "DashSpend")) - .font(.body2) + .font(.subhead) .foregroundColor(.secondaryText) } .frame(maxWidth: .infinity) diff --git a/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/DashSpendPayViewModel.swift b/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/DashSpendPayViewModel.swift index 27dcd118c..eae1c4b97 100644 --- a/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/DashSpendPayViewModel.swift +++ b/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/DashSpendPayViewModel.swift @@ -151,8 +151,17 @@ class DashSpendPayViewModel: NSObject, ObservableObject, NetworkReachabilityHand if let giftCardProviders = merchant.merchant?.giftCardProviders { for providerInfo in giftCardProviders { - if (provider == .ctx && providerInfo.provider == .ctx) || - (provider == .piggyCards && providerInfo.provider == .piggyCards) { + var isMatchingProvider = false + if provider == .ctx && providerInfo.provider == .ctx { + isMatchingProvider = true + } + #if PIGGYCARDS_ENABLED + if provider == .piggyCards && providerInfo.provider == .piggyCards { + isMatchingProvider = true + } + #endif + + if isMatchingProvider { // Set sourceId self.sourceId = providerInfo.sourceId // Store provider-specific denomination type @@ -238,6 +247,7 @@ class DashSpendPayViewModel: NSObject, ObservableObject, NetworkReachabilityHand // CTX uses BIP70 payment request URLs transaction = try await sendCoinsService.payWithDashUrl(url: url) + #if PIGGYCARDS_ENABLED case .piggyCards: // PiggyCards uses orderGiftCard which returns GiftCardInfo @@ -269,6 +279,7 @@ class DashSpendPayViewModel: NSObject, ObservableObject, NetworkReachabilityHand giftCardId = giftCardInfo.orderId + #endif } // Payment successful - save gift card information @@ -386,6 +397,7 @@ class DashSpendPayViewModel: NSObject, ObservableObject, NetworkReachabilityHand maximumAmount = 0 } + #if PIGGYCARDS_ENABLED case .piggyCards: // For PiggyCards, we need to fetch gift cards for this merchant using the sourceId from the database guard let piggyCardsRepo = repository[provider] as? PiggyCardsRepository else { @@ -490,6 +502,7 @@ class DashSpendPayViewModel: NSObject, ObservableObject, NetworkReachabilityHand savingsFraction = cardDiscount } } + #endif } diff --git a/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/GiftCardDetailsView.swift b/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/GiftCardDetailsView.swift index e55f75a59..ecf11efdf 100644 --- a/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/GiftCardDetailsView.swift +++ b/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/GiftCardDetailsView.swift @@ -68,7 +68,7 @@ struct GiftCardDetailsView: View { VStack(alignment: .leading, spacing: 4) { Text(viewModel.uiState.merchantName) - .font(.body2) + .font(.subhead) .fontWeight(.medium) .foregroundColor(.primaryText) @@ -286,7 +286,7 @@ struct GiftCardDetailsView: View { } }) { Text(NSLocalizedString("See how to use this gift card", comment: "DashSpend")) - .font(.subtitle1) + .font(.calloutMedium) .foregroundColor(.dashBlue) } .padding(.top, 30) @@ -294,7 +294,7 @@ struct GiftCardDetailsView: View { // How to use expanded content VStack(alignment: .leading, spacing: 30) { Text(NSLocalizedString("How to use your gift card", comment: "DashSpend")) - .font(.body2) + .font(.subhead) .fontWeight(.medium) .foregroundColor(.tertiaryText) .frame(maxWidth: .infinity, alignment: .leading) diff --git a/DashWallet/Sources/UI/Home/Views/Home Balance View/HomeBalanceView.swift b/DashWallet/Sources/UI/Home/Views/Home Balance View/HomeBalanceView.swift index d25d91ef7..c871a2540 100644 --- a/DashWallet/Sources/UI/Home/Views/Home Balance View/HomeBalanceView.swift +++ b/DashWallet/Sources/UI/Home/Views/Home Balance View/HomeBalanceView.swift @@ -66,7 +66,7 @@ struct HomeBalanceView: View { DashAmount(amount: Int64(viewModel.value), font: .largeTitle, dashSymbolFactor: 0.7, showDirection: false) .foregroundColor(.white) Text(viewModel.fiatAmountString()) - .font(.body2) + .font(.subhead) .foregroundColor(.white) ZStack { diff --git a/DashWallet/Sources/UI/Home/Views/HomeView.swift b/DashWallet/Sources/UI/Home/Views/HomeView.swift index 89edbed85..2b443183a 100644 --- a/DashWallet/Sources/UI/Home/Views/HomeView.swift +++ b/DashWallet/Sources/UI/Home/Views/HomeView.swift @@ -404,7 +404,7 @@ struct HomeViewContent: View { TransactionPreview( title: NSLocalizedString("CrowdNode · Account", comment: "Crowdnode"), subtitle: firstTx?.shortTimeString ?? "", - topText: String(format: NSLocalizedString("%d transaction(s)", comment: "#bc-ignore!"), set.transactionMap.count), + topText: String.localizedStringWithFormat(NSLocalizedString("%d transaction(s)", comment: "#bc-ignore!"), set.transactionMap.count), icon: .custom("tx.item.cn.icon"), dashAmount: set.amount ) { @@ -417,7 +417,7 @@ struct HomeViewContent: View { TransactionPreview( title: NSLocalizedString("Mixing Transactions", comment: "CoinJoin"), subtitle: firstTx?.shortTimeString ?? "", - topText: String(format: NSLocalizedString("%d transaction(s)", comment: "#bc-ignore!"), set.transactionMap.count), + topText: String.localizedStringWithFormat(NSLocalizedString("%d transaction(s)", comment: "#bc-ignore!"), set.transactionMap.count), icon: .custom("tx.item.coinjoin.icon"), dashAmount: set.amount ) { diff --git a/DashWallet/Sources/UI/Menu/Main/MainMenuViewController.swift b/DashWallet/Sources/UI/Menu/Main/MainMenuViewController.swift index 6e397e303..db99b177c 100644 --- a/DashWallet/Sources/UI/Menu/Main/MainMenuViewController.swift +++ b/DashWallet/Sources/UI/Menu/Main/MainMenuViewController.swift @@ -595,4 +595,5 @@ extension MainMenuScreen { } #endif } + } diff --git a/DashWallet/Sources/UI/Menu/Settings/SettingsScreen.swift b/DashWallet/Sources/UI/Menu/Settings/SettingsScreen.swift index b46ba6d12..6b206712f 100644 --- a/DashWallet/Sources/UI/Menu/Settings/SettingsScreen.swift +++ b/DashWallet/Sources/UI/Menu/Settings/SettingsScreen.swift @@ -40,24 +40,11 @@ struct SettingsScreen: View { var body: some View { VStack(alignment: .leading, spacing: 0) { - // Back button - HStack { - Button(action: { - vc.popViewController(animated: true) - }) { - Image(systemName: "chevron.left") - .font(.system(size: 18, weight: .medium)) - .foregroundColor(.primary) - .frame(width: 36, height: 36) - .overlay( - Circle().stroke(Color.gray300.opacity(0.3), lineWidth: 1) - ) - } - Spacer() + // Navigation bar with back button + NavigationBar { + vc.popViewController(animated: true) } - .padding(.horizontal, 5) - .padding(.top, 10) - + // Header HStack { Text(NSLocalizedString("Settings", comment: "")) @@ -66,6 +53,7 @@ struct SettingsScreen: View { .foregroundColor(.primaryText) Spacer() } + .padding(.horizontal, 20) .padding(.top, 30) .padding(.bottom, 20) @@ -96,6 +84,7 @@ struct SettingsScreen: View { } } } + .padding(.horizontal, 20) .padding(.vertical, 5) .background(Color.secondaryBackground) .cornerRadius(12) @@ -103,7 +92,6 @@ struct SettingsScreen: View { Spacer() } - .padding(.horizontal, 20) .background(Color.primaryBackground) .navigationBarHidden(true) .onReceive(viewModel.$navigationDestination) { destination in diff --git a/DashWallet/Sources/UI/Menu/Tools/ExtendedKeys/ExtendedPublicKeySheet.swift b/DashWallet/Sources/UI/Menu/Tools/ExtendedKeys/ExtendedPublicKeySheet.swift new file mode 100644 index 000000000..4af23504c --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Tools/ExtendedKeys/ExtendedPublicKeySheet.swift @@ -0,0 +1,188 @@ +// +// ExtendedPublicKeySheet.swift +// DashWallet +// +// Copyright © 2026 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI +import UIKit + +// MARK: - ExtendedPublicKeySheetViewModel + +class ExtendedPublicKeySheetViewModel: ObservableObject { + @Published var keyValue: String = "" + @Published var qrImage: UIImage? = nil + + init() { + loadKey() + } + + private func loadKey() { + let model = ExtendedPublicKeysModel() + guard let firstPath = model.derivationPaths.first else { return } + keyValue = firstPath.item.value + qrImage = generateQRCode(from: keyValue) + } + + private func generateQRCode(from string: String) -> UIImage? { + guard !string.isEmpty, + let filter = CIFilter(name: "CIQRCodeGenerator"), + let data = string.data(using: .utf8) else { return nil } + + filter.setValue(data, forKey: "inputMessage") + filter.setValue("M", forKey: "inputCorrectionLevel") + + guard let outputImage = filter.outputImage else { return nil } + + let scale = 180.0 / outputImage.extent.width + let scaledImage = outputImage.transformed(by: CGAffineTransform(scaleX: scale, y: scale)) + let context = CIContext() + guard let cgImage = context.createCGImage(scaledImage, from: scaledImage.extent) else { return nil } + return UIImage(cgImage: cgImage) + } +} + +// MARK: - ShareSheet + +private struct ShareSheet: UIViewControllerRepresentable { + let items: [Any] + + func makeUIViewController(context: Context) -> UIActivityViewController { + UIActivityViewController(activityItems: items, applicationActivities: nil) + } + + func updateUIViewController(_ uiViewController: UIActivityViewController, context: Context) {} +} + +// MARK: - ExtendedPublicKeySheet + +struct ExtendedPublicKeySheet: View { + @StateObject private var viewModel = ExtendedPublicKeySheetViewModel() + @Environment(\.dismiss) private var dismiss + @Environment(\.colorScheme) private var colorScheme + + @State private var isCopied = false + @State private var showShareSheet = false + + var body: some View { + VStack(spacing: 0) { + // Grabber + VStack { + RoundedRectangle(cornerRadius: 5, style: .continuous) + .fill(Color.gray300.opacity(0.5)) + .frame(width: 36, height: 5) + } + .frame(maxWidth: .infinity, minHeight: 18) + + // Close button + NavBarClose { + dismiss() + } + + // QR code + Group { + if let qrImage = viewModel.qrImage { + Image(uiImage: qrImage) + .interpolation(.none) + .resizable() + .frame(width: 180, height: 180) + } else { + RoundedRectangle(cornerRadius: 8, style: .continuous) + .fill(Color.gray300.opacity(0.2)) + .frame(width: 180, height: 180) + } + } + .padding(.vertical, 30) + + // Title + tappable key text + VStack(alignment: .leading, spacing: 6) { + Text(NSLocalizedString("Extended public key (BIP 44)", comment: "")) + .font(.system(size: 28, weight: .bold)) + .foregroundColor(.primaryText) + .frame(maxWidth: .infinity, alignment: .leading) + + Button(action: { + guard !viewModel.keyValue.isEmpty else { return } + UIPasteboard.general.string = viewModel.keyValue + isCopied = true + DispatchQueue.main.asyncAfter(deadline: .now() + 1) { + isCopied = false + } + }) { + Text(viewModel.keyValue.isEmpty + ? NSLocalizedString("Not available", comment: "") + : viewModel.keyValue) + .font(.system(size: 15)) + .foregroundColor(.secondaryText) + .multilineTextAlignment(.leading) + .frame(maxWidth: .infinity, alignment: .leading) + } + .buttonStyle(PlainButtonStyle()) + .overlay( + Group { + if isCopied { + Text(NSLocalizedString("Copied", comment: "")) + .font(.caption) + .padding(.horizontal, 12) + .padding(.vertical, 6) + .background(copiedBackground) + .foregroundColor(.whiteText) + .clipShape(RoundedRectangle(cornerRadius: 8, style: .continuous)) + } + } + ) + } + .padding(.horizontal, 60) + .padding(.top, 20) + .padding(.bottom, 32) + + Spacer() + + // Share key button + DashButton( + text: NSLocalizedString("Share key", comment: ""), + style: .tintedBlue, + action: { showShareSheet = true } + ) + .padding(.horizontal, 60) + .padding(.bottom, 20) + } + .background(Color.secondaryBackground) + .sheet(isPresented: $showShareSheet) { + if !viewModel.keyValue.isEmpty { + ShareSheet(items: [viewModel.keyValue]) + } + } + } + + @ViewBuilder + private var copiedBackground: some View { + if colorScheme == .dark { + ZStack { + BackgroundBlurView() + Color.whiteAlpha15 + } + } else { + Color.black.opacity(0.8) + } + } +} + +// MARK: - Preview + +#Preview { + ExtendedPublicKeySheet() +} diff --git a/DashWallet/Sources/UI/Menu/Tools/ExtendedKeys/ExtendedPublicKeysView.swift b/DashWallet/Sources/UI/Menu/Tools/ExtendedKeys/ExtendedPublicKeysView.swift new file mode 100644 index 000000000..f47d5df19 --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Tools/ExtendedKeys/ExtendedPublicKeysView.swift @@ -0,0 +1,131 @@ +// +// Created by Claude +// Copyright © 2024 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI +import UIKit + +struct ExtendedPublicKeysView: View { + @StateObject private var viewModel = ExtendedPublicKeysViewModel() + @Environment(\.presentationMode) var presentationMode + + var body: some View { + ZStack { + Color.secondaryBackground + .ignoresSafeArea() + + VStack(alignment: .leading, spacing: 16) { + // Navigation bar + NavBarBack { + presentationMode.wrappedValue.dismiss() + } + + // Title + Text("Extended Public Keys") + .font(.system(size: 28, weight: .semibold)) + .foregroundColor(.primaryText) + .padding(.horizontal, 20) + .padding(.top, 12) + + // Keys container with VStack + VStack(spacing: kMenuVGap) { + ForEach(Array(viewModel.derivationPaths.enumerated()), id: \.offset) { index, item in + KeyItemView(item: item) + } + } + .padding(kMenuPadding) + .background(Color.background) + .cornerRadius(kMenuRadius) + .padding(.horizontal, 20) + + Spacer() + } + } + .navigationBarHidden(true) + } +} + +struct KeyItemView: View { + let item: DerivationPathKeysItem + @State private var showCopiedMessage = false + + var body: some View { + HStack(spacing: 8) { + VStack(alignment: .leading, spacing: 2) { + Text(item.title) + .font(.footnote) + .foregroundColor(.tertiaryText) + + Text(item.value) + .font(.subheadline) + .foregroundColor(.primaryText) + .lineLimit(nil) + .fixedSize(horizontal: false, vertical: true) + } + + Spacer() + + Button(action: { + UIPasteboard.general.string = item.value + showCopiedMessage = true + + // Hide message after delay + DispatchQueue.main.asyncAfter(deadline: .now() + 2) { + showCopiedMessage = false + } + }) { + Image("icon_copy_outline") + .resizable() + .frame(width: 30, height: 30) + .foregroundColor(.primaryText) + } + } + .padding(.horizontal, 14) + .padding(.vertical, 12) + .background(Color.background) + .cornerRadius(14) + .overlay( + Group { + if showCopiedMessage { + Text("Copied") + .font(.caption) + .padding(.horizontal, 12) + .padding(.vertical, 6) + .background(Color.black.opacity(0.8)) + .foregroundColor(.white) + .cornerRadius(8) + } + } + ) + } +} + +class ExtendedPublicKeysViewModel: ObservableObject { + @Published var derivationPaths: [DerivationPathKeysItem] = [] + + init() { + loadKeys() + } + + private func loadKeys() { + let model = ExtendedPublicKeysModel() + derivationPaths = model.derivationPaths.map { $0.item } + } +} + +#Preview { + ExtendedPublicKeysView() +} diff --git a/DashWallet/Sources/UI/Menu/Tools/ExtendedKeys/ExtendedPublicKeysViewController.swift b/DashWallet/Sources/UI/Menu/Tools/ExtendedKeys/ExtendedPublicKeysViewController.swift index 5afa19b7b..b1fd86740 100644 --- a/DashWallet/Sources/UI/Menu/Tools/ExtendedKeys/ExtendedPublicKeysViewController.swift +++ b/DashWallet/Sources/UI/Menu/Tools/ExtendedKeys/ExtendedPublicKeysViewController.swift @@ -15,15 +15,18 @@ // limitations under the License. // -import Foundation +import UIKit +import SwiftUI // MARK: - ExtendedPublicKeysViewController @objc(DWExtendedPublicKeysViewController) -final class ExtendedPublicKeysViewController: BaseViewController, NavigationStackControllable { +final class ExtendedPublicKeysViewController: BaseViewController { private let model: ExtendedPublicKeysModel - private var tableView: UITableView! + private var navigationContainer: UIView! + private var backButtonBorder: UIView! + private var backButtonIcon: UIImageView! init() { model = ExtendedPublicKeysModel() @@ -40,67 +43,237 @@ final class ExtendedPublicKeysViewController: BaseViewController, NavigationStac configureHierarchy() } + + + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) { + updateBackButtonAppearance() + } + } } -// MARK: UITableViewDelegate, UITableViewDataSource +extension ExtendedPublicKeysViewController { + private func configureHierarchy() { + view.backgroundColor = .dw_secondaryBackground() + + configureCustomNavigationBar() -extension ExtendedPublicKeysViewController: UITableViewDelegate, UITableViewDataSource { + // Add SwiftUI content with title + addSwiftUIContent() + } - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - tableView.deselectRow(at: indexPath, animated: true) + private func addSwiftUIContent() { + // SwiftUI view with title and content + let swiftUIView = ScrollView { + VStack(alignment: .leading, spacing: 20) { + Text(NSLocalizedString("Extended public keys", comment: "")) + .font(.system(size: 28, weight: .bold)) + .foregroundColor(Color(uiColor: .dw_label())) + .padding(.horizontal, 20) - guard let cell = tableView.cellForRow(at: indexPath) as? DerivationPathKeysCell, !cell.item.value.isEmpty else { - return + KeysVStackView(items: model.derivationPaths.map { $0.item }) + .padding(.horizontal, 20) + } + .frame(maxWidth: .infinity, alignment: .topLeading) } + .background(Color(uiColor: .dw_secondaryBackground())) - UIPasteboard.general.string = cell.item.value - view.dw_showInfoHUD(withText: NSLocalizedString("Copied", comment: "")) - } + let hostingController = UIHostingController(rootView: swiftUIView) + hostingController.view.translatesAutoresizingMaskIntoConstraints = false + hostingController.view.backgroundColor = .clear - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - model.derivationPaths.count + addChild(hostingController) + view.addSubview(hostingController.view) + hostingController.didMove(toParent: self) + + NSLayoutConstraint.activate([ + hostingController.view.topAnchor.constraint(equalTo: navigationContainer.bottomAnchor, constant: 10), + hostingController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), + hostingController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), + hostingController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor) + ]) } - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let info = model.derivationPaths[indexPath.row] - let item = info.item + private func configureCustomNavigationBar() { + // Create navigation container (64px height) + navigationContainer = UIView() + navigationContainer.translatesAutoresizingMaskIntoConstraints = false + navigationContainer.backgroundColor = .dw_secondaryBackground() + view.addSubview(navigationContainer) - let cell = tableView.dequeueReusableCell(type: DerivationPathKeysCell.self, for: indexPath) - cell.update(with: item) - cell.separatorInset = .init(top: 0, left: 15, bottom: 0, right: 0) - return cell - } -} + NSLayoutConstraint.activate([ + navigationContainer.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor), + navigationContainer.leadingAnchor.constraint(equalTo: view.leadingAnchor), + navigationContainer.trailingAnchor.constraint(equalTo: view.trailingAnchor), + navigationContainer.heightAnchor.constraint(equalToConstant: 64) + ]) -extension ExtendedPublicKeysViewController { - private func configureHierarchy() { - title = NSLocalizedString("Extended Public Keys", comment: "") - view.backgroundColor = .dw_secondaryBackground() + // Create back button (44x44 touch area) + let backButton = UIButton(type: .custom) + backButton.translatesAutoresizingMaskIntoConstraints = false + backButton.addTarget(self, action: #selector(backButtonTapped), for: .touchUpInside) + navigationContainer.addSubview(backButton) + + NSLayoutConstraint.activate([ + backButton.leadingAnchor.constraint(equalTo: navigationContainer.leadingAnchor, constant: 20), + backButton.centerYAnchor.constraint(equalTo: navigationContainer.centerYAnchor), + backButton.widthAnchor.constraint(equalToConstant: 44), + backButton.heightAnchor.constraint(equalToConstant: 44) + ]) + + // Create circular border (34x34) + backButtonBorder = UIView() + backButtonBorder.translatesAutoresizingMaskIntoConstraints = false + backButtonBorder.layer.cornerRadius = 17 + backButtonBorder.layer.borderWidth = 1.5 + backButtonBorder.isUserInteractionEnabled = false + backButton.addSubview(backButtonBorder) + + NSLayoutConstraint.activate([ + backButtonBorder.centerXAnchor.constraint(equalTo: backButton.centerXAnchor), + backButtonBorder.centerYAnchor.constraint(equalTo: backButton.centerYAnchor), + backButtonBorder.widthAnchor.constraint(equalToConstant: 34), + backButtonBorder.heightAnchor.constraint(equalToConstant: 34) + ]) - tableView = UITableView(frame: .zero, style: .insetGrouped) - tableView.registerClass(for: DerivationPathKeysCell.self) - tableView.registerClassforHeaderFooterView(for: DerivationPathKeysHeaderView.self) - tableView.preservesSuperviewLayoutMargins = true - tableView.backgroundColor = .dw_secondaryBackground() - tableView.estimatedRowHeight = UITableView.automaticDimension - tableView.rowHeight = UITableView.automaticDimension - tableView.translatesAutoresizingMaskIntoConstraints = false - tableView.delegate = self - tableView.dataSource = self - view.addSubview(tableView) + // Create chevron icon (12px height) + backButtonIcon = UIImageView() + backButtonIcon.translatesAutoresizingMaskIntoConstraints = false + backButtonIcon.contentMode = .scaleAspectFit + backButton.addSubview(backButtonIcon) NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor, constant: 0), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0), + backButtonIcon.centerXAnchor.constraint(equalTo: backButton.centerXAnchor, constant: -1), + backButtonIcon.centerYAnchor.constraint(equalTo: backButton.centerYAnchor), + backButtonIcon.heightAnchor.constraint(equalToConstant: 12) ]) + + updateBackButtonAppearance() + } + + private func updateBackButtonAppearance() { + // Update border color + if let borderColor = UIColor(named: "Gray300Alpha30") { + backButtonBorder.layer.borderColor = borderColor.cgColor + } else { + backButtonBorder.layer.borderColor = UIColor.dw_gray300().withAlphaComponent(0.3).cgColor + } + + // Update icon based on appearance + let iconName = traitCollection.userInterfaceStyle == .dark ? "controls-back-dark-mode" : "controls-back" + backButtonIcon.image = UIImage(named: iconName) + backButtonIcon.tintColor = .dw_label() + } + + @objc private func backButtonTapped() { + navigationController?.popViewController(animated: true) } + } // MARK: NavigationBarStyleable extension ExtendedPublicKeysViewController: NavigationBarStyleable { - var prefersLargeTitles: Bool { true } - var largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode { .always } + var prefersLargeTitles: Bool { false } + var largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode { .never } +} + +// MARK: NavigationBarDisplayable + +extension ExtendedPublicKeysViewController: NavigationBarDisplayable { + var isNavigationBarHidden: Bool { true } +} + +// MARK: - SwiftUI VStack Implementation for Comparison + +struct KeysVStackView: View { + let items: [DerivationPathKeysItem] + @State private var copiedItemIndex: Int? = nil + + var body: some View { + VStack(spacing: kMenuVGap) { + ForEach(Array(items.enumerated()), id: \.offset) { index, item in + KeyItemRow( + item: item, + showCopiedMessage: copiedItemIndex == index, + onCopy: { + copiedItemIndex = index + DispatchQueue.main.asyncAfter(deadline: .now() + 1) { + if copiedItemIndex == index { + copiedItemIndex = nil + } + } + } + ) + } + } + .padding(kMenuPadding) + .background(Color(uiColor: .dw_background())) + .cornerRadius(kMenuRadius) + } +} + +struct KeyItemRow: View { + let item: DerivationPathKeysItem + let showCopiedMessage: Bool + let onCopy: () -> Void + + var body: some View { + Button(action: { + // Copy to clipboard + UIPasteboard.general.string = item.value + onCopy() + }) { + HStack(spacing: 8) { + VStack(alignment: .leading, spacing: 2) { + // Title: caption1 font (12pt Regular) + Text(item.title) + .font(.caption1) + .foregroundColor(Color(uiColor: .dw_secondaryText())) + + // Key value: footnote font (13pt Regular) + Text(item.value) + .font(.footnote) + .foregroundColor(Color(uiColor: .dw_label())) + .lineLimit(nil) + .fixedSize(horizontal: false, vertical: true) + } + + Spacer() + + // Copy icon (40x40 wrapper with 13.6px icon centered) + ZStack { + Color.clear + .frame(width: 40, height: 40) + + Image(uiImage: UIImage(named: "icon_copy_outline")!) + .resizable() + .aspectRatio(contentMode: .fit) + .frame(height: 13.6) + .foregroundColor(Color(uiColor: .dw_label())) + } + } + .padding(.horizontal, 14) + .padding(.vertical, 12) + .background(Color(uiColor: .dw_background())) + .cornerRadius(14) + .contentShape(Rectangle()) // Make entire area tappable + } + .buttonStyle(PlainButtonStyle()) // Remove default button styling + .overlay( + Group { + if showCopiedMessage { + Text("Copied") + .font(.caption) + .padding(.horizontal, 12) + .padding(.vertical, 6) + .background(Color.black.opacity(0.8)) + .foregroundColor(.white) + .cornerRadius(8) + } + } + ) + } } diff --git a/DashWallet/Sources/UI/Menu/Tools/ImportWallet/ImportPrivateKeySheet.swift b/DashWallet/Sources/UI/Menu/Tools/ImportWallet/ImportPrivateKeySheet.swift new file mode 100644 index 000000000..abfe8ed17 --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Tools/ImportWallet/ImportPrivateKeySheet.swift @@ -0,0 +1,117 @@ +// +// Created by Assistant +// Copyright © 2025 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI + +struct ImportPrivateKeySheet: View { + @Environment(\.presentationMode) private var presentationMode + @Environment(\.colorScheme) private var colorScheme + let onScanPrivateKey: () -> Void + + var body: some View { + VStack(spacing: 0) { + // Grabber + Capsule() + .fill(colorScheme == .dark ? Color.whiteAlpha20 : Color.gray300Alpha50) + .frame(width: 36, height: 5) + .padding(.top, 6) + .padding(.bottom, 6) + + // Close button + HStack { + Spacer() + + Button(action: { + presentationMode.wrappedValue.dismiss() + }) { + Image(colorScheme == .dark ? "icon-close-sheet-white" : "icon-close-sheet") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 9, height: 9) + .foregroundColor(Color.primaryText) + .frame(width: 34, height: 34) + .overlay( + Circle() + .stroke(Color.gray300.opacity(0.3), lineWidth: 1.5) + ) + } + .padding(.horizontal, 20) + } + .frame(height: 64) + .background(Color.secondaryBackground) + + // Content + VStack(spacing: 0) { + // Icon + Image("image.import.private.key.large") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 94, height: 100) + .padding(.top, 20) + .padding(.bottom, 10) + + // Text content + VStack(spacing: 6) { + Text(NSLocalizedString("Import private key", comment: "")) + .font(.system(size: 28, weight: .bold)) + .foregroundColor(Color.primaryText) + .multilineTextAlignment(.center) + .fixedSize(horizontal: false, vertical: true) + + Text(NSLocalizedString("This action will move all coins from the Dash paper wallet to your DashPay app on this device.", comment: "")) + .font(.system(size: 15)) + .foregroundColor(Color.secondaryText) + .multilineTextAlignment(.center) + .lineSpacing(5) + .fixedSize(horizontal: false, vertical: true) + } + .padding(.horizontal, 40) + .padding(.top, 20) + .padding(.bottom, 32) + } + + Spacer() + + // Button wrap with fixed padding + VStack(spacing: 0) { + DashButton( + text: NSLocalizedString("Scan private key", comment: ""), + style: .filledBlue, + size: .large, + stretch: true, + isEnabled: true, + action: { + presentationMode.wrappedValue.dismiss() + DispatchQueue.main.async { + onScanPrivateKey() + } + } + ) + .padding(.horizontal, 60) + } + .padding(.top, 20) + .padding(.bottom, 20) + } + .background(Color.secondaryBackground) + } +} + +struct ImportPrivateKeySheet_Previews: PreviewProvider { + static var previews: some View { + ImportPrivateKeySheet(onScanPrivateKey: {}) + } +} diff --git a/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/DerivationPathKeys/DerivationPathKeysView.swift b/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/DerivationPathKeys/DerivationPathKeysView.swift new file mode 100644 index 000000000..95ad17947 --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/DerivationPathKeys/DerivationPathKeysView.swift @@ -0,0 +1,209 @@ +// +// DerivationPathKeysView.swift +// DashWallet +// +// Copyright © 2026 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI +import UIKit + +// MARK: - DerivationPathKeysViewModel + +class DerivationPathKeysViewModel: ObservableObject { + @Published var visibleIndexes: Int + + private let model: DerivationPathKeysModel + + init(model: DerivationPathKeysModel) { + self.model = model + visibleIndexes = model.visibleIndexes + } + + var title: String { model.title } + var infoItems: [DerivationPathInfo] { model.infoItems } + var numberOfSections: Int { visibleIndexes + 1 } + + func showNextKey() { + model.showNextKey() + visibleIndexes = model.visibleIndexes + } + + func usageInfo(at index: Int) -> String { + model.usageInfoForKey(at: index) + } + + func item(for info: DerivationPathInfo, at index: Int) -> DerivationPathKeysItem { + model.itemForInfo(info, atIndex: index) + } +} + +// MARK: - DerivationPathKeysContentView + +struct DerivationPathKeysContentView: View { + @ObservedObject var viewModel: DerivationPathKeysViewModel + let onBack: () -> Void + @State private var copiedValue: String? = nil + + var body: some View { + ZStack { + Color(uiColor: .dw_secondaryBackground()) + .ignoresSafeArea() + + VStack(alignment: .leading, spacing: 10) { + NavBarBackPlus(onBack: onBack) { + viewModel.showNextKey() + } + + ScrollView { + VStack(alignment: .leading, spacing: 20) { + // Title + Text(viewModel.title) + .font(.system(size: 28, weight: .bold)) + .foregroundColor(Color(uiColor: .dw_label())) + .padding(.horizontal, 20) + + // Keypair sections + ForEach(0.. UIVisualEffectView { + UIVisualEffectView(effect: UIBlurEffect(style: .systemUltraThinMaterialDark)) + } + + func updateUIView(_ uiView: UIVisualEffectView, context: Context) {} +} + +// MARK: - KeyInfoRow + +struct KeyInfoRow: View { + let item: DerivationPathKeysItem + let isCopied: Bool + let onCopy: () -> Void + + @Environment(\.colorScheme) private var colorScheme + + var body: some View { + Button(action: onCopy) { + HStack(spacing: 8) { + VStack(alignment: .leading, spacing: 2) { + Text(item.title) + .font(.footnote) + .foregroundColor(Color(uiColor: .dw_secondaryText())) + + Text(item.value) + .font(.subheadline) + .foregroundColor(Color(uiColor: .dw_label())) + .lineLimit(nil) + .fixedSize(horizontal: false, vertical: true) + } + + Spacer() + + ZStack { + Color.clear + .frame(width: 40, height: 40) + + Image("icon_copy_outline") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(height: 13.6) + .foregroundColor(Color(uiColor: .dw_label())) + } + } + .padding(.horizontal, 14) + .padding(.vertical, 12) + .background(Color(uiColor: .dw_background())) + .clipShape(RoundedRectangle(cornerRadius: 14, style: .continuous)) + .contentShape(Rectangle()) + } + .buttonStyle(PlainButtonStyle()) + .overlay( + Group { + if isCopied { + Text(NSLocalizedString("Copied", comment: "")) + .font(.caption) + .padding(.horizontal, 12) + .padding(.vertical, 6) + .background(copiedBackground) + .foregroundColor(.whiteText) + .clipShape(RoundedRectangle(cornerRadius: 8, style: .continuous)) + } + } + ) + } + + @ViewBuilder + private var copiedBackground: some View { + if colorScheme == .dark { + ZStack { + BackgroundBlurView() + Color.whiteAlpha15 + } + } else { + Color.black.opacity(0.8) + } + } +} diff --git a/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/DerivationPathKeys/DerivationPathKeysViewController.swift b/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/DerivationPathKeys/DerivationPathKeysViewController.swift index 2dabcc0b9..b1f90451f 100644 --- a/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/DerivationPathKeys/DerivationPathKeysViewController.swift +++ b/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/DerivationPathKeys/DerivationPathKeysViewController.swift @@ -16,21 +16,20 @@ // import UIKit +import SwiftUI // MARK: - DerivationPathKeysViewController final class DerivationPathKeysViewController: BaseViewController, NavigationStackControllable { - private let model: DerivationPathKeysModel - - private var tableView: UITableView! + private let viewModel: DerivationPathKeysViewModel convenience init(with key: MNKey, derivationPath: DSAuthenticationKeysDerivationPath) { - self.init(with: DerivationPathKeysModel(key: key, derivationPath: derivationPath)) + let model = DerivationPathKeysModel(key: key, derivationPath: derivationPath) + self.init(with: DerivationPathKeysViewModel(model: model)) } - init(with model: DerivationPathKeysModel) { - self.model = model - + init(with viewModel: DerivationPathKeysViewModel) { + self.viewModel = viewModel super.init(nibName: nil, bundle: nil) } @@ -38,25 +37,32 @@ final class DerivationPathKeysViewController: BaseViewController, NavigationStac fatalError("init(coder:) has not been implemented") } - @objc - private func addNewAction() { - model.showNextKey() + override func viewDidLoad() { + super.viewDidLoad() - tableView.insertSections([model.visibleIndexes], with: .automatic) - } + view.backgroundColor = .dw_secondaryBackground() - @objc - func applicationWillResignActiveNotification() { - navigationController?.popViewController(animated: false) - } + let swiftUIView = DerivationPathKeysContentView(viewModel: viewModel) { [weak self] in + self?.navigationController?.popViewController(animated: true) + } - override func viewDidLoad() { - super.viewDidLoad() + let hostingController = UIHostingController(rootView: swiftUIView) + hostingController.view.translatesAutoresizingMaskIntoConstraints = false + hostingController.view.backgroundColor = .clear - configureHierarchy() + addChild(hostingController) + view.addSubview(hostingController.view) + hostingController.didMove(toParent: self) + + NSLayoutConstraint.activate([ + hostingController.view.topAnchor.constraint(equalTo: view.topAnchor), + hostingController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), + hostingController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), + hostingController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor) + ]) NotificationCenter.default.addObserver(self, - selector: #selector(applicationWillResignActiveNotification), + selector: #selector(applicationWillResignActive), name: UIApplication.willResignActiveNotification, object: nil) } @@ -64,90 +70,21 @@ final class DerivationPathKeysViewController: BaseViewController, NavigationStac deinit { NotificationCenter.default.removeObserver(self) } -} - -// MARK: UITableViewDelegate, UITableViewDataSource - -extension DerivationPathKeysViewController: UITableViewDelegate, UITableViewDataSource { - func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { - let usageInfo = model.usageInfoForKey(at: section) - - let view = tableView.dequeueReusableHeaderFooterView(type: DerivationPathKeysHeaderView.self) - view.titleLabel.text = NSLocalizedString("Keypair", comment: "") + " \(section)" - view.extraInfoLabel.text = usageInfo - return view - } - - func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { - 40 - } - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - tableView.deselectRow(at: indexPath, animated: true) - - guard let cell = tableView.cellForRow(at: indexPath) as? DerivationPathKeysCell, !cell.item.value.isEmpty else { - return - } - - UIPasteboard.general.string = cell.item.value - view.dw_showInfoHUD(withText: NSLocalizedString("Copied", comment: "")) - } - - func numberOfSections(in tableView: UITableView) -> Int { - model.numberOfSections - } - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - model.numberIfItems - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let info = model.infoItems[indexPath.row] - let item = model.itemForInfo(info, atIndex: indexPath.section) - - let cell = tableView.dequeueReusableCell(type: DerivationPathKeysCell.self, for: indexPath) - cell.update(with: item) - cell.separatorInset = .init(top: 0, left: 15, bottom: 0, right: 0) - return cell + @objc private func applicationWillResignActive() { + navigationController?.popViewController(animated: false) } } -extension DerivationPathKeysViewController { - private func configureHierarchy() { - title = model.title - view.backgroundColor = .dw_secondaryBackground() - - let plusItem = UIBarButtonItem(image: UIImage(systemName: "plus"), - style: .plain, - target: self, - action: #selector(addNewAction)) - plusItem.tintColor = UIColor.dw_label() - navigationItem.rightBarButtonItem = plusItem - - tableView = UITableView(frame: .zero, style: .insetGrouped) - tableView.registerClass(for: DerivationPathKeysCell.self) - tableView.registerClassforHeaderFooterView(for: DerivationPathKeysHeaderView.self) - tableView.preservesSuperviewLayoutMargins = true - tableView.backgroundColor = .clear - tableView.estimatedRowHeight = UITableView.automaticDimension - tableView.rowHeight = UITableView.automaticDimension - tableView.translatesAutoresizingMaskIntoConstraints = false - tableView.delegate = self - tableView.dataSource = self - view.addSubview(tableView) +// MARK: NavigationBarStyleable - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor, constant: 0), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0), - ]) - } +extension DerivationPathKeysViewController: NavigationBarStyleable { + var prefersLargeTitles: Bool { false } + var largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode { .never } } -// MARK: NavigationBarStyleable +// MARK: NavigationBarDisplayable -extension DerivationPathKeysViewController: NavigationBarStyleable { - var prefersLargeTitles: Bool { true } - var largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode { .always } +extension DerivationPathKeysViewController: NavigationBarDisplayable { + var isNavigationBarHidden: Bool { true } } diff --git a/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/DerivationPathKeys/Views/DerivationPathKeysCell.swift b/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/DerivationPathKeys/Views/DerivationPathKeysCell.swift index 99220faf1..14ae14b71 100644 --- a/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/DerivationPathKeys/Views/DerivationPathKeysCell.swift +++ b/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/DerivationPathKeys/Views/DerivationPathKeysCell.swift @@ -21,6 +21,11 @@ final class DerivationPathKeysCell: UITableViewCell { private var nameLabel: UILabel! private var valueLabel: UILabel! private var copyButton: UIButton! + private var mainStackView: UIStackView! + private var topConstraint: NSLayoutConstraint! + private var leadingConstraint: NSLayoutConstraint! + private var trailingConstraint: NSLayoutConstraint! + private var bottomConstraint: NSLayoutConstraint! private(set) var item: DerivationPathKeysItem! @@ -42,10 +47,32 @@ final class DerivationPathKeysCell: UITableViewCell { valueLabel.text = item.value } + func applyMenuSpacing(isFirst: Bool, isLast: Bool, sectionPadding: CGFloat) { + // Cell vertical padding: 12px + // Section padding: 6px (added to first cell top and last cell bottom) + // Inter-cell gap: 2px (added to non-first cells) + let cellVerticalPadding: CGFloat = 12 + + // Top: section padding (6px) for first cell, or cell padding + gap for others + topConstraint.constant = isFirst ? (sectionPadding + cellVerticalPadding) : (cellVerticalPadding + kMenuVGap) + + // Bottom: section padding (6px) for last cell + bottomConstraint.constant = isLast ? -(sectionPadding + cellVerticalPadding) : -cellVerticalPadding + + // Horizontal: section padding (6px) + cell padding (14px) + let totalHorizontalPadding = sectionPadding + 14 + leadingConstraint.constant = totalHorizontalPadding + trailingConstraint.constant = -totalHorizontalPadding + } + private func configureHierarchy() { backgroundColor = .dw_background() - let mainStackView = UIStackView() + // Cell corner radius: 14px + layer.cornerRadius = 14 + layer.masksToBounds = true + + mainStackView = UIStackView() mainStackView.translatesAutoresizingMaskIntoConstraints = false mainStackView.axis = .vertical mainStackView.spacing = 2 @@ -72,15 +99,24 @@ final class DerivationPathKeysCell: UITableViewCell { copyButton.isUserInteractionEnabled = false contentView.addSubview(copyButton) + // Initial cell padding (will be adjusted by applyMenuSpacing) + let cellHorizontalPadding: CGFloat = 14 + let cellVerticalPadding: CGFloat = 12 + + topConstraint = mainStackView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: cellVerticalPadding) + leadingConstraint = mainStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: cellHorizontalPadding) + bottomConstraint = mainStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -cellVerticalPadding) + trailingConstraint = copyButton.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -cellHorizontalPadding) + NSLayoutConstraint.activate([ - mainStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 15), - mainStackView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 9), - mainStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -9), + leadingConstraint, + topConstraint, + bottomConstraint, copyButton.widthAnchor.constraint(equalToConstant: 30), copyButton.heightAnchor.constraint(equalToConstant: 30), - copyButton.leadingAnchor.constraint(equalTo: mainStackView.trailingAnchor, constant: 5), - copyButton.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -5), + copyButton.leadingAnchor.constraint(equalTo: mainStackView.trailingAnchor, constant: 8), + trailingConstraint, copyButton.centerYAnchor.constraint(equalTo: contentView.centerYAnchor, constant: 0), ]) } diff --git a/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/Cell/KeysOverviewCell.swift b/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/Cell/KeysOverviewCell.swift index 8e04feeb2..20f5f82f5 100644 --- a/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/Cell/KeysOverviewCell.swift +++ b/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/Cell/KeysOverviewCell.swift @@ -33,8 +33,8 @@ final class KeysOverviewCell: UITableViewCell { } func update(with keyItem: MNKey, count: Int, used: Int) { - let keyCountText = String(format: NSLocalizedString("%d key(s)", comment: "#bc-ignore!"), count) - let usedCountText = String(format: NSLocalizedString("%ld used(s)", comment: "#bc-ignore!"), used) + let keyCountText = String.localizedStringWithFormat(NSLocalizedString("%d key(s)", comment: "#bc-ignore!"), count) + let usedCountText = String.localizedStringWithFormat(NSLocalizedString("%ld used", comment: "#bc-ignore!"), used) keyNameLabel.text = keyItem.title keyCountLabel.text = keyCountText diff --git a/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/KeysOverviewView.swift b/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/KeysOverviewView.swift new file mode 100644 index 000000000..66526fd33 --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/KeysOverviewView.swift @@ -0,0 +1,173 @@ +// +// KeysOverviewView.swift +// DashWallet +// +// SwiftUI version of the Masternode Keys overview page +// +// Copyright © 2026 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI +import UIKit + +// MARK: - KeysOverviewContentView + +struct KeysOverviewContentView: View { + @StateObject private var viewModel = KeysOverviewViewModel() + private let navigationController: UINavigationController? + + init(navigationController: UINavigationController? = nil) { + self.navigationController = navigationController + } + + var body: some View { + ScrollView { + VStack(alignment: .leading, spacing: 20) { + // Title + Text(NSLocalizedString("Masternode keys", comment: "")) + .font(.system(size: 28, weight: .bold)) + .foregroundColor(Color(uiColor: .dw_label())) + .padding(.horizontal, 20) + + // Keys list container + VStack(spacing: kMenuVGap) { + ForEach(viewModel.items, id: \.self) { item in + KeyItemButton( + item: item, + count: viewModel.keyCount(for: item), + used: viewModel.usedCount(for: item) + ) { + handleItemTap(item) + } + } + } + .padding(kMenuPadding) + .background(Color(uiColor: .dw_background())) + .clipShape(RoundedRectangle(cornerRadius: 20, style: .continuous)) + .padding(.horizontal, 20) + } + .frame(maxWidth: .infinity, alignment: .topLeading) + } + .background(Color(uiColor: .dw_secondaryBackground())) + } + + private func handleItemTap(_ item: MNKey) { + let derivationPath = viewModel.derivationPath(for: item) + DSAuthenticationManager.sharedInstance().authenticate( + withPrompt: nil, + usingBiometricAuthentication: false, + alertIfLockout: true + ) { [weak navigationController] authenticated, _, _ in + guard authenticated else { return } + + DispatchQueue.main.async { + let vc = DerivationPathKeysViewController(with: item, derivationPath: derivationPath) + vc.hidesBottomBarWhenPushed = true + navigationController?.pushViewController(vc, animated: true) + } + } + } +} + +// MARK: - KeyItemButton + +struct KeyItemButton: View { + let item: MNKey + let count: Int + let used: Int + let action: () -> Void + + var body: some View { + Button(action: action) { + HStack(spacing: 0) { + // Left side - key name and count + VStack(alignment: .leading, spacing: 2) { + Text(item.title) + .font(.subheadline) + .foregroundColor(Color(uiColor: .dw_label())) + + Text(keyCountText) + .font(.footnote) + .foregroundColor(Color(uiColor: .dw_tertiaryText())) + } + + Spacer() + + // Right side - used count + chevron + HStack(spacing: 16) { + Text(usedCountText) + .font(.footnote) + .foregroundColor(Color(uiColor: .dw_label())) + + Image("list-chevron-right") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(height: 11) + } + } + .padding(.horizontal, 14) + .padding(.vertical, 12) + .frame(height: 62) + .background(Color(uiColor: .dw_background())) + .clipShape(RoundedRectangle(cornerRadius: 14, style: .continuous)) + .contentShape(Rectangle()) + } + .buttonStyle(PlainButtonStyle()) + } + + private var keyCountText: String { + String.localizedStringWithFormat(NSLocalizedString("%d key(s)", comment: "#bc-ignore!"), count) + } + + private var usedCountText: String { + String.localizedStringWithFormat(NSLocalizedString("%ld used", comment: "#bc-ignore!"), used) + } +} + +// MARK: - KeysOverviewViewModel + +class KeysOverviewViewModel: ObservableObject { + @Published var items: [MNKey] = MNKey.allCases + + private let model: WalletKeysOverviewModel + + init() { + model = WalletKeysOverviewModel() + } + + func keyCount(for type: MNKey) -> Int { + model.keyCount(for: type) + } + + func usedCount(for type: MNKey) -> Int { + model.usedCount(for: type) + } + + func derivationPath(for type: MNKey) -> DSAuthenticationKeysDerivationPath { + model.derivationPath(for: type) + } +} + +// MARK: - MNKey Identifiable + +extension MNKey: Identifiable { + var id: Self { self } +} + +// MARK: - Preview + +#Preview { + KeysOverviewContentView() +} diff --git a/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/KeysOverviewViewController.swift b/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/KeysOverviewViewController.swift index b8678f846..43c9fa0bd 100644 --- a/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/KeysOverviewViewController.swift +++ b/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/KeysOverviewViewController.swift @@ -16,98 +16,137 @@ // import UIKit +import SwiftUI // MARK: - KeysOverviewViewController @objc(DWKeysOverviewViewController) final class KeysOverviewViewController: BaseViewController { - private var tableView: UITableView! - private var model: WalletKeysOverviewModel! - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - } + private var navigationContainer: UIView! + private var backButtonBorder: UIView! + private var backButtonIcon: UIImageView! override func viewDidLoad() { super.viewDidLoad() - configureModel() configureHierarchy() } + + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) { + updateBackButtonAppearance() + } + } } extension KeysOverviewViewController { - private func configureModel() { - model = WalletKeysOverviewModel() + private func configureHierarchy() { + view.backgroundColor = .dw_secondaryBackground() + + configureCustomNavigationBar() + addSwiftUIContent() } - private func configureHierarchy() { - title = NSLocalizedString("Masternode Keys", comment: "") + private func addSwiftUIContent() { + let swiftUIView = KeysOverviewContentView(navigationController: navigationController) - view.backgroundColor = .dw_secondaryBackground() + let hostingController = UIHostingController(rootView: swiftUIView) + hostingController.view.translatesAutoresizingMaskIntoConstraints = false + hostingController.view.backgroundColor = .clear - tableView = UITableView(frame: .zero, style: .insetGrouped) - tableView.preservesSuperviewLayoutMargins = true - tableView.rowHeight = 62 - tableView.backgroundColor = .clear - tableView.estimatedRowHeight = 62 - tableView.translatesAutoresizingMaskIntoConstraints = false - tableView.registerClass(for: KeysOverviewCell.self) - tableView.delegate = self - tableView.dataSource = self - view.addSubview(tableView) + addChild(hostingController) + view.addSubview(hostingController.view) + hostingController.didMove(toParent: self) NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor, constant: 0), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0), + hostingController.view.topAnchor.constraint(equalTo: navigationContainer.bottomAnchor, constant: 10), + hostingController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), + hostingController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), + hostingController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor) ]) } -} -// MARK: UITableViewDataSource, UITableViewDelegate + private func configureCustomNavigationBar() { + navigationContainer = UIView() + navigationContainer.translatesAutoresizingMaskIntoConstraints = false + navigationContainer.backgroundColor = .dw_secondaryBackground() + view.addSubview(navigationContainer) -extension KeysOverviewViewController: UITableViewDataSource, UITableViewDelegate { - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - model.items.count - } + NSLayoutConstraint.activate([ + navigationContainer.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor), + navigationContainer.leadingAnchor.constraint(equalTo: view.leadingAnchor), + navigationContainer.trailingAnchor.constraint(equalTo: view.trailingAnchor), + navigationContainer.heightAnchor.constraint(equalToConstant: 64) + ]) - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let item = model.items[indexPath.row] - let count = model.keyCount(for: item) - let used = model.usedCount(for: item) + let backButton = UIButton(type: .custom) + backButton.translatesAutoresizingMaskIntoConstraints = false + backButton.addTarget(self, action: #selector(backButtonTapped), for: .touchUpInside) + navigationContainer.addSubview(backButton) - let cell = tableView.dequeueReusableCell(type: KeysOverviewCell.self, for: indexPath) - cell.accessoryType = .disclosureIndicator - cell.update(with: item, count: count, used: used) - return cell - } + NSLayoutConstraint.activate([ + backButton.leadingAnchor.constraint(equalTo: navigationContainer.leadingAnchor, constant: 20), + backButton.centerYAnchor.constraint(equalTo: navigationContainer.centerYAnchor), + backButton.widthAnchor.constraint(equalToConstant: 44), + backButton.heightAnchor.constraint(equalToConstant: 44) + ]) - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - tableView.deselectRow(at: indexPath, animated: true) + backButtonBorder = UIView() + backButtonBorder.translatesAutoresizingMaskIntoConstraints = false + backButtonBorder.layer.cornerRadius = 17 + backButtonBorder.layer.borderWidth = 1.5 + backButtonBorder.isUserInteractionEnabled = false + backButton.addSubview(backButtonBorder) - let showVcBlock = { [weak self] in - guard let wSelf = self else { return } + NSLayoutConstraint.activate([ + backButtonBorder.centerXAnchor.constraint(equalTo: backButton.centerXAnchor), + backButtonBorder.centerYAnchor.constraint(equalTo: backButton.centerYAnchor), + backButtonBorder.widthAnchor.constraint(equalToConstant: 34), + backButtonBorder.heightAnchor.constraint(equalToConstant: 34) + ]) - let item = wSelf.model.items[indexPath.row] - let derivationPath = wSelf.model.derivationPath(for: item) - let vc = DerivationPathKeysViewController(with: item, derivationPath: derivationPath) - vc.hidesBottomBarWhenPushed = true - wSelf.navigationController?.pushViewController(vc, animated: true) - } + backButtonIcon = UIImageView() + backButtonIcon.translatesAutoresizingMaskIntoConstraints = false + backButtonIcon.contentMode = .scaleAspectFit + backButton.addSubview(backButtonIcon) - DSAuthenticationManager.sharedInstance().authenticate(withPrompt: nil, usingBiometricAuthentication: false, alertIfLockout: true) { authenticatedOrSuccess, _, _ in + NSLayoutConstraint.activate([ + backButtonIcon.centerXAnchor.constraint(equalTo: backButton.centerXAnchor, constant: -1), + backButtonIcon.centerYAnchor.constraint(equalTo: backButton.centerYAnchor), + backButtonIcon.heightAnchor.constraint(equalToConstant: 12) + ]) - guard authenticatedOrSuccess else { return } - showVcBlock() + updateBackButtonAppearance() + } + + private func updateBackButtonAppearance() { + if let borderColor = UIColor(named: "Gray300Alpha30") { + backButtonBorder.layer.borderColor = borderColor.cgColor + } else { + backButtonBorder.layer.borderColor = UIColor.dw_gray300().withAlphaComponent(0.3).cgColor } + + let iconName = traitCollection.userInterfaceStyle == .dark ? "controls-back-dark-mode" : "controls-back" + backButtonIcon.image = UIImage(named: iconName) + backButtonIcon.tintColor = .dw_label() + } + + @objc private func backButtonTapped() { + navigationController?.popViewController(animated: true) } } // MARK: NavigationBarStyleable extension KeysOverviewViewController: NavigationBarStyleable { - var prefersLargeTitles: Bool { true } - var largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode { .always } + var prefersLargeTitles: Bool { false } + var largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode { .never } +} + +// MARK: NavigationBarDisplayable + +extension KeysOverviewViewController: NavigationBarDisplayable { + var isNavigationBarHidden: Bool { true } } diff --git a/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/Model/WalletKeysOverviewModel.swift b/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/Model/WalletKeysOverviewModel.swift index ab1968952..8c9b7f4cd 100644 --- a/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/Model/WalletKeysOverviewModel.swift +++ b/DashWallet/Sources/UI/Menu/Tools/Masternode Keys/Overview/Model/WalletKeysOverviewModel.swift @@ -30,13 +30,13 @@ extension MNKey { var title: String { switch self { case .owner: - return NSLocalizedString("Owner Keys", comment: "") + return NSLocalizedString("Owner keys", comment: "") case .voting: - return NSLocalizedString("Voting Keys", comment: "") + return NSLocalizedString("Voting keys", comment: "") case .operator: - return NSLocalizedString("Operator Keys", comment: "") + return NSLocalizedString("Operator keys", comment: "") case .hpmnOperator: - return NSLocalizedString("HPMN Operator Keys", comment: "") + return NSLocalizedString("HPMN Operator keys", comment: "") } } } diff --git a/DashWallet/Sources/UI/Menu/Tools/ToolsMenuScreen.swift b/DashWallet/Sources/UI/Menu/Tools/ToolsMenuScreen.swift index b39cf2092..073141f54 100644 --- a/DashWallet/Sources/UI/Menu/Tools/ToolsMenuScreen.swift +++ b/DashWallet/Sources/UI/Menu/Tools/ToolsMenuScreen.swift @@ -23,12 +23,14 @@ struct ToolsMenuScreen: View { private let vc: UINavigationController private let delegateInternal: DelegateInternal private let onImportPrivateKey: () -> () - + @StateObject private var viewModel = ToolsMenuViewModel() @State private var showCSVExportAlert = false @State private var showCSVExportActivity = false @State private var showZenLedgerSheet = false - + @State private var showImportPrivateKeySheet = false + @State private var showExtendedPublicKeySheet = false + init(vc: UINavigationController, onImportPrivateKey: @escaping () -> ()) { self.vc = vc self.onImportPrivateKey = onImportPrivateKey @@ -146,6 +148,30 @@ struct ToolsMenuScreen: View { ZenLedgerInfoSheet(safariLink: $viewModel.safariLink) } } + .sheet(isPresented: $showImportPrivateKeySheet) { + if #available(iOS 16.4, *) { + ImportPrivateKeySheet(onScanPrivateKey: onImportPrivateKey) + .presentationDetents([.height(460)]) + .presentationCornerRadius(32) + } else if #available(iOS 16.0, *) { + ImportPrivateKeySheet(onScanPrivateKey: onImportPrivateKey) + .presentationDetents([.height(460)]) + } else { + ImportPrivateKeySheet(onScanPrivateKey: onImportPrivateKey) + } + } + .sheet(isPresented: $showExtendedPublicKeySheet) { + if #available(iOS 16.4, *) { + ExtendedPublicKeySheet() + .presentationDetents([.height(640)]) + .presentationCornerRadius(32) + } else if #available(iOS 16.0, *) { + ExtendedPublicKeySheet() + .presentationDetents([.height(640)]) + } else { + ExtendedPublicKeySheet() + } + } } private func handleNavigation(_ destination: ToolsMenuNavigationDestination?) { @@ -171,15 +197,11 @@ struct ToolsMenuScreen: View { } private func showImportPrivateKey() { - let controller = DWImportWalletInfoViewController.createController() - controller.delegate = delegateInternal - vc.pushViewController(controller, animated: true) + showImportPrivateKeySheet = true } private func showExtendedPublicKeys() { - let controller = ExtendedPublicKeysViewController() - controller.hidesBottomBarWhenPushed = true - vc.pushViewController(controller, animated: true) + showExtendedPublicKeySheet = true } private func showMasternodeKeys() { @@ -204,6 +226,7 @@ struct ToolsMenuScreen: View { vc.present(controller, animated: true, completion: nil) } } + } extension DWImportWalletInfoViewController { @@ -218,11 +241,12 @@ extension DWImportWalletInfoViewController { extension ToolsMenuScreen { class DelegateInternal: NSObject, DWImportWalletInfoViewControllerDelegate { let onImportPrivateKey: () -> () - + init(onImportPrivateKey: @escaping () -> ()) { self.onImportPrivateKey = onImportPrivateKey } - + @objc func importWalletInfoViewControllerScanPrivateKeyAction(_ controller: DWImportWalletInfoViewController) { onImportPrivateKey() } } + } diff --git a/DashWallet/Sources/UI/Menu/Tools/ToolsMenuViewModel.swift b/DashWallet/Sources/UI/Menu/Tools/ToolsMenuViewModel.swift index b69353001..f16aa542c 100644 --- a/DashWallet/Sources/UI/Menu/Tools/ToolsMenuViewModel.swift +++ b/DashWallet/Sources/UI/Menu/Tools/ToolsMenuViewModel.swift @@ -48,7 +48,7 @@ class ToolsMenuViewModel: ObservableObject { } ), MenuItemModel( - title: NSLocalizedString("Extended Public Keys", comment: ""), + title: NSLocalizedString("Extended public key (BIP44)", comment: ""), icon: .custom("image.extend.public.key", maxHeight: 22), action: { [weak self] in self?.navigationDestination = .extendedPublicKeys diff --git a/DashWallet/Sources/UI/Payments/Receive/ReceiveViewController.swift b/DashWallet/Sources/UI/Payments/Receive/ReceiveViewController.swift index 320594960..61deb1950 100644 --- a/DashWallet/Sources/UI/Payments/Receive/ReceiveViewController.swift +++ b/DashWallet/Sources/UI/Payments/Receive/ReceiveViewController.swift @@ -16,6 +16,7 @@ // import Foundation +import SwiftUI // MARK: - ReceiveViewControllerDelegate @@ -45,13 +46,27 @@ class ReceiveViewController: BaseViewController { @objc func importPrivateKeyButtonAction() { - let controller = sb("ImportWalletInfo").instantiateInitialViewController() as! DWImportWalletInfoViewController - controller.delegate = self + let sheetView = ImportPrivateKeySheet { [weak self] in + // When scan button is tapped, trigger the delegate method + self?.delegate?.importPrivateKeyButtonAction(self!) + } - let nvc = BaseNavigationController(rootViewController: controller) - present(nvc, animated: true) + let hostingController = UIHostingController(rootView: sheetView) + + if #available(iOS 16.4, *) { + hostingController.sheetPresentationController?.detents = [.custom(resolver: { context in + return 460 + })] + hostingController.sheetPresentationController?.preferredCornerRadius = 32 + } else if #available(iOS 16.0, *) { + hostingController.sheetPresentationController?.detents = [.custom(resolver: { context in + return 460 + })] + } else if #available(iOS 15.0, *) { + hostingController.sheetPresentationController?.detents = [.medium()] + } - nvc.setCancelButtonHidden(false) + present(hostingController, animated: true) } required init?(coder: NSCoder) { @@ -90,28 +105,48 @@ extension ReceiveViewController { receiveContentView.layer.cornerRadius = radius mainStackView.addArrangedSubview(receiveContentView) - let importPrivateKeyButton = UIButton(type: .custom) - importPrivateKeyButton.addTarget(self, action: #selector(importPrivateKeyButtonAction), for: .touchUpInside) - importPrivateKeyButton.backgroundColor = .dw_background() - importPrivateKeyButton.contentHorizontalAlignment = .leading - importPrivateKeyButton.imageEdgeInsets = .init(top: 0, left: 17, bottom: 0, right: 0) - importPrivateKeyButton.titleEdgeInsets = .init(top: 0, left: 39, bottom: 0, right: 0) - importPrivateKeyButton.layer.cornerRadius = radius - importPrivateKeyButton.setImage(UIImage(named: "import-icon"), for: .normal) - importPrivateKeyButton.titleLabel?.font = .dw_font(forTextStyle: .subheadline) - importPrivateKeyButton.setTitleColor(.dw_label(), for: .normal) - importPrivateKeyButton.setTitle(NSLocalizedString("Import Private Key", comment: "Import Private Key"), for: .normal) - importPrivateKeyButton.isHidden = !allowedToImportPrivateKey - mainStackView.addArrangedSubview(importPrivateKeyButton) + // Import Private Key menu item (SwiftUI) + let importMenuItem = UIHostingController(rootView: + VStack(spacing: 0) { + MenuItem( + title: NSLocalizedString("Import Private Key", comment: "Import Private Key"), + subtitle: nil as String?, + details: nil, + topText: nil, + icon: .custom("image.import.private.key", maxHeight: 22), + secondaryIcon: nil, + showInfo: false, + showChevron: false, + badgeText: nil, + dashAmount: nil, + overrideFiatAmount: nil, + showToggle: false, + isToggled: false, + action: { [weak self] in + self?.importPrivateKeyButtonAction() + } + ) + .frame(minHeight: 60) + } + .padding(.vertical, 5) + .background(Color(uiColor: .dw_background())) + .cornerRadius(CGFloat(radius)) + ) + importMenuItem.view.translatesAutoresizingMaskIntoConstraints = false + importMenuItem.view.backgroundColor = UIColor.clear + importMenuItem.view.isHidden = !allowedToImportPrivateKey + + addChild(importMenuItem) + mainStackView.addArrangedSubview(importMenuItem.view) + importMenuItem.didMove(toParent: self) mainStackView.addArrangedSubview(EmptyUIView()) - + NSLayoutConstraint.activate([ mainStackView.topAnchor.constraint(equalTo: view.topAnchor), mainStackView.bottomAnchor.constraint(equalTo: view.bottomAnchor), mainStackView.leadingAnchor.constraint(equalTo: view.layoutMarginsGuide.leadingAnchor), - mainStackView.trailingAnchor.constraint(equalTo: view.layoutMarginsGuide.trailingAnchor), - importPrivateKeyButton.heightAnchor.constraint(equalToConstant: 64) + mainStackView.trailingAnchor.constraint(equalTo: view.layoutMarginsGuide.trailingAnchor) ]) } } @@ -143,12 +178,3 @@ extension ReceiveViewController: DWRequestAmountViewControllerDelegate { } } -// MARK: DWImportWalletInfoViewControllerDelegate - -extension ReceiveViewController: DWImportWalletInfoViewControllerDelegate { - func importWalletInfoViewControllerScanPrivateKeyAction(_ controller: DWImportWalletInfoViewController) { - controller.dismiss(animated: true) { - self.delegate?.importPrivateKeyButtonAction(self) - } - } -} diff --git a/DashWallet/Sources/UI/SwiftUI Components/BottomSheet.swift b/DashWallet/Sources/UI/SwiftUI Components/BottomSheet.swift index fe332cfad..889c78124 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/BottomSheet.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/BottomSheet.swift @@ -49,7 +49,7 @@ struct BottomSheet: View { .cornerRadius(2.50) Text(title) - .font(.subtitle1) + .font(.calloutMedium) .foregroundColor(.primaryText) .padding(.top, 10) } diff --git a/DashWallet/Sources/UI/SwiftUI Components/Button.swift b/DashWallet/Sources/UI/SwiftUI Components/Button.swift index df90b02f6..085092230 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/Button.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/Button.swift @@ -32,6 +32,8 @@ struct DashButton: View { case plain case outlined case filled + case filledBlue + case tintedBlue } enum Size { @@ -65,6 +67,7 @@ struct DashButton: View { Text(text) .font(.system(size: fontSize)) .fontWeight(.semibold) + .frame(height: lineHeight) .padding(.vertical, 2) } @@ -80,27 +83,39 @@ struct DashButton: View { .if(stretch) { view in view.frame(maxWidth: .infinity) } - .frame(minHeight: minimumHeight) - .background(backgroundColor) + .frame(height: minimumHeight) + .background( + RoundedRectangle(cornerRadius: cornerRadius, style: .continuous) + .fill(backgroundColor) + ) .overlay( - RoundedRectangle(cornerRadius: cornerRadius) + RoundedRectangle(cornerRadius: cornerRadius, style: .continuous) .stroke(borderColor, lineWidth: 2) ) - .cornerRadius(cornerRadius) .opacity(isEnabled ? 1.0 : 0.5) } + .buttonStyle(DashButtonStyle(cornerRadius: cornerRadius)) .disabled(!isEnabled || isLoading) .background(Color.clear) } private var backgroundColor: Color { if !isEnabled { - return Color.black.opacity(0.2) + switch style { + case .filledBlue: + return Color.blackAlpha5 + default: + return Color.black.opacity(0.2) + } } - + switch style { case .filled: return overridenBackgroundColor ?? Color.dashBlue + case .filledBlue: + return Color.blue + case .tintedBlue: + return Color.blueAlpha5 default: return Color.clear } @@ -108,12 +123,21 @@ struct DashButton: View { private var foregroundColor: Color { if !isEnabled { - return Color.black.opacity(0.6) + switch style { + case .filledBlue: + return Color.blackAlpha40 + default: + return Color.black.opacity(0.6) + } } - + switch style { case .filled: return Color.white + case .filledBlue: + return Color.white + case .tintedBlue: + return Color.blue default: return Color.primaryText } @@ -145,16 +169,29 @@ struct DashButton: View { } } - private var iconSize: CGFloat { + private var lineHeight: CGFloat { switch size { case .large: return 22 case .medium: return 20 case .small: + return 18 + case .extraSmall: return 16 + } + } + + private var iconSize: CGFloat { + switch size { + case .large: + return 22 + case .medium: + return 20 + case .small: + return 18 case .extraSmall: - return 13 + return 16 } } @@ -187,26 +224,26 @@ struct DashButton: View { private var cornerRadius: CGFloat { switch size { case .large: - return 12 + return 16 case .medium: - return 10 + return 14 case .small: - return 8 + return 11 case .extraSmall: - return 6 + return 9 } } private var minimumHeight: CGFloat { switch size { case .large: - return 48 + return 50 case .medium: - return 42 + return 40 case .small: - return 36 - default: - return 28 + return 30 + case .extraSmall: + return 24 } } } @@ -235,8 +272,20 @@ extension View { func overrideForegroundColor(_ color: Color?) -> some View { environment(\.overrideForegroundColor, color) } - + func overrideBackgroundColor(_ color: Color?) -> some View { environment(\.overrideBackgroundColor, color) } } + +struct DashButtonStyle: ButtonStyle { + let cornerRadius: CGFloat + + func makeBody(configuration: Configuration) -> some View { + configuration.label + .overlay( + RoundedRectangle(cornerRadius: cornerRadius, style: .continuous) + .fill(Color.black.opacity(configuration.isPressed ? 0.2 : 0)) + ) + } +} diff --git a/DashWallet/Sources/UI/SwiftUI Components/Color+DWStyle.swift b/DashWallet/Sources/UI/SwiftUI Components/Color+DWStyle.swift index e6310da75..c28e98bd0 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/Color+DWStyle.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/Color+DWStyle.swift @@ -16,20 +16,34 @@ // import SwiftUI +import UIKit extension Color { + +// Text + static var primaryText: Color { Color("Label") } - + static var secondaryText: Color { Color("SecondaryTextColor") } - + static var tertiaryText: Color { Color("TertiaryTextColor") } + + static var whiteText: Color { + Color("White") + } +// System + + static var blue: Color { + Color("Blue") + } + static var dashBlue: Color { Color("DashBlueColor") } @@ -50,24 +64,142 @@ extension Color { Color("SystemYellowColor") } -// #FFC043 +// Blue + + static var blueAlpha5: Color { + Color("BlueAlpha5") + } + +// Black + + static var blackAlpha5: Color { + Color("BlackAlpha5") + } + + static var blackAlpha40: Color { + Color("BlackAlpha40") + } + +// Gray + + static var gray50: Color { + Color("Gray50") + } + + static var gray100: Color { + Color("Gray100") + } + + static var gray200: Color { + Color("Gray200") + } static var gray300: Color { Color("Gray300") } - + + static var gray300Alpha90: Color { + Color("Gray300Alpha90") + } + + static var gray300Alpha80: Color { + Color("Gray300Alpha80") + } + + static var gray300Alpha70: Color { + Color("Gray300Alpha70") + } + + static var gray300Alpha60: Color { + Color("Gray300Alpha60") + } + + static var gray300Alpha50: Color { + Color("Gray300Alpha50") + } + + static var gray300Alpha40: Color { + Color("Gray300Alpha40") + } + + static var gray300Alpha30: Color { + Color("Gray300Alpha30") + } + + static var gray300Alpha20: Color { + Color("Gray300Alpha20") + } + + static var gray300Alpha10: Color { + Color("Gray300Alpha10") + } + + static var gray300Alpha5: Color { + Color("Gray300Alpha5") + } + static var gray400: Color { - return Color("Gray400") + Color("Gray400") } static var gray500: Color { Color("Gray500") } - - static var gray50: Color { - Color("Gray50") + +// White + + static var white: Color { + Color("White") } - + + static var whiteAlpha90: Color { + Color("WhiteAlpha90") + } + + static var whiteAlpha80: Color { + Color("WhiteAlpha80") + } + + static var whiteAlpha70: Color { + Color("WhiteAlpha70") + } + + static var whiteAlpha60: Color { + Color("WhiteAlpha60") + } + + static var whiteAlpha50: Color { + Color("WhiteAlpha50") + } + + static var whiteAlpha40: Color { + Color("WhiteAlpha40") + } + + static var whiteAlpha30: Color { + Color("WhiteAlpha30") + } + + static var whiteAlpha20: Color { + Color("WhiteAlpha20") + } + + static var whiteAlpha15: Color { + Color("WhiteAlpha15") + } + + static var whiteAlpha10: Color { + Color("WhiteAlpha10") + } + + static var whiteAlpha5: Color { + Color("WhiteAlpha5") + } + + static var transparent: Color { + Color("Transparent") + } + // Background and secondary background are mismatched in the assests. // The correct values per the design: // Primary background: #F7F7F7 @@ -75,10 +207,15 @@ extension Color { static var primaryBackground: Color { Color("SecondaryBackgroundColor") } - + static var secondaryBackground: Color { Color("BackgroundColor") } + + // Alias for secondaryBackground for backwards compatibility + static var background: Color { + Color("BackgroundColor") + } static var shadow: Color { Color(UIColor { traitCollection in diff --git a/DashWallet/Sources/UI/SwiftUI Components/Dialogs/ConfirmSpendDialog.swift b/DashWallet/Sources/UI/SwiftUI Components/Dialogs/ConfirmSpendDialog.swift index 4e95e425d..36b9dd47c 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/Dialogs/ConfirmSpendDialog.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/Dialogs/ConfirmSpendDialog.swift @@ -30,9 +30,9 @@ struct ConfirmSpendDialog: View { VStack(spacing: 4) { Text(String.localizedStringWithFormat(NSLocalizedString("You chose “%@” as your username.", comment: "Usernames"), username)) - .font(.body2) + .font(.subhead) Text(NSLocalizedString("Please note that the username can NOT be changed once it is registered.", comment: "Usernames")) - .font(.body2) + .font(.subhead) .multilineTextAlignment(.center) } .padding(.top, 15) @@ -75,7 +75,7 @@ struct ConfirmSpendDialog: View { private func FormattedFiatText(from dashAmount: Int64) -> some View { let text = (try? CurrencyExchanger.shared.convertDash(amount: abs(dashAmount.dashAmount), to: App.fiatCurrency).formattedFiatAmount) ?? NSLocalizedString("Not available", comment: "") Text(text) - .font(.body2) + .font(.subhead) .foregroundColor(.secondaryText) } } diff --git a/DashWallet/Sources/UI/SwiftUI Components/Dialogs/ModalDialog.swift b/DashWallet/Sources/UI/SwiftUI Components/Dialogs/ModalDialog.swift index fb388ce16..053d4c684 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/Dialogs/ModalDialog.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/Dialogs/ModalDialog.swift @@ -73,13 +73,13 @@ struct ModalDialog: View { } Text(heading) - .font(.subtitle1) + .font(.calloutMedium) .lineSpacing(3) .multilineTextAlignment(.center) if let text = textBlock1 { Text(text) - .font(.body2) + .font(.subhead) .lineSpacing(3) .multilineTextAlignment(.center) .foregroundColor(.secondaryText) @@ -88,7 +88,7 @@ struct ModalDialog: View { if let text = textBlock2 { Text(text) - .font(.body2) + .font(.subhead) .lineSpacing(3) .multilineTextAlignment(.center) .foregroundColor(.secondaryText) diff --git a/DashWallet/Sources/UI/SwiftUI Components/FeatureTopText.swift b/DashWallet/Sources/UI/SwiftUI Components/FeatureTopText.swift index aee09b29a..5ffa74290 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/FeatureTopText.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/FeatureTopText.swift @@ -29,7 +29,7 @@ struct FeatureTopText: View { var body: some View { VStack(alignment: getStackAlignment(), spacing: 6) { Text(title) - .font(.h5Bold) + .font(.title1) .multilineTextAlignment(alignment) .lineLimit(2) .fixedSize(horizontal: false, vertical: true) @@ -38,7 +38,7 @@ struct FeatureTopText: View { if let text = text { Text(text) - .font(.body2) + .font(.subhead) .multilineTextAlignment(alignment) .lineSpacing(3) .foregroundColor(.secondaryText) diff --git a/DashWallet/Sources/UI/SwiftUI Components/Font+DWStyle.swift b/DashWallet/Sources/UI/SwiftUI Components/Font+DWStyle.swift index 824763e1b..365fb8b08 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/Font+DWStyle.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/Font+DWStyle.swift @@ -18,7 +18,49 @@ import SwiftUI extension Font { - public static let subtitle1: Font = .system(size: 16, weight: .semibold) - public static let body2: Font = .system(size: 14) - public static let h5Bold: Font = .system(size: 24, weight: .bold) + // MARK: - Titles + + /// Large Title: 34pt Bold (line height: 41pt) + public static let largeTitle: Font = .system(size: 34, weight: .bold) + + /// Title 1: 28pt Bold (line height: 34pt) + public static let title1: Font = .system(size: 28, weight: .bold) + + /// Title 2: 22pt Bold (line height: 28pt) + public static let title2: Font = .system(size: 22, weight: .bold) + + /// Title 3: 20pt Bold (line height: 25pt) + public static let title3: Font = .system(size: 20, weight: .bold) + + // MARK: - Text Styles + + /// Headline: 17pt Bold (line height: 22pt) + public static let headline: Font = .system(size: 17, weight: .bold) + + /// Body: 17pt Regular (line height: 22pt) + public static let body: Font = .system(size: 17, weight: .regular) + + /// Callout: 16pt Regular (line height: 21pt) + public static let callout: Font = .system(size: 16, weight: .regular) + + /// Callout Medium: 16pt Semibold (line height: 21pt) + public static let calloutMedium: Font = .system(size: 16, weight: .semibold) + + /// Subhead Regular: 15pt Regular (line height: 20pt) + public static let subhead: Font = .system(size: 15, weight: .regular) + + /// Subhead Medium: 15pt Medium (line height: 20pt) + public static let subheadMedium: Font = .system(size: 15, weight: .medium) + + /// Footnote Regular: 13pt Regular (line height: 18pt) + public static let footnote: Font = .system(size: 13, weight: .regular) + + /// Footnote Medium: 13pt Medium (line height: 18pt) + public static let footnoteMedium: Font = .system(size: 13, weight: .medium) + + /// Caption 1: 12pt Regular (line height: 16pt) + public static let caption1: Font = .system(size: 12, weight: .regular) + + /// Caption 2: 11pt Regular (line height: 13pt) + public static let caption2: Font = .system(size: 11, weight: .regular) } diff --git a/DashWallet/Sources/UI/SwiftUI Components/MerchantDenominations.swift b/DashWallet/Sources/UI/SwiftUI Components/MerchantDenominations.swift index 5a6bd454b..0cc27f069 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/MerchantDenominations.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/MerchantDenominations.swift @@ -41,11 +41,11 @@ struct MerchantDenominations: View { var body: some View { VStack(alignment: .leading, spacing: 0) { Text(NSLocalizedString("Select amount", comment: "DashSpend")) - .font(.h5Bold) + .font(.title1) .foregroundColor(.primaryText) Text(NSLocalizedString("This merchant sells gift cards at fixed prices", comment: "DashSpend")) - .font(.body2) + .font(.subhead) .foregroundColor(.secondaryText) .padding(.top, 4) @@ -85,7 +85,7 @@ private struct DenominationChip: View { var body: some View { Button(action: onTap) { Text(formattedValue) - .font(.subtitle1) + .font(.calloutMedium) .foregroundColor(.primaryText) .multilineTextAlignment(.center) .frame(maxWidth: .infinity) diff --git a/DashWallet/Sources/UI/SwiftUI Components/NavigationBar.swift b/DashWallet/Sources/UI/SwiftUI Components/NavigationBar.swift new file mode 100644 index 000000000..f18b57389 --- /dev/null +++ b/DashWallet/Sources/UI/SwiftUI Components/NavigationBar.swift @@ -0,0 +1,254 @@ +// +// NavigationBar.swift +// DashWallet +// +// Reusable navigation bar components for consistent navigation across the app. +// Each variant provides a specific navigation pattern with consistent styling. +// +// Copyright © 2026 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI + +// MARK: - NavBarBack + +/// Navigation bar with only a back button +/// +/// A minimal navigation bar with just a back button on the left side. +/// Provides consistent styling and behavior across the app: +/// - 64pt height navigation container +/// - Circular back button with 44x44pt touch area +/// - 34pt circular border with custom styling +/// - Dark mode support with automatic icon switching +/// - Proper visual centering with -1pt offset +/// +/// Usage: +/// ```swift +/// NavBarBack { +/// navigationController?.popViewController(animated: true) +/// } +/// ``` +struct NavBarBack: View { + @Environment(\.colorScheme) private var colorScheme + let onBack: () -> Void + + var body: some View { + HStack { + Button(action: onBack) { + ZStack { + // Touch area (44x44) + Color.clear + .frame(width: 44, height: 44) + + // Circular border (34x34) + Circle() + .stroke(borderColor, lineWidth: 1.5) + .frame(width: 34, height: 34) + + // Chevron icon (12pt height, -1pt horizontal offset for visual centering) + Image(iconName) + .resizable() + .aspectRatio(contentMode: .fit) + .frame(height: 12) + .offset(x: -1) + .foregroundColor(.primaryText) + } + } + .padding(.leading, 20) + + Spacer() + } + .frame(height: 64) + } + + private var borderColor: Color { + .gray300Alpha30 + } + + private var iconName: String { + colorScheme == .dark ? "controls-back-dark-mode" : "controls-back" + } +} + +// MARK: - NavBarBackPlus + +/// Navigation bar with a back button on the left and an add button on the right. +/// +/// Mirrors the styling of `NavBarBack` on both sides: +/// - 64pt height navigation container +/// - Circular back button (left) with chevron icon +/// - Circular add button (right) with "toolbar-plus" icon (11pt height) +/// - 34pt circular border with custom styling on both buttons +/// - Dark mode support +/// +/// Usage: +/// ```swift +/// NavBarBackPlus(onBack: { dismiss() }, onAdd: { viewModel.addItem() }) +/// ``` +struct NavBarBackPlus: View { + @Environment(\.colorScheme) private var colorScheme + let onBack: () -> Void + let onAdd: () -> Void + + var body: some View { + HStack { + // Back button (left) + Button(action: onBack) { + ZStack { + Color.clear + .frame(width: 44, height: 44) + + Circle() + .stroke(borderColor, lineWidth: 1.5) + .frame(width: 34, height: 34) + + Image(backIconName) + .resizable() + .aspectRatio(contentMode: .fit) + .frame(height: 12) + .offset(x: -1) + .foregroundColor(.primaryText) + } + } + .padding(.leading, 20) + + Spacer() + + // Add button (right) + Button(action: onAdd) { + ZStack { + Color.clear + .frame(width: 44, height: 44) + + Circle() + .stroke(borderColor, lineWidth: 1.5) + .frame(width: 34, height: 34) + + Image("toolbar-plus") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(height: 11) + .foregroundColor(.primaryText) + } + } + .padding(.trailing, 20) + } + .frame(height: 64) + } + + private var borderColor: Color { + .gray300Alpha30 + } + + private var backIconName: String { + colorScheme == .dark ? "controls-back-dark-mode" : "controls-back" + } +} + +// MARK: - NavBarClose + +/// Navigation bar with only a close button on the right side. +/// +/// Used for modal/sheet presentations where a dismiss action is needed: +/// - 64pt height navigation container +/// - Circular close button (right) with "toolbar-plus" X icon (11pt height) +/// - 34pt circular border with custom styling +/// - Dark mode support +/// +/// Usage: +/// ```swift +/// NavBarClose { +/// dismiss() +/// } +/// ``` +struct NavBarClose: View { + let onClose: () -> Void + + var body: some View { + HStack { + Spacer() + + // Close button (right) + Button(action: onClose) { + ZStack { + Color.clear + .frame(width: 44, height: 44) + + Circle() + .stroke(Color.gray300Alpha30, lineWidth: 1.5) + .frame(width: 34, height: 34) + + Image("toolbar-close") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(height: 11) + .foregroundColor(.primaryText) + } + } + .padding(.trailing, 20) + } + .frame(height: 64) + } +} + +// MARK: - Legacy Support + +/// Legacy name for NavBarBack - use NavBarBack instead +@available(*, deprecated, renamed: "NavBarBack", message: "Use NavBarBack for clarity") +typealias NavigationBar = NavBarBack + +// MARK: - Previews + +struct NavigationBar_Previews: PreviewProvider { + static var previews: some View { + VStack(spacing: 0) { + NavBarBack { + print("Back tapped") + } + + Spacer() + } + .previewDisplayName("NavBarBack - Light") + + VStack(spacing: 0) { + NavBarBack { + print("Back tapped") + } + + Spacer() + } + .preferredColorScheme(.dark) + .previewDisplayName("NavBarBack - Dark") + + VStack(spacing: 0) { + NavBarClose { + print("Close tapped") + } + + Spacer() + } + .previewDisplayName("NavBarClose - Light") + + VStack(spacing: 0) { + NavBarClose { + print("Close tapped") + } + + Spacer() + } + .preferredColorScheme(.dark) + .previewDisplayName("NavBarClose - Dark") + } +} diff --git a/DashWallet/Sources/UI/SwiftUI Components/RadioButtonRow.swift b/DashWallet/Sources/UI/SwiftUI Components/RadioButtonRow.swift index 9fba1e465..a7fa0613f 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/RadioButtonRow.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/RadioButtonRow.swift @@ -52,7 +52,7 @@ struct RadioButtonRow: View { VStack(alignment: .leading, spacing: 0) { Text(title) - .font(.body2) + .font(.subhead) .fontWeight(.medium) .foregroundColor(.primaryText) @@ -67,7 +67,7 @@ struct RadioButtonRow: View { if let trailingText = trailingText { Text(trailingText) - .font(.body2) + .font(.subhead) .fontWeight(.medium) .foregroundColor(.primaryText) } diff --git a/DashWallet/Sources/UI/SwiftUI Components/TextInput.swift b/DashWallet/Sources/UI/SwiftUI Components/TextInput.swift index d65cda0c4..1fff2dc98 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/TextInput.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/TextInput.swift @@ -34,7 +34,7 @@ struct TextInput: View { VStack(alignment: .leading, spacing: 0) { ZStack(alignment: .leading) { Text(label) - .font(.body2) + .font(.subhead) .foregroundColor(.secondaryText) .offset(y: labelOffset) .scaleEffect(labelScale, anchor: .leading) @@ -45,7 +45,7 @@ struct TextInput: View { .textInputAutocapitalization(autocapitalization) .focused($isFocused) .autocorrectionDisabled(true) - .font(.body2) + .font(.subhead) .padding(.top, 15) .disabled(!isEnabled) .onSubmit { diff --git a/DashWallet/Sources/UI/SwiftUI Components/ValidationCheck.swift b/DashWallet/Sources/UI/SwiftUI Components/ValidationCheck.swift index d447e8be0..141dbf74b 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/ValidationCheck.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/ValidationCheck.swift @@ -34,7 +34,7 @@ struct ValidationCheck: View { } Text(text) .foregroundColor(.primaryText) - .font(.body2) + .font(.subhead) } } diff --git a/DashWallet/Sources/UI/Tx/Details/BlockExplorerSelectionView.swift b/DashWallet/Sources/UI/Tx/Details/BlockExplorerSelectionView.swift index c98618094..1342ff204 100644 --- a/DashWallet/Sources/UI/Tx/Details/BlockExplorerSelectionView.swift +++ b/DashWallet/Sources/UI/Tx/Details/BlockExplorerSelectionView.swift @@ -19,7 +19,7 @@ struct BlockExplorerSelectionView: View { .frame(width: 24, height: 24) Text(explorer.title) - .font(.body2) + .font(.subhead) .fontWeight(.medium) .foregroundColor(.primaryText) diff --git a/DashWallet/Sources/UI/Tx/Details/Views/BlockExplorerSelectionView.swift b/DashWallet/Sources/UI/Tx/Details/Views/BlockExplorerSelectionView.swift index 1013e835b..a79d821b9 100644 --- a/DashWallet/Sources/UI/Tx/Details/Views/BlockExplorerSelectionView.swift +++ b/DashWallet/Sources/UI/Tx/Details/Views/BlockExplorerSelectionView.swift @@ -7,7 +7,7 @@ struct BlockExplorerSelectionView: View { var body: some View { VStack(spacing: 0) { Text(NSLocalizedString("Select block explorer", comment: "Block explorer selection title")) - .font(.subtitle1) + .font(.calloutMedium) .foregroundColor(.primaryText) .padding(.vertical, 16) @@ -24,7 +24,7 @@ struct BlockExplorerSelectionView: View { .frame(width: 26, height: 26) Text(explorer.title) - .font(.body2) + .font(.subhead) .foregroundColor(.primaryText) Spacer() diff --git a/DashWallet/ar.lproj/Localizable.strings b/DashWallet/ar.lproj/Localizable.strings index afe8bd457..91732650f 100644 Binary files a/DashWallet/ar.lproj/Localizable.strings and b/DashWallet/ar.lproj/Localizable.strings differ diff --git a/DashWallet/ar.lproj/Localizable.stringsdict b/DashWallet/ar.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/ar.lproj/Localizable.stringsdict +++ b/DashWallet/ar.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/bg.lproj/Localizable.strings b/DashWallet/bg.lproj/Localizable.strings index a32d31038..bf9a4deea 100644 Binary files a/DashWallet/bg.lproj/Localizable.strings and b/DashWallet/bg.lproj/Localizable.strings differ diff --git a/DashWallet/bg.lproj/Localizable.stringsdict b/DashWallet/bg.lproj/Localizable.stringsdict index 860eb4cf2..b43b47fe0 100644 --- a/DashWallet/bg.lproj/Localizable.stringsdict +++ b/DashWallet/bg.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ @@ -22,21 +22,65 @@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/ca.lproj/Localizable.strings b/DashWallet/ca.lproj/Localizable.strings index 7b3a96d0b..4b7f73348 100644 Binary files a/DashWallet/ca.lproj/Localizable.strings and b/DashWallet/ca.lproj/Localizable.strings differ diff --git a/DashWallet/ca.lproj/Localizable.stringsdict b/DashWallet/ca.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/ca.lproj/Localizable.stringsdict +++ b/DashWallet/ca.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/cs.lproj/Localizable.strings b/DashWallet/cs.lproj/Localizable.strings index ff6301022..dbb1da95f 100644 Binary files a/DashWallet/cs.lproj/Localizable.strings and b/DashWallet/cs.lproj/Localizable.strings differ diff --git a/DashWallet/cs.lproj/Localizable.stringsdict b/DashWallet/cs.lproj/Localizable.stringsdict index 1f3a81cb4..1897b56fc 100644 --- a/DashWallet/cs.lproj/Localizable.stringsdict +++ b/DashWallet/cs.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ @@ -26,21 +26,65 @@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/da.lproj/Localizable.strings b/DashWallet/da.lproj/Localizable.strings index a61ea1d49..9925986ec 100644 Binary files a/DashWallet/da.lproj/Localizable.strings and b/DashWallet/da.lproj/Localizable.strings differ diff --git a/DashWallet/da.lproj/Localizable.stringsdict b/DashWallet/da.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/da.lproj/Localizable.stringsdict +++ b/DashWallet/da.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/de.lproj/Localizable.strings b/DashWallet/de.lproj/Localizable.strings index 3273a0d19..8db9665ac 100644 Binary files a/DashWallet/de.lproj/Localizable.strings and b/DashWallet/de.lproj/Localizable.strings differ diff --git a/DashWallet/de.lproj/Localizable.stringsdict b/DashWallet/de.lproj/Localizable.stringsdict index a7bb85eda..fe81a5e61 100644 --- a/DashWallet/de.lproj/Localizable.stringsdict +++ b/DashWallet/de.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ @@ -29,9 +29,9 @@ NSStringFormatValueTypeKey d one - %d Händler in &@ + %d Händler in %@ other - %d Händler in &@ + %d Händler in %@ %d merchant(s) diff --git a/DashWallet/el.lproj/Localizable.stringsdict b/DashWallet/el.lproj/Localizable.stringsdict index 46b8fbd78..e90f56689 100644 --- a/DashWallet/el.lproj/Localizable.stringsdict +++ b/DashWallet/el.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/en.lproj/Localizable.strings b/DashWallet/en.lproj/Localizable.strings index d8495bcbf..14a4050e5 100644 --- a/DashWallet/en.lproj/Localizable.strings +++ b/DashWallet/en.lproj/Localizable.strings @@ -1106,7 +1106,7 @@ "How to use your gift card" = "How to use your gift card"; /* No comment provided by engineer. */ -"HPMN Operator Keys" = "Evolution Node ID Keys"; +"HPMN Operator keys" = "HPMN Operator keys"; /* No comment provided by engineer. */ "I Accept" = "I Accept"; @@ -1491,7 +1491,7 @@ "Masternode IP address" = "Masternode IP address"; /* No comment provided by engineer. */ -"Masternode Keys" = "Masternode Keys"; +"Masternode keys" = "Masternode keys"; /* No comment provided by engineer. */ "masternode list #%d of %d" = "masternode list #%1$d of %2$d"; @@ -1719,7 +1719,7 @@ "Only with links" = "Only with links"; /* No comment provided by engineer. */ -"Operator Keys" = "Operator Keys"; +"Operator keys" = "Operator keys"; /* No comment provided by engineer. */ "or" = "or"; @@ -1734,7 +1734,7 @@ "Owner Address" = "Owner Address"; /* No comment provided by engineer. */ -"Owner Keys" = "Owner Keys"; +"Owner keys" = "Owner keys"; /* DashSpend */ "Password" = "Password"; @@ -2836,7 +2836,7 @@ "Voting is only required in some cases" = "Voting is only required in some cases"; /* No comment provided by engineer. */ -"Voting Keys" = "Voting Keys"; +"Voting keys" = "Voting keys"; /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; diff --git a/DashWallet/en.lproj/Localizable.stringsdict b/DashWallet/en.lproj/Localizable.stringsdict index 4eae8a429..d551997ea 100644 --- a/DashWallet/en.lproj/Localizable.stringsdict +++ b/DashWallet/en.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/eo.lproj/Localizable.strings b/DashWallet/eo.lproj/Localizable.strings index 6b2d33866..a1fdc0d64 100644 Binary files a/DashWallet/eo.lproj/Localizable.strings and b/DashWallet/eo.lproj/Localizable.strings differ diff --git a/DashWallet/eo.lproj/Localizable.stringsdict b/DashWallet/eo.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/eo.lproj/Localizable.stringsdict +++ b/DashWallet/eo.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/es.lproj/Localizable.strings b/DashWallet/es.lproj/Localizable.strings index 21b9b3aea..5e47a1806 100644 Binary files a/DashWallet/es.lproj/Localizable.strings and b/DashWallet/es.lproj/Localizable.strings differ diff --git a/DashWallet/es.lproj/Localizable.stringsdict b/DashWallet/es.lproj/Localizable.stringsdict index 2dff267d9..1b68478cc 100644 --- a/DashWallet/es.lproj/Localizable.stringsdict +++ b/DashWallet/es.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/et.lproj/Localizable.strings b/DashWallet/et.lproj/Localizable.strings index 6a461e700..f653c0159 100644 Binary files a/DashWallet/et.lproj/Localizable.strings and b/DashWallet/et.lproj/Localizable.strings differ diff --git a/DashWallet/et.lproj/Localizable.stringsdict b/DashWallet/et.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/et.lproj/Localizable.stringsdict +++ b/DashWallet/et.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/fa.lproj/Localizable.strings b/DashWallet/fa.lproj/Localizable.strings index 105403b4a..fa812eac9 100644 Binary files a/DashWallet/fa.lproj/Localizable.strings and b/DashWallet/fa.lproj/Localizable.strings differ diff --git a/DashWallet/fa.lproj/Localizable.stringsdict b/DashWallet/fa.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/fa.lproj/Localizable.stringsdict +++ b/DashWallet/fa.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/fi.lproj/Localizable.strings b/DashWallet/fi.lproj/Localizable.strings index e4a2fc469..0836c2ccd 100644 Binary files a/DashWallet/fi.lproj/Localizable.strings and b/DashWallet/fi.lproj/Localizable.strings differ diff --git a/DashWallet/fi.lproj/Localizable.stringsdict b/DashWallet/fi.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/fi.lproj/Localizable.stringsdict +++ b/DashWallet/fi.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/fil.lproj/Localizable.strings b/DashWallet/fil.lproj/Localizable.strings index e2b483227..62a2f5232 100644 Binary files a/DashWallet/fil.lproj/Localizable.strings and b/DashWallet/fil.lproj/Localizable.strings differ diff --git a/DashWallet/fil.lproj/Localizable.stringsdict b/DashWallet/fil.lproj/Localizable.stringsdict index b84793711..bd787f2bd 100644 --- a/DashWallet/fil.lproj/Localizable.stringsdict +++ b/DashWallet/fil.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/fr.lproj/Localizable.strings b/DashWallet/fr.lproj/Localizable.strings index 596255358..67e8ac97a 100644 Binary files a/DashWallet/fr.lproj/Localizable.strings and b/DashWallet/fr.lproj/Localizable.strings differ diff --git a/DashWallet/fr.lproj/Localizable.stringsdict b/DashWallet/fr.lproj/Localizable.stringsdict index e406f2609..d2e185078 100644 --- a/DashWallet/fr.lproj/Localizable.stringsdict +++ b/DashWallet/fr.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/hr.lproj/Localizable.strings b/DashWallet/hr.lproj/Localizable.strings index d6aec9a28..6336be494 100644 Binary files a/DashWallet/hr.lproj/Localizable.strings and b/DashWallet/hr.lproj/Localizable.strings differ diff --git a/DashWallet/hr.lproj/Localizable.stringsdict b/DashWallet/hr.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/hr.lproj/Localizable.stringsdict +++ b/DashWallet/hr.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/hu.lproj/Localizable.strings b/DashWallet/hu.lproj/Localizable.strings index c46a7a3dc..51f0eb47f 100644 Binary files a/DashWallet/hu.lproj/Localizable.strings and b/DashWallet/hu.lproj/Localizable.strings differ diff --git a/DashWallet/hu.lproj/Localizable.stringsdict b/DashWallet/hu.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/hu.lproj/Localizable.stringsdict +++ b/DashWallet/hu.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/id.lproj/Localizable.stringsdict b/DashWallet/id.lproj/Localizable.stringsdict index a6663ca4c..03a6115b0 100644 --- a/DashWallet/id.lproj/Localizable.stringsdict +++ b/DashWallet/id.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/it.lproj/Localizable.strings b/DashWallet/it.lproj/Localizable.strings index 815b4b4bc..a73b12682 100644 Binary files a/DashWallet/it.lproj/Localizable.strings and b/DashWallet/it.lproj/Localizable.strings differ diff --git a/DashWallet/it.lproj/Localizable.stringsdict b/DashWallet/it.lproj/Localizable.stringsdict index b487336ab..7285ea190 100644 --- a/DashWallet/it.lproj/Localizable.stringsdict +++ b/DashWallet/it.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/ja.lproj/Localizable.strings b/DashWallet/ja.lproj/Localizable.strings index 97094fab3..94e4e2c3f 100644 Binary files a/DashWallet/ja.lproj/Localizable.strings and b/DashWallet/ja.lproj/Localizable.strings differ diff --git a/DashWallet/ja.lproj/Localizable.stringsdict b/DashWallet/ja.lproj/Localizable.stringsdict index 6b007eb98..f6abc2a50 100644 --- a/DashWallet/ja.lproj/Localizable.stringsdict +++ b/DashWallet/ja.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/ko.lproj/Localizable.strings b/DashWallet/ko.lproj/Localizable.strings index da24fbf75..533b89924 100644 Binary files a/DashWallet/ko.lproj/Localizable.strings and b/DashWallet/ko.lproj/Localizable.strings differ diff --git a/DashWallet/ko.lproj/Localizable.stringsdict b/DashWallet/ko.lproj/Localizable.stringsdict index 23d1551b0..f8b81ff77 100644 --- a/DashWallet/ko.lproj/Localizable.stringsdict +++ b/DashWallet/ko.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/mk.lproj/Localizable.strings b/DashWallet/mk.lproj/Localizable.strings index 4494ef2ed..44ee8a5e5 100644 Binary files a/DashWallet/mk.lproj/Localizable.strings and b/DashWallet/mk.lproj/Localizable.strings differ diff --git a/DashWallet/mk.lproj/Localizable.stringsdict b/DashWallet/mk.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/mk.lproj/Localizable.stringsdict +++ b/DashWallet/mk.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/ms.lproj/Localizable.strings b/DashWallet/ms.lproj/Localizable.strings index d794cfb65..b16fb6925 100644 Binary files a/DashWallet/ms.lproj/Localizable.strings and b/DashWallet/ms.lproj/Localizable.strings differ diff --git a/DashWallet/ms.lproj/Localizable.stringsdict b/DashWallet/ms.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/ms.lproj/Localizable.stringsdict +++ b/DashWallet/ms.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/nb.lproj/Localizable.strings b/DashWallet/nb.lproj/Localizable.strings index c853f50b0..ede99b9ad 100644 Binary files a/DashWallet/nb.lproj/Localizable.strings and b/DashWallet/nb.lproj/Localizable.strings differ diff --git a/DashWallet/nb.lproj/Localizable.stringsdict b/DashWallet/nb.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/nb.lproj/Localizable.stringsdict +++ b/DashWallet/nb.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/nl.lproj/Localizable.strings b/DashWallet/nl.lproj/Localizable.strings index 182208db7..20f556a2c 100644 Binary files a/DashWallet/nl.lproj/Localizable.strings and b/DashWallet/nl.lproj/Localizable.strings differ diff --git a/DashWallet/nl.lproj/Localizable.stringsdict b/DashWallet/nl.lproj/Localizable.stringsdict index 572a1839d..b19b43cb8 100644 --- a/DashWallet/nl.lproj/Localizable.stringsdict +++ b/DashWallet/nl.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/pl.lproj/Localizable.strings b/DashWallet/pl.lproj/Localizable.strings index aad8d95cc..2e567a627 100644 Binary files a/DashWallet/pl.lproj/Localizable.strings and b/DashWallet/pl.lproj/Localizable.strings differ diff --git a/DashWallet/pl.lproj/Localizable.stringsdict b/DashWallet/pl.lproj/Localizable.stringsdict index e313ea098..7cfb32a74 100644 --- a/DashWallet/pl.lproj/Localizable.stringsdict +++ b/DashWallet/pl.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/pt.lproj/Localizable.strings b/DashWallet/pt.lproj/Localizable.strings index e7efcb131..bff4574dc 100644 Binary files a/DashWallet/pt.lproj/Localizable.strings and b/DashWallet/pt.lproj/Localizable.strings differ diff --git a/DashWallet/pt.lproj/Localizable.stringsdict b/DashWallet/pt.lproj/Localizable.stringsdict index ba8e378ba..3e5b7b027 100644 --- a/DashWallet/pt.lproj/Localizable.stringsdict +++ b/DashWallet/pt.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/ro.lproj/Localizable.strings b/DashWallet/ro.lproj/Localizable.strings index 4aa70bc49..33879852c 100644 Binary files a/DashWallet/ro.lproj/Localizable.strings and b/DashWallet/ro.lproj/Localizable.strings differ diff --git a/DashWallet/ro.lproj/Localizable.stringsdict b/DashWallet/ro.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/ro.lproj/Localizable.stringsdict +++ b/DashWallet/ro.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/ru.lproj/Localizable.stringsdict b/DashWallet/ru.lproj/Localizable.stringsdict index 2183751b5..fbb32f046 100644 --- a/DashWallet/ru.lproj/Localizable.stringsdict +++ b/DashWallet/ru.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/sk.lproj/Localizable.strings b/DashWallet/sk.lproj/Localizable.strings index 122766a43..672e342ca 100644 Binary files a/DashWallet/sk.lproj/Localizable.strings and b/DashWallet/sk.lproj/Localizable.strings differ diff --git a/DashWallet/sk.lproj/Localizable.stringsdict b/DashWallet/sk.lproj/Localizable.stringsdict index fea5198d0..324b1ad58 100644 --- a/DashWallet/sk.lproj/Localizable.stringsdict +++ b/DashWallet/sk.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/sl.lproj/Localizable.strings b/DashWallet/sl.lproj/Localizable.strings index b9f60a4a8..4493eded2 100644 Binary files a/DashWallet/sl.lproj/Localizable.strings and b/DashWallet/sl.lproj/Localizable.strings differ diff --git a/DashWallet/sl.lproj/Localizable.stringsdict b/DashWallet/sl.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/sl.lproj/Localizable.stringsdict +++ b/DashWallet/sl.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/sl_SI.lproj/Localizable.strings b/DashWallet/sl_SI.lproj/Localizable.strings index 5b769cf0c..3558354d4 100644 Binary files a/DashWallet/sl_SI.lproj/Localizable.strings and b/DashWallet/sl_SI.lproj/Localizable.strings differ diff --git a/DashWallet/sl_SI.lproj/Localizable.stringsdict b/DashWallet/sl_SI.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/sl_SI.lproj/Localizable.stringsdict +++ b/DashWallet/sl_SI.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/sq.lproj/Localizable.strings b/DashWallet/sq.lproj/Localizable.strings index 910f2f3fd..585fb58d6 100644 Binary files a/DashWallet/sq.lproj/Localizable.strings and b/DashWallet/sq.lproj/Localizable.strings differ diff --git a/DashWallet/sq.lproj/Localizable.stringsdict b/DashWallet/sq.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/sq.lproj/Localizable.stringsdict +++ b/DashWallet/sq.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/sr.lproj/Localizable.strings b/DashWallet/sr.lproj/Localizable.strings index 20de803f0..eeff3c815 100644 Binary files a/DashWallet/sr.lproj/Localizable.strings and b/DashWallet/sr.lproj/Localizable.strings differ diff --git a/DashWallet/sr.lproj/Localizable.stringsdict b/DashWallet/sr.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/sr.lproj/Localizable.stringsdict +++ b/DashWallet/sr.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/sv.lproj/Localizable.strings b/DashWallet/sv.lproj/Localizable.strings index b950de904..2dc4c965c 100644 Binary files a/DashWallet/sv.lproj/Localizable.strings and b/DashWallet/sv.lproj/Localizable.strings differ diff --git a/DashWallet/sv.lproj/Localizable.stringsdict b/DashWallet/sv.lproj/Localizable.stringsdict index 4c5dcae6d..d551997ea 100644 --- a/DashWallet/sv.lproj/Localizable.stringsdict +++ b/DashWallet/sv.lproj/Localizable.stringsdict @@ -2,30 +2,85 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ + used + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld used + other + %ld used + %d merchant(s) in %@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/th.lproj/Localizable.strings b/DashWallet/th.lproj/Localizable.strings index 25420ceca..1b9f666f7 100644 Binary files a/DashWallet/th.lproj/Localizable.strings and b/DashWallet/th.lproj/Localizable.strings differ diff --git a/DashWallet/th.lproj/Localizable.stringsdict b/DashWallet/th.lproj/Localizable.stringsdict index 76ac13289..1abd0df70 100644 --- a/DashWallet/th.lproj/Localizable.stringsdict +++ b/DashWallet/th.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/tr.lproj/Localizable.strings b/DashWallet/tr.lproj/Localizable.strings index 20056e609..98531b54f 100644 Binary files a/DashWallet/tr.lproj/Localizable.strings and b/DashWallet/tr.lproj/Localizable.strings differ diff --git a/DashWallet/tr.lproj/Localizable.stringsdict b/DashWallet/tr.lproj/Localizable.stringsdict index 66bbbfbac..75c6cca47 100644 --- a/DashWallet/tr.lproj/Localizable.stringsdict +++ b/DashWallet/tr.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/uk.lproj/Localizable.strings b/DashWallet/uk.lproj/Localizable.strings index c16c36400..72e31788d 100644 Binary files a/DashWallet/uk.lproj/Localizable.strings and b/DashWallet/uk.lproj/Localizable.strings differ diff --git a/DashWallet/uk.lproj/Localizable.stringsdict b/DashWallet/uk.lproj/Localizable.stringsdict index 5a4fb7ca0..c912553c4 100644 --- a/DashWallet/uk.lproj/Localizable.stringsdict +++ b/DashWallet/uk.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/vi.lproj/Localizable.strings b/DashWallet/vi.lproj/Localizable.strings index 80bffb806..528ef1394 100644 Binary files a/DashWallet/vi.lproj/Localizable.strings and b/DashWallet/vi.lproj/Localizable.strings differ diff --git a/DashWallet/vi.lproj/Localizable.stringsdict b/DashWallet/vi.lproj/Localizable.stringsdict index 64ebfbdbf..d3cf6b607 100644 --- a/DashWallet/vi.lproj/Localizable.stringsdict +++ b/DashWallet/vi.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ @@ -20,21 +20,65 @@ NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant in %@ + other + %d merchants in %@ + %d merchant(s) NSStringLocalizedFormatKey %#@merchants@ + merchants + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d merchant + other + %d merchants + %d transaction(s) NSStringLocalizedFormatKey %#@transactions@ + transactions + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d transaction + other + %d transactions + %d key(s) NSStringLocalizedFormatKey %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d key + other + %d keys + diff --git a/DashWallet/zh-Hans.lproj/Localizable.strings b/DashWallet/zh-Hans.lproj/Localizable.strings index 7f2007de3..baefa864f 100644 --- a/DashWallet/zh-Hans.lproj/Localizable.strings +++ b/DashWallet/zh-Hans.lproj/Localizable.strings @@ -1103,7 +1103,7 @@ "How to use your gift card" = "How to use your gift card"; /* No comment provided by engineer. */ -"HPMN Operator Keys" = "Evolution Node ID Keys"; +"HPMN Operator keys" = "HPMN Operator keys"; /* No comment provided by engineer. */ "I Accept" = "I Accept"; @@ -1488,7 +1488,7 @@ "Masternode IP address" = "Masternode IP address"; /* No comment provided by engineer. */ -"Masternode Keys" = "Masternode Keys"; +"Masternode keys" = "Masternode keys"; /* No comment provided by engineer. */ "masternode list #%d of %d" = "masternode list #%1$d of %2$d"; @@ -1716,7 +1716,7 @@ "Only with links" = "Only with links"; /* No comment provided by engineer. */ -"Operator Keys" = "Operator Keys"; +"Operator keys" = "Operator keys"; /* No comment provided by engineer. */ "or" = "or"; @@ -1731,7 +1731,7 @@ "Owner Address" = "Owner Address"; /* No comment provided by engineer. */ -"Owner Keys" = "Owner Keys"; +"Owner keys" = "Owner keys"; /* DashSpend */ "Password" = "Password"; @@ -2830,7 +2830,7 @@ "Voting is only required in some cases" = "Voting is only required in some cases"; /* No comment provided by engineer. */ -"Voting Keys" = "Voting Keys"; +"Voting keys" = "Voting keys"; /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; diff --git a/DashWallet/zh-Hans.lproj/Localizable.stringsdict b/DashWallet/zh-Hans.lproj/Localizable.stringsdict index 2c5cca96b..bd7ea1c11 100644 --- a/DashWallet/zh-Hans.lproj/Localizable.stringsdict +++ b/DashWallet/zh-Hans.lproj/Localizable.stringsdict @@ -2,7 +2,21 @@ - %ld used(s) + %d key(s) + + NSStringLocalizedFormatKey + %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + other + %d keys + + + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/zh-Hant-TW.lproj/Localizable.strings b/DashWallet/zh-Hant-TW.lproj/Localizable.strings index fce678650..3e1e6f27a 100644 --- a/DashWallet/zh-Hant-TW.lproj/Localizable.strings +++ b/DashWallet/zh-Hant-TW.lproj/Localizable.strings @@ -1103,7 +1103,7 @@ "How to use your gift card" = "How to use your gift card"; /* No comment provided by engineer. */ -"HPMN Operator Keys" = "Evolution Node ID Keys"; +"HPMN Operator keys" = "HPMN Operator keys"; /* No comment provided by engineer. */ "I Accept" = "I Accept"; @@ -1488,7 +1488,7 @@ "Masternode IP address" = "Masternode IP address"; /* No comment provided by engineer. */ -"Masternode Keys" = "Masternode Keys"; +"Masternode keys" = "Masternode keys"; /* No comment provided by engineer. */ "masternode list #%d of %d" = "masternode list #%1$d of %2$d"; @@ -1716,7 +1716,7 @@ "Only with links" = "Only with links"; /* No comment provided by engineer. */ -"Operator Keys" = "Operator Keys"; +"Operator keys" = "Operator keys"; /* No comment provided by engineer. */ "or" = "or"; @@ -1731,7 +1731,7 @@ "Owner Address" = "Owner Address"; /* No comment provided by engineer. */ -"Owner Keys" = "Owner Keys"; +"Owner keys" = "Owner keys"; /* DashSpend */ "Password" = "Password"; @@ -2830,7 +2830,7 @@ "Voting is only required in some cases" = "Voting is only required in some cases"; /* No comment provided by engineer. */ -"Voting Keys" = "Voting Keys"; +"Voting keys" = "Voting keys"; /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; diff --git a/DashWallet/zh-Hant-TW.lproj/Localizable.stringsdict b/DashWallet/zh-Hant-TW.lproj/Localizable.stringsdict index 2c5cca96b..bd7ea1c11 100644 --- a/DashWallet/zh-Hant-TW.lproj/Localizable.stringsdict +++ b/DashWallet/zh-Hant-TW.lproj/Localizable.stringsdict @@ -2,7 +2,21 @@ - %ld used(s) + %d key(s) + + NSStringLocalizedFormatKey + %#@keys@ + keys + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + other + %d keys + + + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/zh.lproj/Localizable.stringsdict b/DashWallet/zh.lproj/Localizable.stringsdict index c54deed6b..ff54396e2 100644 --- a/DashWallet/zh.lproj/Localizable.stringsdict +++ b/DashWallet/zh.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/DashWallet/zh_TW.lproj/Localizable.stringsdict b/DashWallet/zh_TW.lproj/Localizable.stringsdict index dd915f88d..f5570a84b 100644 --- a/DashWallet/zh_TW.lproj/Localizable.stringsdict +++ b/DashWallet/zh_TW.lproj/Localizable.stringsdict @@ -2,7 +2,7 @@ - %ld used(s) + %ld used NSStringLocalizedFormatKey %#@used@ diff --git a/Podfile b/Podfile index 15bb0ca45..620096cfe 100644 --- a/Podfile +++ b/Podfile @@ -62,8 +62,8 @@ end target 'TodayExtension' do - platform :ios, '13.0' - + platform :ios, '14.0' + pod 'DSDynamicOptions', '0.1.2' end diff --git a/Podfile.lock b/Podfile.lock index 61ec034de..9cd7b0f6d 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -565,7 +565,7 @@ PODS: - abseil/base/base_internal - abseil/base/config - abseil/meta/type_traits - - Alamofire (5.10.2) + - Alamofire (5.11.0) - BlueCryptor (1.0.32) - BlueECC (1.2.5) - BlueRSA (1.0.200) @@ -717,9 +717,9 @@ PODS: - SDWebImage/Core (5.21.0) - SDWebImageSwiftUI (3.1.3): - SDWebImage (~> 5.10) - - SQLite.swift (0.15.4): - - SQLite.swift/standard (= 0.15.4) - - SQLite.swift/standard (0.15.4) + - SQLite.swift (0.15.5): + - SQLite.swift/standard (= 0.15.5) + - SQLite.swift/standard (0.15.5) - SQLiteMigrationManager.swift (0.8.3): - SQLiteMigrationManager.swift/standard (= 0.8.3) - SQLiteMigrationManager.swift/standard (0.8.3): @@ -829,7 +829,7 @@ SPEC CHECKSUMS: "!ProtoCompiler": e9c09244955a8565817aa59a4787b6bb849a63c6 "!ProtoCompiler-gRPCPlugin": 755f0ee414a0d5f0028e0dcfe98c23bdbc3e6fa3 abseil: 926fb7a82dc6d2b8e1f2ed7f3a718bce691d1e46 - Alamofire: 7193b3b92c74a07f85569e1a6c4f4237291e7496 + Alamofire: bd5e7b23a1a750975288482c1831d71e74415f86 BlueCryptor: b0aee3d9b8f367b49b30de11cda90e1735571c24 BlueECC: 0d18e93347d3ec6d41416de21c1ffa4d4cd3c2cc BlueRSA: dfeef51db96bcc4edec654956c1581adbda4e6a3 @@ -867,7 +867,7 @@ SPEC CHECKSUMS: Protobuf: 164aea2ae380c3951abdc3e195220c01d17400e0 SDWebImage: f84b0feeb08d2d11e6a9b843cb06d75ebf5b8868 SDWebImageSwiftUI: a6d7129fb68fc18c8b930b869ddcfce314e49ded - SQLite.swift: a107c734115fea616a4ad31371d39f1637e8de56 + SQLite.swift: c38c92f61436f1a4053029550edb1ef7caa2a2cd SQLiteMigrationManager.swift: b63bb5eaf834f8e8cc78b37fdf2ce064e35914cd SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef SwiftJWT: 88c412708f58c169d431d344c87bc79a87c830ae @@ -876,6 +876,6 @@ SPEC CHECKSUMS: TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863 UIViewController-KeyboardAdditions: a691dc7e63a49854d341455a778ee8497dfc4662 -PODFILE CHECKSUM: 8b32f827354f60618ae47e98932aed8c55989ce7 +PODFILE CHECKSUM: cee10358e8137c68f8eb646c9c0fbf397d69ae4b COCOAPODS: 1.15.2 diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/BackgroundColor.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/BackgroundColor.colorset/Contents.json index 66a06d8fe..d8d88dd78 100644 --- a/Shared/Resources/SharedAssets.xcassets/Colors/BackgroundColor.colorset/Contents.json +++ b/Shared/Resources/SharedAssets.xcassets/Colors/BackgroundColor.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "38", - "green" : "35", - "red" : "32" + "blue" : "0x1F", + "green" : "0x1C", + "red" : "0x19" } }, "idiom" : "universal" diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/Black.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/Black.colorset/Contents.json new file mode 100644 index 000000000..7e8f38fe3 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/Black.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/Black900.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/Black900.colorset/Contents.json new file mode 100644 index 000000000..3a5c28357 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/Black900.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x2E", + "green" : "0x2B", + "red" : "0x29" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha10.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha10.colorset/Contents.json new file mode 100644 index 000000000..9bb26b795 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha10.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.100", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha20.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha20.colorset/Contents.json new file mode 100644 index 000000000..9a6a7a7b7 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha20.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.200", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha30.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha30.colorset/Contents.json new file mode 100644 index 000000000..a4343f72f --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha30.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.300", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha40.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha40.colorset/Contents.json new file mode 100644 index 000000000..b585c06c9 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha40.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.400", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha5.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha5.colorset/Contents.json new file mode 100644 index 000000000..6446c278e --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha5.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.050", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha50.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha50.colorset/Contents.json new file mode 100644 index 000000000..69c422e62 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha50.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.500", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha60.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha60.colorset/Contents.json new file mode 100644 index 000000000..63290aaac --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha60.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.600", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha70.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha70.colorset/Contents.json new file mode 100644 index 000000000..e984e4f26 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha70.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.700", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha80.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha80.colorset/Contents.json new file mode 100644 index 000000000..5faba5b26 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha80.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.800", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha90.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha90.colorset/Contents.json new file mode 100644 index 000000000..a430f404c --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/BlackAlpha90.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.900", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Blue/Blue.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/Blue.colorset/Contents.json new file mode 100644 index 000000000..732624a73 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/Blue.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xE4", + "green" : "0x8D", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha10.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha10.colorset/Contents.json new file mode 100644 index 000000000..2f8fdd2b5 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha10.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.100", + "blue" : "0xE4", + "green" : "0x8D", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha20.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha20.colorset/Contents.json new file mode 100644 index 000000000..e7efcef58 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha20.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.200", + "blue" : "0xE4", + "green" : "0x8D", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha30.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha30.colorset/Contents.json new file mode 100644 index 000000000..1a9e4c243 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha30.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.300", + "blue" : "0xE4", + "green" : "0x8D", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha40.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha40.colorset/Contents.json new file mode 100644 index 000000000..172f01eae --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha40.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.400", + "blue" : "0xE4", + "green" : "0x8D", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha5.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha5.colorset/Contents.json new file mode 100644 index 000000000..7389f4f04 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha5.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.050", + "blue" : "0xE4", + "green" : "0x8D", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha50.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha50.colorset/Contents.json new file mode 100644 index 000000000..74866f85c --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/BlueAlpha50.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.500", + "blue" : "0xE4", + "green" : "0x8D", + "red" : "0x00" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Blue/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Blue/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/DashNavigationBarBlueColor.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/DashNavigationBarBlueColor.colorset/Contents.json index 245b3f2c9..b46c138dc 100644 --- a/Shared/Resources/SharedAssets.xcassets/Colors/DashNavigationBarBlueColor.colorset/Contents.json +++ b/Shared/Resources/SharedAssets.xcassets/Colors/DashNavigationBarBlueColor.colorset/Contents.json @@ -1,23 +1,18 @@ { - "info" : { - "version" : 1, - "author" : "xcode" - }, "colors" : [ { - "idiom" : "universal", "color" : { "color-space" : "srgb", "components" : { - "red" : "0x00", "alpha" : "1.000", "blue" : "0xE3", - "green" : "0x8D" + "green" : "0x8D", + "red" : "0x00" } - } + }, + "idiom" : "universal" }, { - "idiom" : "universal", "appearances" : [ { "appearance" : "luminosity", @@ -27,12 +22,17 @@ "color" : { "color-space" : "srgb", "components" : { - "red" : "0x00", "alpha" : "1.000", - "blue" : "0x9A", - "green" : "0x59" + "blue" : "0xE4", + "green" : "0x8D", + "red" : "0x00" } - } + }, + "idiom" : "universal" } - ] -} \ No newline at end of file + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray100.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray100.colorset/Contents.json new file mode 100644 index 000000000..afdecb1fe --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray100.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF7", + "green" : "0xF6", + "red" : "0xF5" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray200.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray200.colorset/Contents.json new file mode 100644 index 000000000..afdecb1fe --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray200.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF7", + "green" : "0xF6", + "red" : "0xF5" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300.colorset/Contents.json new file mode 100644 index 000000000..76f8335b1 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xBC", + "green" : "0xB6", + "red" : "0xB0" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha10.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha10.colorset/Contents.json new file mode 100644 index 000000000..b8dd3ace5 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha10.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.100", + "blue" : "0xBC", + "green" : "0xB6", + "red" : "0xB0" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha20.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha20.colorset/Contents.json new file mode 100644 index 000000000..35104f33d --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha20.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.200", + "blue" : "0xBC", + "green" : "0xB6", + "red" : "0xB0" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha30.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha30.colorset/Contents.json new file mode 100644 index 000000000..4deb04109 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha30.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.300", + "blue" : "0xBC", + "green" : "0xB6", + "red" : "0xB0" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha40.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha40.colorset/Contents.json new file mode 100644 index 000000000..6160a422b --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha40.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.400", + "blue" : "0xBC", + "green" : "0xB6", + "red" : "0xB0" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha5.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha5.colorset/Contents.json new file mode 100644 index 000000000..4442df01e --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha5.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.050", + "blue" : "0xBC", + "green" : "0xB6", + "red" : "0xB0" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha50.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha50.colorset/Contents.json new file mode 100644 index 000000000..0d72231c7 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray300Alpha50.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.500", + "blue" : "0xBC", + "green" : "0xB6", + "red" : "0xB0" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray400.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray400.colorset/Contents.json new file mode 100644 index 000000000..2a285c548 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray400.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x8A", + "green" : "0x80", + "red" : "0x75" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray50.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray50.colorset/Contents.json new file mode 100644 index 000000000..afdecb1fe --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray50.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF7", + "green" : "0xF6", + "red" : "0xF5" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray500.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray500.colorset/Contents.json new file mode 100644 index 000000000..c6c6a6398 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Gray/Gray500.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x66", + "green" : "0x5C", + "red" : "0x52" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray300.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray300.colorset/Contents.json deleted file mode 100644 index 388c988ab..000000000 --- a/Shared/Resources/SharedAssets.xcassets/Colors/Gray300.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xBC", - "green" : "0xB6", - "red" : "0xB0" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xBC", - "green" : "0xB6", - "red" : "0xB0" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray400.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray400.colorset/Contents.json deleted file mode 100644 index c92513d78..000000000 --- a/Shared/Resources/SharedAssets.xcassets/Colors/Gray400.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x8A", - "green" : "0x80", - "red" : "0x75" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x8A", - "green" : "0x80", - "red" : "0x75" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray50.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray50.colorset/Contents.json deleted file mode 100644 index 4df7d0452..000000000 --- a/Shared/Resources/SharedAssets.xcassets/Colors/Gray50.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xF7", - "green" : "0xF6", - "red" : "0xF5" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xFF", - "green" : "0xFF", - "red" : "0xFF" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Gray500.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Gray500.colorset/Contents.json deleted file mode 100644 index 483af9b53..000000000 --- a/Shared/Resources/SharedAssets.xcassets/Colors/Gray500.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x66", - "green" : "0x5C", - "red" : "0x52" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x66", - "green" : "0x5C", - "red" : "0x52" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/GreenColor.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/GreenColor.colorset/Contents.json deleted file mode 100644 index c7fdfb867..000000000 --- a/Shared/Resources/SharedAssets.xcassets/Colors/GreenColor.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - }, - "colors" : [ - { - "idiom" : "universal", - "color" : { - "color-space" : "srgb", - "components" : { - "red" : "0x27", - "alpha" : "1.000", - "blue" : "0x09", - "green" : "0xC5" - } - } - } - ] -} \ No newline at end of file diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/OrangeColor.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/OrangeColor.colorset/Contents.json deleted file mode 100644 index 3ccd797b7..000000000 --- a/Shared/Resources/SharedAssets.xcassets/Colors/OrangeColor.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - }, - "colors" : [ - { - "idiom" : "universal", - "color" : { - "color-space" : "srgb", - "components" : { - "red" : "0xE7", - "alpha" : "1.000", - "blue" : "0x10", - "green" : "0x80" - } - } - } - ] -} \ No newline at end of file diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/SecondaryBackgroundColor.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/SecondaryBackgroundColor.colorset/Contents.json index b8c4e8dbb..d62232243 100644 --- a/Shared/Resources/SharedAssets.xcassets/Colors/SecondaryBackgroundColor.colorset/Contents.json +++ b/Shared/Resources/SharedAssets.xcassets/Colors/SecondaryBackgroundColor.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0x1F", - "green" : "0x1C", - "red" : "0x19" + "blue" : "0x19", + "green" : "0x15", + "red" : "0x14" } }, "idiom" : "universal" diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/System/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/System/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/System/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/System/GreenColor.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/System/GreenColor.colorset/Contents.json new file mode 100644 index 000000000..531daaad0 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/System/GreenColor.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x89", + "green" : "0xB4", + "red" : "0x3E" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/System/OrangeColor.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/System/OrangeColor.colorset/Contents.json new file mode 100644 index 000000000..ee16e790d --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/System/OrangeColor.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x69", + "green" : "0x92", + "red" : "0xFA" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/System/SystemRedColor.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/System/SystemRedColor.colorset/Contents.json new file mode 100644 index 000000000..8b0263a7a --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/System/SystemRedColor.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x43", + "green" : "0x2C", + "red" : "0xDA" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/System/SystemYellowColor.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/System/SystemYellowColor.colorset/Contents.json new file mode 100644 index 000000000..387c8b2a1 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/System/SystemYellowColor.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x43", + "green" : "0xC0", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/SystemRedColor.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/SystemRedColor.colorset/Contents.json deleted file mode 100644 index 37d65f540..000000000 --- a/Shared/Resources/SharedAssets.xcassets/Colors/SystemRedColor.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x43", - "green" : "0x2C", - "red" : "0xDA" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x43", - "green" : "0x2C", - "red" : "0xDA" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/SystemYellowColor.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/SystemYellowColor.colorset/Contents.json deleted file mode 100644 index 11989ddbc..000000000 --- a/Shared/Resources/SharedAssets.xcassets/Colors/SystemYellowColor.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x43", - "green" : "0xC0", - "red" : "0xFF" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x43", - "green" : "0xC0", - "red" : "0xFF" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/TextColors/Label.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/TextColors/Label.colorset/Contents.json index a48cd5aa5..af77a5ace 100644 --- a/Shared/Resources/SharedAssets.xcassets/Colors/TextColors/Label.colorset/Contents.json +++ b/Shared/Resources/SharedAssets.xcassets/Colors/TextColors/Label.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0x1F", - "green" : "0x1C", - "red" : "0x19" + "blue" : "0x0D", + "green" : "0x0B", + "red" : "0x0A" } }, "idiom" : "universal" diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/White/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/White/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/White/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/White/White.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/White/White.colorset/Contents.json new file mode 100644 index 000000000..fafa47672 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/White/White.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha10.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha10.colorset/Contents.json new file mode 100644 index 000000000..404b50706 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha10.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.100", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha15.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha15.colorset/Contents.json new file mode 100644 index 000000000..19657b97d --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha15.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.150", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha20.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha20.colorset/Contents.json new file mode 100644 index 000000000..7121dd829 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha20.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.200", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha30.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha30.colorset/Contents.json new file mode 100644 index 000000000..d19b83950 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha30.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.300", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha40.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha40.colorset/Contents.json new file mode 100644 index 000000000..efdf7c5c8 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha40.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.400", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha5.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha5.colorset/Contents.json new file mode 100644 index 000000000..683044c23 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha5.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.050", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha50.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha50.colorset/Contents.json new file mode 100644 index 000000000..dae0ce94b --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha50.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.500", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha60.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha60.colorset/Contents.json new file mode 100644 index 000000000..089f20b84 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha60.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.600", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha70.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha70.colorset/Contents.json new file mode 100644 index 000000000..82645fc02 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha70.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.700", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha80.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha80.colorset/Contents.json new file mode 100644 index 000000000..ead18a882 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha80.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.800", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha90.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha90.colorset/Contents.json new file mode 100644 index 000000000..cb0693e71 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/White/WhiteAlpha90.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.900", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +}