diff --git a/DashWallet.xcodeproj/project.pbxproj b/DashWallet.xcodeproj/project.pbxproj index d9787d791..2b4eb3953 100644 --- a/DashWallet.xcodeproj/project.pbxproj +++ b/DashWallet.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 53; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -561,6 +561,12 @@ 752C3ED22B1AF19C00F46CD3 /* BuySellPortal.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C9FAABB42AB793CE00878224 /* BuySellPortal.storyboard */; }; 75303FE52AE7B70500870D8B /* CrowdNode.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 75303FE42AE7B70500870D8B /* CrowdNode.storyboard */; }; 75303FE62AE7B70500870D8B /* CrowdNode.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 75303FE42AE7B70500870D8B /* CrowdNode.storyboard */; }; + 7531308D2B47EC910069C9B7 /* UpholdClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7531308C2B47EC910069C9B7 /* UpholdClient.swift */; }; + 7531308E2B47EC910069C9B7 /* UpholdClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7531308C2B47EC910069C9B7 /* UpholdClient.swift */; }; + 753130912B47EE920069C9B7 /* UpholdCapability.swift in Sources */ = {isa = PBXBuildFile; fileRef = 753130902B47EE920069C9B7 /* UpholdCapability.swift */; }; + 753130922B47EE920069C9B7 /* UpholdCapability.swift in Sources */ = {isa = PBXBuildFile; fileRef = 753130902B47EE920069C9B7 /* UpholdCapability.swift */; }; + 753130972B4944130069C9B7 /* UpholdError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 753130962B4944130069C9B7 /* UpholdError.swift */; }; + 753130982B4944130069C9B7 /* UpholdError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 753130962B4944130069C9B7 /* UpholdError.swift */; }; 753FDBEA2AEA422F0005EEC3 /* VotingPrefs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 753FDBE92AEA422F0005EEC3 /* VotingPrefs.swift */; }; 753FDBEC2AECF4CC0005EEC3 /* VotingHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 753FDBEB2AECF4CC0005EEC3 /* VotingHeaderView.xib */; }; 753FDBEE2AECF52B0005EEC3 /* UsernameVoting.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 753FDBED2AECF52B0005EEC3 /* UsernameVoting.storyboard */; }; @@ -2410,6 +2416,9 @@ 7527720E2AA9F58E0066557E /* TopperViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TopperViewModel.swift; sourceTree = ""; }; 752772112AAA1CE30066557E /* Coinbase-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Coinbase-Info.plist"; sourceTree = ""; }; 75303FE42AE7B70500870D8B /* CrowdNode.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = CrowdNode.storyboard; sourceTree = ""; }; + 7531308C2B47EC910069C9B7 /* UpholdClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpholdClient.swift; sourceTree = ""; }; + 753130902B47EE920069C9B7 /* UpholdCapability.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpholdCapability.swift; sourceTree = ""; }; + 753130962B4944130069C9B7 /* UpholdError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpholdError.swift; sourceTree = ""; }; 753FDBE92AEA422F0005EEC3 /* VotingPrefs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VotingPrefs.swift; sourceTree = ""; }; 753FDBEB2AECF4CC0005EEC3 /* VotingHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VotingHeaderView.xib; sourceTree = ""; }; 753FDBED2AECF52B0005EEC3 /* UsernameVoting.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = UsernameVoting.storyboard; sourceTree = ""; }; @@ -4546,6 +4555,8 @@ 2A9FFDF62230FF2B00956D5F /* Uphold */ = { isa = PBXGroup; children = ( + 7531308F2B47EE480069C9B7 /* Model */, + 7531308C2B47EC910069C9B7 /* UpholdClient.swift */, FB8ACEB422E0502100EE5035 /* DWUpholdMainnetConstants.h */, FB8ACEB522E0502100EE5035 /* DWUpholdMainnetConstants.m */, 2A9FFF282233E60F00956D5F /* DWUpholdAccountObject.h */, @@ -5980,6 +5991,15 @@ path = Voting; sourceTree = ""; }; + 7531308F2B47EE480069C9B7 /* Model */ = { + isa = PBXGroup; + children = ( + 753130902B47EE920069C9B7 /* UpholdCapability.swift */, + 753130962B4944130069C9B7 /* UpholdError.swift */, + ); + path = Model; + sourceTree = ""; + }; 754495DB2AE91AF700492817 /* Cells */ = { isa = PBXGroup; children = ( @@ -8753,6 +8773,7 @@ 119E8D082905409300D406C1 /* FullCrowdNodeSignUpTxSet.swift in Sources */, 2A4431E922D738C0009BAF7F /* DWSeedPhraseModel.m in Sources */, 478C983C2945801D00FAA0F0 /* Constants.swift in Sources */, + 753130912B47EE920069C9B7 /* UpholdCapability.swift in Sources */, 2A9FFE852230FF4700956D5F /* DWBaseFormCellModel.m in Sources */, 47AE8BFB28C1306000490F5E /* ExploreMapAnnotationView.swift in Sources */, 2A1B7DC0232669FF00BA8C6A /* DWHomeViewController+DWBackupReminder.m in Sources */, @@ -8789,6 +8810,7 @@ 2A9172D325233F4F0024B4C5 /* DWPhraseRepairChildViewController.m in Sources */, 11B8449A28F6D5480082770C /* SingleInputAddressSelector.swift in Sources */, 0F6EDFCF28C896BD000427E7 /* CoinbaseAccountAddress.swift in Sources */, + 7531308D2B47EC910069C9B7 /* UpholdClient.swift in Sources */, 2A7A7BBE2347950700451078 /* DWMainMenuTableViewCell.m in Sources */, 1141E4C2291BB12200ACDA9E /* CrowdNodeTransferViewController.swift in Sources */, 478483E829629C0700E05A5A /* CBAuthInterop.swift in Sources */, @@ -8828,6 +8850,7 @@ 4789D2312981069700BAFEFA /* UpholdTransferViewController.swift in Sources */, 2AD1CE8422DC9B5D00C99324 /* DWVerifySeedPhraseViewController.m in Sources */, C909615529F297DD00002D82 /* DerivationPathKeysCell.swift in Sources */, + 753130972B4944130069C9B7 /* UpholdError.swift in Sources */, 474C721D298B65C100475CA6 /* Cells.swift in Sources */, 2A913E9823A400D3006A2A59 /* DWContainerViewController.m in Sources */, 47B30D7A290D035B0080C326 /* DashTextAttachment.swift in Sources */, @@ -9151,6 +9174,7 @@ C943B5132A40A54600AF23C5 /* DWHistoryFilterContentView.m in Sources */, C943B4BC2A40A54600AF23C5 /* DWRootContactsViewController.m in Sources */, C943B4C32A40A54600AF23C5 /* DWTitleActionHeaderView.m in Sources */, + 7531308E2B47EC910069C9B7 /* UpholdClient.swift in Sources */, C9D2C7502A320AA000D15901 /* ServiceOverviewViewController.swift in Sources */, C9D2C7512A320AA000D15901 /* AccountListModel.swift in Sources */, C9D2C7532A320AA000D15901 /* DWRecoverWalletCommand.m in Sources */, @@ -9214,6 +9238,7 @@ C9D2C7852A320AA000D15901 /* BalanceModel.swift in Sources */, C9D2C7862A320AA000D15901 /* TxReclassifyTransactionsInfoViewController.swift in Sources */, C9D2C7872A320AA000D15901 /* DWTransactionListDataProvider.m in Sources */, + 753130922B47EE920069C9B7 /* UpholdCapability.swift in Sources */, C943B5902A40ED6F00AF23C5 /* DWFirstUsernameSymbolValidationRule.m in Sources */, C943B53E2A40A6BE00AF23C5 /* DPAlertViewController.m in Sources */, 75C1F09E2AFF675400FE675E /* EnterVotingKeyViewController.swift in Sources */, @@ -9432,6 +9457,7 @@ C943B5932A40ED7B00AF23C5 /* DWUsernameHeaderView.m in Sources */, C9D2C8342A320AA000D15901 /* DWSeedUIConstants.m in Sources */, C9D2C8352A320AA000D15901 /* DWWindow.m in Sources */, + 753130982B4944130069C9B7 /* UpholdError.swift in Sources */, C9D2C8362A320AA000D15901 /* BalanceNotifier.swift in Sources */, C9D2C8372A320AA000D15901 /* DWSeedWordModel.m in Sources */, C9D2C8382A320AA000D15901 /* DWRootModel.m in Sources */, @@ -10061,7 +10087,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = dashwallet/dashwallet.entitlements; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 10; DEVELOPMENT_TEAM = 44RJ69WHFF; EXCLUDED_ARCHS = ""; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; @@ -10169,6 +10195,7 @@ "\"UIKit\"", "-weak_framework", "\"WebKit\"", + "-ld64", ); PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -10190,7 +10217,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = dashwallet/dashwallet.entitlements; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 10; DEVELOPMENT_TEAM = 44RJ69WHFF; EXCLUDED_ARCHS = ""; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -10307,6 +10334,7 @@ "\"UIKit\"", "-weak_framework", "\"WebKit\"", + "-ld64", ); PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -10395,7 +10423,6 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 10; DEVELOPMENT_TEAM = 44RJ69WHFF; EXCLUDED_ARCHS = ""; @@ -10418,7 +10445,6 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 10; DEVELOPMENT_TEAM = 44RJ69WHFF; EXCLUDED_ARCHS = ""; @@ -11178,7 +11204,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = dashwallet/dashwallet.entitlements; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 10; DEVELOPMENT_TEAM = 44RJ69WHFF; EXCLUDED_ARCHS = ""; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -11295,6 +11321,7 @@ "\"UIKit\"", "-weak_framework", "\"WebKit\"", + "-ld64", ); PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -11497,7 +11524,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = dashwallet/dashwallet.entitlements; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 10; DEVELOPMENT_TEAM = 44RJ69WHFF; EXCLUDED_ARCHS = ""; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -11604,6 +11631,7 @@ "\"UIKit\"", "-weak_framework", "\"WebKit\"", + "-ld64", ); PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/DashWallet/Sources/Models/Uphold/DWUpholdClient.h b/DashWallet/Sources/Models/Uphold/DWUpholdClient.h index 308358b80..aab774276 100644 --- a/DashWallet/Sources/Models/Uphold/DWUpholdClient.h +++ b/DashWallet/Sources/Models/Uphold/DWUpholdClient.h @@ -27,6 +27,7 @@ extern NSString *const DWUpholdClientUserDidLogoutNotification; @class DWUpholdTransactionObject; @class DWUpholdAccountObject; +// TODO: move methods to UpholdClient.swift @interface DWUpholdClient : NSObject @property (readonly, assign, nonatomic, getter=isAuthorized) BOOL authorized; @@ -37,7 +38,6 @@ extern NSString *const DWUpholdClientUserDidLogoutNotification; - (NSURL *)startAuthRoutineByURL; - (void)completeAuthRoutineWithURL:(NSURL *)url completion:(void (^)(BOOL success))completion; -- (void)getAccounts:(void (^)(NSArray *_Nullable accounts))completion; - (void)getCards:(void (^)(DWUpholdCardObject *_Nullable dashCard, NSArray *fiatCards))completion; - (DWUpholdCancellationToken)createTransactionForDashCard:(DWUpholdCardObject *)card @@ -61,7 +61,6 @@ extern NSString *const DWUpholdClientUserDidLogoutNotification; - (nullable NSURL *)buyDashURLForCard:(DWUpholdCardObject *)card; - (nullable NSURL *)transactionURLForTransaction:(DWUpholdTransactionObject *)transaction; -- (void)updateLastAccessDate; - (void)logOut; @end diff --git a/DashWallet/Sources/Models/Uphold/DWUpholdClient.m b/DashWallet/Sources/Models/Uphold/DWUpholdClient.m index 649801d47..0a06f01bb 100644 --- a/DashWallet/Sources/Models/Uphold/DWUpholdClient.m +++ b/DashWallet/Sources/Models/Uphold/DWUpholdClient.m @@ -27,11 +27,8 @@ NS_ASSUME_NONNULL_BEGIN static NSString *const UPHOLD_ACCESS_TOKEN = @"DW_UPHOLD_ACCESS_TOKEN"; -static NSString *const UPHOLD_LAST_ACCESS = @"DW_UPHOLD_LAST_ACCESS"; static NSString *const UPHOLD_LAST_KNOWN_BALANCE = @"UPHOLD_LAST_KNOWN_BALANCE"; -static NSTimeInterval const UPHOLD_KEEP_ALIVE_INTERVAL = 60.0 * 10.0; // 10 min - NSString *const DWUpholdClientUserDidLogoutNotification = @"DWUpholdClientUserDidLogoutNotification"; @interface DWUpholdClient () @@ -66,14 +63,6 @@ - (BOOL)isAuthorized { return NO; } - NSTimeInterval timeInterval = -[self.lastAccessDate timeIntervalSinceNow]; - if (timeInterval > UPHOLD_KEEP_ALIVE_INTERVAL) { - [self performLogOutShouldNotifyObservers:NO]; - return NO; - } - - [self updateLastAccessDate]; - return YES; } @@ -132,38 +121,6 @@ - (void)completeAuthRoutineWithURL:(NSURL *)url completion:(void (^)(BOOL succes }]; } -- (void)getAccounts:(void (^)(NSArray *_Nullable accounts))completion { - NSParameterAssert(self.accessToken); - - __weak typeof(self) weakSelf = self; - [DWUpholdAPIProvider getUserAccountsAccessToken:self.accessToken - completion:^(BOOL success, DWUpholdAPIProviderResponseStatusCode statusCode, NSArray *_Nullable accounts) { - __strong typeof(weakSelf) strongSelf = weakSelf; - if (!strongSelf) { - return; - } - - NSAssert(statusCode != DWUpholdAPIProviderResponseStatusCodeOTPRequired, @"OTP shouldn't be required here"); - - // We support funding only by `card` accounts - // (and seems there is no other way to fund your Uphold account via API using other types) - NSArray *cardAccounts = nil; - if (success) { - NSPredicate *predicate = [NSPredicate predicateWithFormat:@"type == %@", - @(DWUpholdAccountObjectTypeCard)]; - cardAccounts = [accounts filteredArrayUsingPredicate:predicate]; - } - - if (completion) { - completion(cardAccounts); - } - - if (statusCode == DWUpholdAPIProviderResponseStatusCodeUnauthorized) { - [strongSelf performLogOutShouldNotifyObservers:YES]; - } - }]; -} - - (void)getCards:(void (^)(DWUpholdCardObject *_Nullable dashCard, NSArray *fiatCards))completion { NSParameterAssert(self.accessToken); @@ -366,12 +323,6 @@ - (nullable NSURL *)transactionURLForTransaction:(DWUpholdTransactionObject *)tr return url; } -- (void)updateLastAccessDate { - if (self.accessToken) { - self.lastAccessDate = [NSDate date]; - } -} - - (void)logOut { [self performLogOutShouldNotifyObservers:YES]; } @@ -432,14 +383,6 @@ - (void)createDashCardAddress:(DWUpholdCardObject *)card completion:(void (^)(DW }]; } -- (nullable NSDate *)lastAccessDate { - return [[NSUserDefaults standardUserDefaults] objectForKey:UPHOLD_LAST_ACCESS]; -} - -- (void)setLastAccessDate:(nullable NSDate *)lastAccessDate { - [[NSUserDefaults standardUserDefaults] setObject:lastAccessDate forKey:UPHOLD_LAST_ACCESS]; -} - - (nullable NSDecimalNumber *)lastKnownBalance { return [[NSUserDefaults standardUserDefaults] objectForKey:UPHOLD_LAST_KNOWN_BALANCE]; } diff --git a/DashWallet/Sources/Models/Uphold/Model/UpholdCapability.swift b/DashWallet/Sources/Models/Uphold/Model/UpholdCapability.swift new file mode 100644 index 000000000..82d06f45b --- /dev/null +++ b/DashWallet/Sources/Models/Uphold/Model/UpholdCapability.swift @@ -0,0 +1,34 @@ +// +// Created by Andrei Ashikhmin +// 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. +// + +struct UpholdCapability: Codable { + var key: String + var name: String + var category: String + var enabled: Bool + var requirements: [String] + var restrictions: [String] + + init(key: String = "", name: String = "", category: String = "", enabled: Bool = true, requirements: [String] = [], restrictions: [String] = []) { + self.key = key + self.name = name + self.category = category + self.enabled = enabled + self.requirements = requirements + self.restrictions = restrictions + } +} diff --git a/DashWallet/Sources/Models/Uphold/Model/UpholdError.swift b/DashWallet/Sources/Models/Uphold/Model/UpholdError.swift new file mode 100644 index 000000000..04019b832 --- /dev/null +++ b/DashWallet/Sources/Models/Uphold/Model/UpholdError.swift @@ -0,0 +1,57 @@ +// +// Created by Andrei Ashikhmin +// 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. +// + +enum UpholdError: LocalizedError { + case dueDiligence + case submitIdentity + case proofOfAddress + case unknown + + var errorDescription: String? { + switch self { + case .dueDiligence: + NSLocalizedString("Please go to your Uphold account to answer some questions about yourself.", comment: "Uphold") + case .submitIdentity: + NSLocalizedString("Please go to your Uphold account to verify your identity.", comment: "Uphold") + case .proofOfAddress: + NSLocalizedString("Please contact Uphold to update your proof of address.", comment: "Uphold") + default: + "" + } + } + + var failureReason: String? { + NSLocalizedString("Uphold error", comment: "Uphold") + } + + var recoverySuggestion: String? { + NSLocalizedString("Go to Website", comment: "Uphold") + } + + static func errorCodeToError(code: String) -> UpholdError { + switch code { + case "user-must-submit-enhanced-due-diligence": + .dueDiligence + case "user-must-submit-identity": + .submitIdentity + case "user-must-submit-proof-of-address": + .proofOfAddress + default: + .unknown + } + } +} diff --git a/DashWallet/Sources/Models/Uphold/UpholdClient.swift b/DashWallet/Sources/Models/Uphold/UpholdClient.swift new file mode 100644 index 000000000..e404d06d9 --- /dev/null +++ b/DashWallet/Sources/Models/Uphold/UpholdClient.swift @@ -0,0 +1,77 @@ +// +// Created by Andrei Ashikhmin +// 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 Foundation +import Moya + +public enum UpholdEndpoint { + case getCapabilities(String) +} + +// MARK: TargetType + +extension UpholdEndpoint: TargetType, AccessTokenAuthorizable { + public var authorizationType: Moya.AuthorizationType? { + return .bearer + } + + public var baseURL: URL { + URL(string: DWUpholdConstants.baseURLString())! + } + + public var path: String { + switch self { + case .getCapabilities(let operation): return "v0/me/capabilities/\(operation)" + } + } + + public var method: Moya.Method { + .get + } + + public var task: Moya.Task { + .requestPlain + } + + public var headers: [String : String]? { + [:] + } +} + +class UpholdClient: HTTPClient { + private var accessToken: String? = nil + private let kUpholdAccessToken = "DW_UPHOLD_ACCESS_TOKEN" + + init() { + super.init() + accessTokenProvider = { + if self.accessToken == nil || self.accessToken!.isEmpty { + self.accessToken = self.getToken() + } + + return self.accessToken + } + } + + func getCapabilities(capability: String) async throws -> UpholdCapability? { + try await request(.getCapabilities(capability)) + } + + private func getToken() -> String? { + getKeychainString(kUpholdAccessToken, nil) + } +} diff --git a/DashWallet/Sources/UI/Uphold/Portal/IntegrationViewController+Uphold.swift b/DashWallet/Sources/UI/Uphold/Portal/IntegrationViewController+Uphold.swift index 5bc80ba60..b3134adbf 100644 --- a/DashWallet/Sources/UI/Uphold/Portal/IntegrationViewController+Uphold.swift +++ b/DashWallet/Sources/UI/Uphold/Portal/IntegrationViewController+Uphold.swift @@ -17,7 +17,7 @@ import Foundation -extension IntegrationViewController: DWUpholdLogoutTutorialViewControllerDelegate, UpholdTransferViewControllerDelegate { +extension IntegrationViewController: DWUpholdLogoutTutorialViewControllerDelegate { internal func getUpholdVcFor(operation: IntegrationItemType) -> UIViewController? { switch operation { @@ -69,7 +69,9 @@ extension IntegrationViewController: DWUpholdLogoutTutorialViewControllerDelegat return controller } - +} + +extension IntegrationViewController: UpholdTransferViewControllerDelegate { func upholdTransferViewController(_ vc: UpholdTransferViewController, didSend transaction: DWUpholdTransactionObject) { navigationController?.popViewController(animated: true) diff --git a/DashWallet/Sources/UI/Uphold/Portal/UpholdPortalModel.swift b/DashWallet/Sources/UI/Uphold/Portal/UpholdPortalModel.swift index ebca058d9..5747f7f1b 100644 --- a/DashWallet/Sources/UI/Uphold/Portal/UpholdPortalModel.swift +++ b/DashWallet/Sources/UI/Uphold/Portal/UpholdPortalModel.swift @@ -19,6 +19,9 @@ import Foundation import Combine import AuthenticationServices +private let kWithdrawalsCapability = "crypto_withdrawals" +private let kProfileUrl = "https://wallet.uphold.com/dashboard/settings/profile" + // MARK: IntegrationEntryPointItem struct UpholdEntryPointItem: IntegrationEntryPointItem { @@ -45,7 +48,9 @@ struct UpholdEntryPointItem: IntegrationEntryPointItem { // MARK: - UpholdPortalModel final class UpholdPortalModel: BaseIntegrationModel { + private let upholdClient = UpholdClient() private var authenticationSession: Any? + private var requirements: [String: [String]] = [:] override var items: [IntegrationEntryPointItem] { UpholdEntryPointItem.supportedCases @@ -125,6 +130,7 @@ final class UpholdPortalModel: BaseIntegrationModel { let success = dashCard != nil self.state = success ? .ready : .failed } + checkCapabilities() } var buyDashURL: URL? { @@ -148,13 +154,29 @@ final class UpholdPortalModel: BaseIntegrationModel { DWUpholdClient.sharedInstance().logOut() } - override func onFinish() { - DWUpholdClient.sharedInstance().updateLastAccessDate(); - } - override func isValidCallbackUrl(url: URL) -> Bool { url.absoluteString.contains("uphold") } + + override func validate(operation type: IntegrationItemType) -> LocalizedError? { + switch type { + case .transferDash: + let reqs = requirements[kWithdrawalsCapability] ?? [] + + if reqs.isEmpty { + return nil + } + + return UpholdError.errorCodeToError(code: reqs[0]) + default: + return super.validate(operation: type) + } + } + + override func handle(error: Swift.Error) { + super.handle(error: error) + UIApplication.shared.open(URL(string: kProfileUrl)!) + } func transactionURL(for transaction: DWUpholdTransactionObject) -> URL? { DWUpholdClient.sharedInstance().transactionURL(forTransaction: transaction) @@ -164,4 +186,20 @@ final class UpholdPortalModel: BaseIntegrationModel { String(format: NSLocalizedString("Your transaction was sent and the amount should appear in your wallet in a few minutes.", comment: ""), NSLocalizedString("Transaction id", comment: ""), transaction.identifier) } + + private func checkCapabilities() { + Task { + do { + guard let capability = try await upholdClient.getCapabilities(capability: kWithdrawalsCapability) else { + return + } + + if (capability.key == kWithdrawalsCapability) { + requirements[capability.key] = capability.requirements + } + } catch { + DSLogger.log("Error obtaining capabilities: \(error)") + } + } + } } diff --git a/DashWallet/Sources/UI/Uphold/Transfer/Model/UpholdAmountModel.swift b/DashWallet/Sources/UI/Uphold/Transfer/Model/UpholdAmountModel.swift index e2c972e83..53fc73c11 100644 --- a/DashWallet/Sources/UI/Uphold/Transfer/Model/UpholdAmountModel.swift +++ b/DashWallet/Sources/UI/Uphold/Transfer/Model/UpholdAmountModel.swift @@ -91,7 +91,6 @@ final class UpholdAmountModel: BaseAmountModel { createTransactionCancellationToken?.cancel() let client = DWUpholdClient.sharedInstance() - createTransactionCancellationToken = client.createTransaction(forDashCard: card, amount: amount, address: receiveAddress, diff --git a/DashWallet/ar.lproj/Localizable.strings b/DashWallet/ar.lproj/Localizable.strings index cbcd45714..a6925e52e 100644 --- a/DashWallet/ar.lproj/Localizable.strings +++ b/DashWallet/ar.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "يرجى التحقق من اتصال الشبكة الخاص بك"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "يرجى ملاحظة أن البريد الإلكتروني لا يتم حفظه بواسطة محفظة داش ويتم إرساله فقط إلى CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "دعم"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/bg.lproj/Localizable.strings b/DashWallet/bg.lproj/Localizable.strings index 3affeaf3e..221853ae5 100644 --- a/DashWallet/bg.lproj/Localizable.strings +++ b/DashWallet/bg.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Моля въведете ПИН за обновяване на портфейла"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/ca.lproj/Localizable.strings b/DashWallet/ca.lproj/Localizable.strings index 72a0a829c..95c070eeb 100644 --- a/DashWallet/ca.lproj/Localizable.strings +++ b/DashWallet/ca.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/cs.lproj/Localizable.strings b/DashWallet/cs.lproj/Localizable.strings index d12edbc5e..ec27766b7 100644 --- a/DashWallet/cs.lproj/Localizable.strings +++ b/DashWallet/cs.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Zkontrolujte připojení k síti"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Pro aktualizaci peněženky zadejte PIN kód"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/da.lproj/Localizable.strings b/DashWallet/da.lproj/Localizable.strings index 741489ac8..e4e2a1659 100644 --- a/DashWallet/da.lproj/Localizable.strings +++ b/DashWallet/da.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/dashwallet-Bridging-Header.h b/DashWallet/dashwallet-Bridging-Header.h index 2e8e424bc..aaf0e423a 100644 --- a/DashWallet/dashwallet-Bridging-Header.h +++ b/DashWallet/dashwallet-Bridging-Header.h @@ -85,6 +85,7 @@ static const bool _SNAPSHOT = 0; #import "DWUpholdOTPProvider.h" #import "DWUpholdClientCancellationToken.h" #import "DWUpholdLogoutTutorialViewController.h" +#import "DWUpholdConstants.h" //MARK: 3rd Party #import diff --git a/DashWallet/de.lproj/Localizable.strings b/DashWallet/de.lproj/Localizable.strings index f100d9d10..6bb6fac2b 100644 --- a/DashWallet/de.lproj/Localizable.strings +++ b/DashWallet/de.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Bitte überprüfe deine Netzwerksverbindung"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "PIN eingeben zum upgraden der Wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Bitte beachte, dass diese E-Mail nicht in der Dash Wallet gespeichert wird sondern nur an CrowdNode gesendet wird"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/el.lproj/Localizable.strings b/DashWallet/el.lproj/Localizable.strings index 27a893b2c..04643dc41 100644 --- a/DashWallet/el.lproj/Localizable.strings +++ b/DashWallet/el.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Ελέγξτε τη σύνδεση δικτύου σας"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Παρακαλώ εισάγετε το PIN για να αναβαθμίσετε το πορτοφόλι"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Λάβετε υπόψη ότι το email δεν αποθηκεύεται από το Dash Wallet και αποστέλλεται μόνο στο Crowdnode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/en.lproj/Localizable.strings b/DashWallet/en.lproj/Localizable.strings index ea106c894..540149ec6 100644 --- a/DashWallet/en.lproj/Localizable.strings +++ b/DashWallet/en.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/eo.lproj/Localizable.strings b/DashWallet/eo.lproj/Localizable.strings index 0c1046adb..34a70103a 100644 --- a/DashWallet/eo.lproj/Localizable.strings +++ b/DashWallet/eo.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/es.lproj/Localizable.strings b/DashWallet/es.lproj/Localizable.strings index eed7df267..03b1f1140 100644 --- a/DashWallet/es.lproj/Localizable.strings +++ b/DashWallet/es.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Comprueba tu conexión de red"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Ingresa una identificación de correo electrónico gravatar válida."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Por favor ingrese su PIN para actualizar la billetera"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Ten en cuenta que la billetera de Dash no guarda el correo electrónico y solo se envía a CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Error al Subir"; diff --git a/DashWallet/et.lproj/Localizable.strings b/DashWallet/et.lproj/Localizable.strings index aa5aaa67c..787eef646 100644 --- a/DashWallet/et.lproj/Localizable.strings +++ b/DashWallet/et.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/fa.lproj/Localizable.strings b/DashWallet/fa.lproj/Localizable.strings index 276e1fa13..1b2dd9c23 100644 --- a/DashWallet/fa.lproj/Localizable.strings +++ b/DashWallet/fa.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "لطفا اتصال شبکه‌تان را بررسی کنید"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "دقت داشته باشید که ایمیل توسط دش والت ذخیره نمی‌شود و فقط برای کراودنود ارسال می‌شود"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "آپهولد"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/fi.lproj/Localizable.strings b/DashWallet/fi.lproj/Localizable.strings index 74572608d..9756ac04d 100644 --- a/DashWallet/fi.lproj/Localizable.strings +++ b/DashWallet/fi.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/fil.lproj/Localizable.strings b/DashWallet/fil.lproj/Localizable.strings index e606997d5..9765fcf61 100644 --- a/DashWallet/fil.lproj/Localizable.strings +++ b/DashWallet/fil.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Mangyaring suriin ang iyong koneksyon sa network"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Paki-enter ang PIN para ma-upgrade ang pitaka"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Pakitandaan na ang email ay hindi nai-save ng Dash Wallet at ipinapadala lamang sa Crowdnode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/fr.lproj/Localizable.strings b/DashWallet/fr.lproj/Localizable.strings index 4dc974141..9dbad90a6 100644 --- a/DashWallet/fr.lproj/Localizable.strings +++ b/DashWallet/fr.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Veuillez vérifier votre connexion réseau"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Veuillez saisir un identifiant Gravatar Email valide."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Veuillez saisir votre code PIN pour mettre à jour le portefeuille"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Veuillez noter que l'adresse e-mail n'est pas enregistrée par le portefeuille Dash, mais seulement envoyée à CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Erreur de transmission"; diff --git a/DashWallet/hr.lproj/Localizable.strings b/DashWallet/hr.lproj/Localizable.strings index e5b6e91d2..a3d9792a5 100644 --- a/DashWallet/hr.lproj/Localizable.strings +++ b/DashWallet/hr.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/hu.lproj/Localizable.strings b/DashWallet/hu.lproj/Localizable.strings index 1f256f921..54498d060 100644 --- a/DashWallet/hu.lproj/Localizable.strings +++ b/DashWallet/hu.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/id.lproj/Localizable.strings b/DashWallet/id.lproj/Localizable.strings index e32c0363d..0ac1e341c 100644 --- a/DashWallet/id.lproj/Localizable.strings +++ b/DashWallet/id.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Silakan periksa koneksi jaringan Anda"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Silakan masukkan PIN untuk meningkatkan dompet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Harap dicatat bahwa email tidak disimpan oleh Dompet Dash dan hanya dikirim ke CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/it.lproj/Localizable.strings b/DashWallet/it.lproj/Localizable.strings index 60ac615db..cf2cbd2ed 100644 --- a/DashWallet/it.lproj/Localizable.strings +++ b/DashWallet/it.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Si prega di controllare la connessione di rete"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Inserisci un ID Email Gravatar valido."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Inserisci il PIN per aggiornare il portafoglio"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Tieni presente che l'Email non viene salvata da Dash Wallet e viene inviata solo a CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Errore di caricamento"; diff --git a/DashWallet/ja.lproj/Localizable.strings b/DashWallet/ja.lproj/Localizable.strings index 2775d187b..4ab138280 100644 --- a/DashWallet/ja.lproj/Localizable.strings +++ b/DashWallet/ja.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "ネットワーク接続を確認してください"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "ウォレットをアップグレードするためPINを入力してください"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "メールはDashウォレットには保存されず、CrowdNodeにのみ送信されることにご留意ください。"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/ko.lproj/Localizable.strings b/DashWallet/ko.lproj/Localizable.strings index 7bfe378ed..8db9ddac8 100644 --- a/DashWallet/ko.lproj/Localizable.strings +++ b/DashWallet/ko.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "네트워크 연결을 확인하세요"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "지갑을 업그레이드하시려면 PIN을 입력하십시오"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "이 이메일은 대시 지갑에 의해 저장되지 않으며 크라우드노드로만 보내진다는 점에 주의하십시오"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "업홀드"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/mk.lproj/Localizable.strings b/DashWallet/mk.lproj/Localizable.strings index 62f9bd43f..be5af1e0e 100644 --- a/DashWallet/mk.lproj/Localizable.strings +++ b/DashWallet/mk.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/ms.lproj/Localizable.strings b/DashWallet/ms.lproj/Localizable.strings index b47fc2854..59ee744d0 100644 --- a/DashWallet/ms.lproj/Localizable.strings +++ b/DashWallet/ms.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/nb.lproj/Localizable.strings b/DashWallet/nb.lproj/Localizable.strings index a1e4f3316..864bb14f0 100644 --- a/DashWallet/nb.lproj/Localizable.strings +++ b/DashWallet/nb.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/nl.lproj/Localizable.strings b/DashWallet/nl.lproj/Localizable.strings index 6daab8f4c..46830c648 100644 --- a/DashWallet/nl.lproj/Localizable.strings +++ b/DashWallet/nl.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Controleer de netwerkverbinding"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Voer a.u.b. PIN in om de portemonnee bij te werken"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Houd er rekening mee dat de e-mail niet wordt opgeslagen door de Dash Portemonnee en alleen maar wordt verzonden naar Crowdnode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/pl.lproj/Localizable.strings b/DashWallet/pl.lproj/Localizable.strings index 68c7f9e2c..cd88b5995 100644 --- a/DashWallet/pl.lproj/Localizable.strings +++ b/DashWallet/pl.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Sprawdź połączenie z siecią"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Wpisz prawidłwy email gravatar"; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Proszę podaj PIN aby aktualizować portfel"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Email nie jest przchowywany w portfelu Dash i zostaje on wysłany jedynie do CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Błąd podczas wysyłania"; diff --git a/DashWallet/pt.lproj/Localizable.strings b/DashWallet/pt.lproj/Localizable.strings index 358fbcb70..073215eef 100644 --- a/DashWallet/pt.lproj/Localizable.strings +++ b/DashWallet/pt.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Por favor, verifique sua conexão de rede"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Por favor, insira seu PIN para atualizar a carteira"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Por favor, observe que o e-mail não é salvo pela Carteira Dash e é enviado apenas para o CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/ro.lproj/Localizable.strings b/DashWallet/ro.lproj/Localizable.strings index 7ce03908d..d25fbf955 100644 --- a/DashWallet/ro.lproj/Localizable.strings +++ b/DashWallet/ro.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Introdu codul PIN pentru a actualiza portofelul"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/ru.lproj/Localizable.strings b/DashWallet/ru.lproj/Localizable.strings index f56ffadd0..2ed6f84d5 100644 --- a/DashWallet/ru.lproj/Localizable.strings +++ b/DashWallet/ru.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Пожалуйста, проверьте ваше подключение к сети"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Пожалуйста, введите правильный gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Пожалуйста, введите PIN для обновления кошелька"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Обратите внимание! Этот email не сохраняется в Dash Wallet, он всего лишь пересылается в Crowdnode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Ошибка при обновлении"; diff --git a/DashWallet/sk.lproj/Localizable.strings b/DashWallet/sk.lproj/Localizable.strings index 63006ac44..b68e520ca 100644 --- a/DashWallet/sk.lproj/Localizable.strings +++ b/DashWallet/sk.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Skontrolujte svoje sieťové pripojenie"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Pre inováciu peňaženky zadajte PIN"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Upozorňujeme, že e-mail nie je uložený v Dash peňaženke a je odoslaný iba do CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/sl.lproj/Localizable.strings b/DashWallet/sl.lproj/Localizable.strings index 44156d1df..432fafa55 100644 --- a/DashWallet/sl.lproj/Localizable.strings +++ b/DashWallet/sl.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/sl_SI.lproj/Localizable.strings b/DashWallet/sl_SI.lproj/Localizable.strings index 107957369..ba088246b 100644 --- a/DashWallet/sl_SI.lproj/Localizable.strings +++ b/DashWallet/sl_SI.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/sq.lproj/Localizable.strings b/DashWallet/sq.lproj/Localizable.strings index 68bdb8d4c..966ff797c 100644 --- a/DashWallet/sq.lproj/Localizable.strings +++ b/DashWallet/sq.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/sr.lproj/Localizable.strings b/DashWallet/sr.lproj/Localizable.strings index 76c3f14d0..73d3c54c4 100644 --- a/DashWallet/sr.lproj/Localizable.strings +++ b/DashWallet/sr.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/sv.lproj/Localizable.strings b/DashWallet/sv.lproj/Localizable.strings index d06515d6e..d8c8f0427 100644 --- a/DashWallet/sv.lproj/Localizable.strings +++ b/DashWallet/sv.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/th.lproj/Localizable.strings b/DashWallet/th.lproj/Localizable.strings index ab76ad2f4..908371012 100644 --- a/DashWallet/th.lproj/Localizable.strings +++ b/DashWallet/th.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "โปรดตรวจสอบการเชื่อมต่อเครือข่ายของคุณ"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "โปรดป้อน PIN เพื่ออัปเกรด Wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "โปรดทราบว่าอีเมลที่ไม่ได้รับการบันทึกโดยกระเป๋าเงิน Dash และจะถูกส่งไปยัง CrowdNode เท่านั้น"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/tr.lproj/Localizable.strings b/DashWallet/tr.lproj/Localizable.strings index b5b99a34f..3cb33bbdf 100644 --- a/DashWallet/tr.lproj/Localizable.strings +++ b/DashWallet/tr.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Lütfen ağ bağlantınızı kontrol edin"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Cüzdanı yükseltmek için lütfen PİN kodunu girin"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Lütfen e-postanın Dash Cüzdanı tarafından kaydedilmediğini ve yalnızca CrowdNode'a gönderildiğini unutmayın."; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/uk.lproj/Localizable.strings b/DashWallet/uk.lproj/Localizable.strings index ee6053274..c5f625053 100644 --- a/DashWallet/uk.lproj/Localizable.strings +++ b/DashWallet/uk.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Будь ласка, перевірте підключення до мережі"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Введіть PIN-код, щоб оновити гаманець"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Майте на увазі, що електронна адреса не зберігається в Dash Wallet, а лише пересилається в CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/vi.lproj/Localizable.strings b/DashWallet/vi.lproj/Localizable.strings index 98f518757..2d21cfc2f 100644 --- a/DashWallet/vi.lproj/Localizable.strings +++ b/DashWallet/vi.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Hãy nhập mã PIN để nâng cấp ví"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/zh-Hans.lproj/Localizable.strings b/DashWallet/zh-Hans.lproj/Localizable.strings index e433e146d..6687a7f0c 100644 --- a/DashWallet/zh-Hans.lproj/Localizable.strings +++ b/DashWallet/zh-Hans.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/zh-Hant-TW.lproj/Localizable.strings b/DashWallet/zh-Hant-TW.lproj/Localizable.strings index 8fb44e845..01b54760e 100644 --- a/DashWallet/zh-Hant-TW.lproj/Localizable.strings +++ b/DashWallet/zh-Hant-TW.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "Please check your network connection"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "Please enter PIN to upgrade wallet"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/zh.lproj/Localizable.strings b/DashWallet/zh.lproj/Localizable.strings index f42d4adb5..19128a32c 100644 --- a/DashWallet/zh.lproj/Localizable.strings +++ b/DashWallet/zh.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "请检查您的网络连接"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "请输入PIN码以升级钱包"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "请注意, Dash钱包不保存电子邮件, 仅发送至 CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/DashWallet/zh_TW.lproj/Localizable.strings b/DashWallet/zh_TW.lproj/Localizable.strings index c00efa41c..e7298accd 100644 --- a/DashWallet/zh_TW.lproj/Localizable.strings +++ b/DashWallet/zh_TW.lproj/Localizable.strings @@ -1568,6 +1568,9 @@ /* Network Unavailable */ "Please check your network connection" = "請檢查您的網絡連接"; +/* Uphold */ +"Please contact Uphold to update your proof of address." = "Please contact Uphold to update your proof of address."; + /* No comment provided by engineer. */ "Please enter a valid gravatar email ID." = "Please enter a valid gravatar email ID."; @@ -1577,6 +1580,12 @@ /* No comment provided by engineer. */ "Please enter PIN to upgrade wallet" = "請輸入密碼以升級錢包"; +/* Uphold */ +"Please go to your Uphold account to answer some questions about yourself." = "Please go to your Uphold account to answer some questions about yourself."; + +/* Uphold */ +"Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; + /* CrowdNode */ "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "請注意,達世幣錢包不保存電子郵件,僅發送至 CrowdNode"; @@ -2309,6 +2318,9 @@ /* No comment provided by engineer. */ "Uphold" = "Uphold"; +/* Uphold */ +"Uphold error" = "Uphold error"; + /* No comment provided by engineer. */ "Upload Error" = "Upload Error"; diff --git a/Podfile.lock b/Podfile.lock index 2c1f9f959..995a5ae90 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -866,4 +866,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 8dff55782a9c478127464baadc00c6fc85af48ba -COCOAPODS: 1.14.3 +COCOAPODS: 1.14.2