mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Wallet sync screen with progress
This commit is contained in:
parent
ced2f73b7a
commit
e43dd2abc7
@ -4845,6 +4845,9 @@ Any member of this group will be able to see messages in the channel.";
|
||||
"Wallet.Completed.Title" = "Ready to go!";
|
||||
"Wallet.Completed.Text" = "You’re all set. Now you have a wallet that only you control - directly, without middlemen or bankers.";
|
||||
"Wallet.Completed.ViewWallet" = "View My Wallet";
|
||||
"Wallet.Completed.ProgressTitle" = "Synchronizing";
|
||||
"Wallet.Completed.ProgressText" = "You’re almost all set. Now you have to wait.";
|
||||
"Wallet.Completed.ViewWallet" = "View My Wallet";
|
||||
"Wallet.RestoreFailed.Title" = "Too Bad";
|
||||
"Wallet.RestoreFailed.Text" = "Without the secret words, you can't\nrestore access to your wallet.";
|
||||
"Wallet.RestoreFailed.CreateWallet" = "Create a New Wallet";
|
||||
|
@ -620,7 +620,11 @@ final class AppDelegate: NSObject, UIApplicationDelegate {
|
||||
if let data = try? Data(contentsOf: URL(fileURLWithPath: configPath)), let string = String(data: data, encoding: .utf8) {
|
||||
initialConfig = .single(string)
|
||||
} else {
|
||||
initialConfig = updatedRemoteConfig.get() |> take(1)
|
||||
initialConfig = updatedRemoteConfig.get()
|
||||
|> take(1)
|
||||
|> beforeNext { config in
|
||||
let _ = try? config.data(using: .utf8)?.write(to: URL(fileURLWithPath: configPath), options: .atomic)
|
||||
}
|
||||
}
|
||||
|
||||
let resolvedInitialConfig = combineLatest(queue: .mainQueue(),
|
||||
|
@ -79,6 +79,9 @@
|
||||
"Wallet.Completed.Title" = "Ready to go!";
|
||||
"Wallet.Completed.Text" = "You’re all set. Now you have a wallet that only you control - directly, without middlemen or bankers.";
|
||||
"Wallet.Completed.ViewWallet" = "View My Wallet";
|
||||
"Wallet.Completed.ProgressTitle" = "Synchronizing";
|
||||
"Wallet.Completed.ProgressText" = "You’re almost all set. Now you have to wait.";
|
||||
"Wallet.Completed.ViewWallet" = "View My Wallet";
|
||||
"Wallet.RestoreFailed.Title" = "Too Bad";
|
||||
"Wallet.RestoreFailed.Text" = "Without the secret words, you can't\nrestore access to your wallet.";
|
||||
"Wallet.RestoreFailed.CreateWallet" = "Create a New Wallet";
|
||||
|
@ -116,7 +116,7 @@ private func allOpenInOptions(context: AccountContext, item: OpenInItem) -> [Ope
|
||||
return .none
|
||||
}))
|
||||
|
||||
options.append(OpenInOption(identifier: "edge", application: .other(title: "Microsoft Edge", identifier: 1288723196, scheme: "microsoft-edge-http", store: nil), action: {
|
||||
options.append(OpenInOption(application: .other(title: "Microsoft Edge", identifier: 1288723196, scheme: "microsoft-edge-http", store: nil), action: {
|
||||
if let url = URL(string: url), var components = URLComponents(url: url, resolvingAgainstBaseURL: true) {
|
||||
components.scheme = components.scheme == "https" ? "microsoft-edge-https" : "microsoft-edge-http"
|
||||
if let url = components.string {
|
||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -307,7 +307,7 @@ public final class WalletSplashScreen: ViewController {
|
||||
}
|
||||
|
||||
override public func loadDisplayNode() {
|
||||
self.displayNode = WalletSplashScreenNode(context: self.context, presentationData: self.presentationData, mode: self.mode, action: { [weak self] in
|
||||
self.displayNode = WalletSplashScreenNode(context: self.context, walletCreatedPreloadState: self.walletCreatedPreloadState, presentationData: self.presentationData, mode: self.mode, action: { [weak self] in
|
||||
guard let strongSelf = self else {
|
||||
return
|
||||
}
|
||||
@ -635,6 +635,11 @@ private final class WalletSplashScreenNode: ViewControllerTracingNode {
|
||||
private let secondaryActionTitleNode: ImmediateTextNode
|
||||
private let secondaryActionButtonNode: HighlightTrackingButtonNode
|
||||
|
||||
private var stateDisposable: Disposable?
|
||||
private var synchronizationProgressDisposable: Disposable?
|
||||
|
||||
private var validLayout: (ContainerViewLayout, CGFloat)?
|
||||
|
||||
var inProgress: Bool = false {
|
||||
didSet {
|
||||
self.buttonNode.isUserInteractionEnabled = !self.inProgress
|
||||
@ -642,7 +647,7 @@ private final class WalletSplashScreenNode: ViewControllerTracingNode {
|
||||
}
|
||||
}
|
||||
|
||||
init(context: WalletContext, presentationData: WalletPresentationData, mode: WalletSplashMode, action: @escaping () -> Void, secondaryAction: @escaping () -> Void, openTerms: @escaping () -> Void) {
|
||||
init(context: WalletContext, walletCreatedPreloadState: Promise<CombinedWalletStateResult?>?, presentationData: WalletPresentationData, mode: WalletSplashMode, action: @escaping () -> Void, secondaryAction: @escaping () -> Void, openTerms: @escaping () -> Void) {
|
||||
self.presentationData = presentationData
|
||||
self.mode = mode
|
||||
self.secondaryAction = secondaryAction
|
||||
@ -692,15 +697,16 @@ private final class WalletSplashScreenNode: ViewControllerTracingNode {
|
||||
}
|
||||
secondaryActionText = ""
|
||||
case .success:
|
||||
title = self.presentationData.strings.Wallet_Completed_Title
|
||||
text = NSAttributedString(string: self.presentationData.strings.Wallet_Completed_Text, font: textFont, textColor: textColor)
|
||||
title = self.presentationData.strings.Wallet_Completed_ProgressTitle
|
||||
text = NSAttributedString(string: self.presentationData.strings.Wallet_Completed_ProgressText, font: textFont, textColor: textColor)
|
||||
buttonText = self.presentationData.strings.Wallet_Completed_ViewWallet
|
||||
buttonHidden = true
|
||||
termsText = NSAttributedString(string: "")
|
||||
self.iconNode.image = nil
|
||||
if let path = getAppBundle().path(forResource: "WalletDone", ofType: "tgs") {
|
||||
self.animationNode.setup(source: AnimatedStickerNodeLocalFileSource(path: path), width: 260, height: 260, playbackMode: .once, mode: .direct)
|
||||
if let path = getAppBundle().path(forResource: "WalletSynchronization", ofType: "tgs") {
|
||||
self.animationNode.setup(source: AnimatedStickerNodeLocalFileSource(path: path), width: 260, height: 260, playbackMode: .loop, mode: .direct)
|
||||
self.animationSize = CGSize(width: 130.0, height: 130.0)
|
||||
self.animationOffset = CGPoint(x: 14.0, y: 0.0)
|
||||
self.animationOffset = CGPoint(x: 0.0, y: 0.0)
|
||||
self.animationNode.visibility = true
|
||||
}
|
||||
secondaryActionText = ""
|
||||
@ -875,6 +881,96 @@ private final class WalletSplashScreenNode: ViewControllerTracingNode {
|
||||
openTerms()
|
||||
}
|
||||
}
|
||||
|
||||
switch mode {
|
||||
case .success:
|
||||
var stateSignal: Signal<Bool, NoError>
|
||||
if let walletCreatedPreloadState = walletCreatedPreloadState {
|
||||
stateSignal = walletCreatedPreloadState.get()
|
||||
|> map { state -> Bool in
|
||||
if let state = state {
|
||||
if case .updated = state {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|> filter { $0 }
|
||||
|> take(1)
|
||||
} else {
|
||||
stateSignal = .single(true)
|
||||
}
|
||||
self.stateDisposable = (stateSignal
|
||||
|> deliverOnMainQueue).start(next: { [weak self] _ in
|
||||
guard let strongSelf = self else {
|
||||
return
|
||||
}
|
||||
strongSelf.buttonNode.isHidden = false
|
||||
|
||||
let title = strongSelf.presentationData.strings.Wallet_Completed_Title
|
||||
let text = NSAttributedString(string: strongSelf.presentationData.strings.Wallet_Completed_Text, font: textFont, textColor: textColor)
|
||||
|
||||
strongSelf.titleNode.attributedText = NSAttributedString(string: title, font: Font.bold(32.0), textColor: strongSelf.presentationData.theme.list.itemPrimaryTextColor)
|
||||
strongSelf.textNode.attributedText = text
|
||||
|
||||
if let path = getAppBundle().path(forResource: "WalletDone", ofType: "tgs") {
|
||||
let animateIn = !strongSelf.animationNode.frame.isEmpty
|
||||
var snapshotView: UIView?
|
||||
if animateIn {
|
||||
snapshotView = strongSelf.animationNode.view.snapshotContentTree()
|
||||
}
|
||||
|
||||
strongSelf.animationNode.setup(source: AnimatedStickerNodeLocalFileSource(path: path), width: 260, height: 260, playbackMode: .once, mode: .direct)
|
||||
strongSelf.animationSize = CGSize(width: 130.0, height: 130.0)
|
||||
strongSelf.animationOffset = CGPoint(x: 14.0, y: 0.0)
|
||||
strongSelf.animationNode.visibility = true
|
||||
|
||||
if animateIn {
|
||||
if let snapshotView = snapshotView {
|
||||
strongSelf.view.insertSubview(snapshotView, belowSubview: strongSelf.animationNode.view)
|
||||
snapshotView.frame = strongSelf.animationNode.frame
|
||||
snapshotView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.1, removeOnCompletion: false, completion: { [weak snapshotView] _ in
|
||||
snapshotView?.removeFromSuperview()
|
||||
})
|
||||
snapshotView.layer.animateScale(from: 1.0, to: 0.7, duration: 0.18, removeOnCompletion: false)
|
||||
}
|
||||
strongSelf.animationNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.08)
|
||||
strongSelf.animationNode.layer.animateScale(from: 0.7, to: 1.0, duration: 0.2)
|
||||
}
|
||||
}
|
||||
|
||||
if let (layout, navigationHeight) = strongSelf.validLayout {
|
||||
strongSelf.containerLayoutUpdated(layout: layout, navigationHeight: navigationHeight, transition: .immediate)
|
||||
}
|
||||
})
|
||||
|
||||
self.synchronizationProgressDisposable = (context.tonInstance.syncProgress
|
||||
|> deliverOnMainQueue).start(next: { [weak self] progress in
|
||||
guard let strongSelf = self, strongSelf.buttonNode.isHidden else {
|
||||
return
|
||||
}
|
||||
|
||||
let percent = Int(progress * 100.0)
|
||||
|
||||
let title = strongSelf.presentationData.strings.Wallet_Completed_ProgressTitle + " \(percent)%"
|
||||
|
||||
strongSelf.titleNode.attributedText = NSAttributedString(string: title, font: Font.bold(32.0), textColor: strongSelf.presentationData.theme.list.itemPrimaryTextColor)
|
||||
|
||||
if let (layout, navigationHeight) = strongSelf.validLayout {
|
||||
strongSelf.containerLayoutUpdated(layout: layout, navigationHeight: navigationHeight, transition: .immediate)
|
||||
}
|
||||
})
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
deinit {
|
||||
self.stateDisposable?.dispose()
|
||||
self.synchronizationProgressDisposable?.dispose()
|
||||
}
|
||||
|
||||
override func didLoad() {
|
||||
@ -893,6 +989,8 @@ private final class WalletSplashScreenNode: ViewControllerTracingNode {
|
||||
}
|
||||
|
||||
func containerLayoutUpdated(layout: ContainerViewLayout, navigationHeight: CGFloat, transition: ContainedViewLayoutTransition) {
|
||||
self.validLayout = (layout, navigationHeight)
|
||||
|
||||
let sideInset: CGFloat = 32.0
|
||||
let buttonSideInset: CGFloat = 48.0
|
||||
let iconSpacing: CGFloat = 8.0
|
||||
|
@ -237,191 +237,193 @@ public final class WalletStrings: Equatable {
|
||||
public var Wallet_Intro_ImportExisting: String { return self._s[40]! }
|
||||
public var Wallet_Receive_CommentInfo: String { return self._s[41]! }
|
||||
public var Wallet_WordCheck_Continue: String { return self._s[42]! }
|
||||
public var Wallet_Receive_InvoiceUrlCopied: String { return self._s[43]! }
|
||||
public var Wallet_Completed_Text: String { return self._s[44]! }
|
||||
public var Wallet_WordCheck_IncorrectHeader: String { return self._s[46]! }
|
||||
public var Wallet_Receive_Title: String { return self._s[47]! }
|
||||
public var Wallet_Info_WalletCreated: String { return self._s[48]! }
|
||||
public var Wallet_Navigation_Cancel: String { return self._s[49]! }
|
||||
public var Wallet_CreateInvoice_Title: String { return self._s[50]! }
|
||||
public var Wallet_Completed_ProgressText: String { return self._s[43]! }
|
||||
public var Wallet_Receive_InvoiceUrlCopied: String { return self._s[44]! }
|
||||
public var Wallet_Completed_Text: String { return self._s[45]! }
|
||||
public var Wallet_WordCheck_IncorrectHeader: String { return self._s[47]! }
|
||||
public var Wallet_Receive_Title: String { return self._s[48]! }
|
||||
public var Wallet_Info_WalletCreated: String { return self._s[49]! }
|
||||
public var Wallet_Navigation_Cancel: String { return self._s[50]! }
|
||||
public var Wallet_CreateInvoice_Title: String { return self._s[51]! }
|
||||
public func Wallet_WordCheck_Text(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[51]!, self._r[51]!, [_1, _2, _3])
|
||||
return formatWithArgumentRanges(self._s[52]!, self._r[52]!, [_1, _2, _3])
|
||||
}
|
||||
public var Wallet_TransactionInfo_SenderHeader: String { return self._s[52]! }
|
||||
public var Wallet_TransactionInfo_SenderHeader: String { return self._s[53]! }
|
||||
public func Wallet_Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[53]!, self._r[53]!, [_1, _2, _3])
|
||||
return formatWithArgumentRanges(self._s[54]!, self._r[54]!, [_1, _2, _3])
|
||||
}
|
||||
public var Wallet_Month_GenAugust: String { return self._s[54]! }
|
||||
public var Wallet_Info_UnknownTransaction: String { return self._s[55]! }
|
||||
public var Wallet_Receive_CreateInvoice: String { return self._s[56]! }
|
||||
public var Wallet_Month_GenSeptember: String { return self._s[57]! }
|
||||
public var Wallet_Month_GenJuly: String { return self._s[58]! }
|
||||
public var Wallet_Receive_AddressHeader: String { return self._s[59]! }
|
||||
public var Wallet_Send_AmountText: String { return self._s[60]! }
|
||||
public var Wallet_SecureStorageNotAvailable_Text: String { return self._s[61]! }
|
||||
public var Wallet_Month_GenAugust: String { return self._s[55]! }
|
||||
public var Wallet_Info_UnknownTransaction: String { return self._s[56]! }
|
||||
public var Wallet_Receive_CreateInvoice: String { return self._s[57]! }
|
||||
public var Wallet_Month_GenSeptember: String { return self._s[58]! }
|
||||
public var Wallet_Month_GenJuly: String { return self._s[59]! }
|
||||
public var Wallet_Receive_AddressHeader: String { return self._s[60]! }
|
||||
public var Wallet_Send_AmountText: String { return self._s[61]! }
|
||||
public var Wallet_SecureStorageNotAvailable_Text: String { return self._s[62]! }
|
||||
public func Wallet_Time_PreciseDate_m12(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[62]!, self._r[62]!, [_1, _2, _3])
|
||||
return formatWithArgumentRanges(self._s[63]!, self._r[63]!, [_1, _2, _3])
|
||||
}
|
||||
public func Wallet_Updated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[63]!, self._r[63]!, [_0])
|
||||
return formatWithArgumentRanges(self._s[64]!, self._r[64]!, [_0])
|
||||
}
|
||||
public var Wallet_Configuration_Title: String { return self._s[65]! }
|
||||
public var Wallet_Words_Title: String { return self._s[66]! }
|
||||
public var Wallet_Month_ShortMay: String { return self._s[67]! }
|
||||
public var Wallet_WordCheck_Title: String { return self._s[68]! }
|
||||
public var Wallet_Words_NotDoneResponse: String { return self._s[69]! }
|
||||
public var Wallet_Send_ErrorNotEnoughFundsText: String { return self._s[70]! }
|
||||
public var Wallet_Receive_CreateInvoiceInfo: String { return self._s[71]! }
|
||||
public var Wallet_Configuration_Title: String { return self._s[66]! }
|
||||
public var Wallet_Words_Title: String { return self._s[67]! }
|
||||
public var Wallet_Month_ShortMay: String { return self._s[68]! }
|
||||
public var Wallet_WordCheck_Title: String { return self._s[69]! }
|
||||
public var Wallet_Words_NotDoneResponse: String { return self._s[70]! }
|
||||
public var Wallet_Send_ErrorNotEnoughFundsText: String { return self._s[71]! }
|
||||
public var Wallet_Receive_CreateInvoiceInfo: String { return self._s[72]! }
|
||||
public func Wallet_Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[72]!, self._r[72]!, [_1, _2, _3])
|
||||
return formatWithArgumentRanges(self._s[73]!, self._r[73]!, [_1, _2, _3])
|
||||
}
|
||||
public var Wallet_Info_Address: String { return self._s[73]! }
|
||||
public var Wallet_Intro_CreateWallet: String { return self._s[74]! }
|
||||
public var Wallet_SecureStorageChanged_PasscodeText: String { return self._s[75]! }
|
||||
public var Wallet_Info_Address: String { return self._s[74]! }
|
||||
public var Wallet_Intro_CreateWallet: String { return self._s[75]! }
|
||||
public var Wallet_SecureStorageChanged_PasscodeText: String { return self._s[76]! }
|
||||
public func Wallet_SecureStorageReset_BiometryText(_ _0: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[76]!, self._r[76]!, [_0])
|
||||
return formatWithArgumentRanges(self._s[77]!, self._r[77]!, [_0])
|
||||
}
|
||||
public var Wallet_Send_SendAnyway: String { return self._s[77]! }
|
||||
public var Wallet_UnknownError: String { return self._s[78]! }
|
||||
public var Wallet_SecureStorageChanged_ImportWallet: String { return self._s[79]! }
|
||||
public var Wallet_SecureStorageChanged_CreateWallet: String { return self._s[81]! }
|
||||
public var Wallet_Words_NotDoneOk: String { return self._s[82]! }
|
||||
public var Wallet_Intro_Title: String { return self._s[83]! }
|
||||
public var Wallet_Info_Receive: String { return self._s[84]! }
|
||||
public var Wallet_Completed_ViewWallet: String { return self._s[85]! }
|
||||
public var Wallet_Month_ShortJuly: String { return self._s[86]! }
|
||||
public var Wallet_Month_ShortApril: String { return self._s[87]! }
|
||||
public var Wallet_Send_SendAnyway: String { return self._s[78]! }
|
||||
public var Wallet_UnknownError: String { return self._s[79]! }
|
||||
public var Wallet_Completed_ProgressTitle: String { return self._s[80]! }
|
||||
public var Wallet_SecureStorageChanged_ImportWallet: String { return self._s[81]! }
|
||||
public var Wallet_SecureStorageChanged_CreateWallet: String { return self._s[83]! }
|
||||
public var Wallet_Words_NotDoneOk: String { return self._s[84]! }
|
||||
public var Wallet_Intro_Title: String { return self._s[85]! }
|
||||
public var Wallet_Info_Receive: String { return self._s[86]! }
|
||||
public var Wallet_Completed_ViewWallet: String { return self._s[87]! }
|
||||
public var Wallet_Month_ShortJuly: String { return self._s[88]! }
|
||||
public var Wallet_Month_ShortApril: String { return self._s[89]! }
|
||||
public func Wallet_Info_TransactionDateHeader(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[88]!, self._r[88]!, [_1, _2])
|
||||
return formatWithArgumentRanges(self._s[90]!, self._r[90]!, [_1, _2])
|
||||
}
|
||||
public var Wallet_Receive_ShareInvoiceUrl: String { return self._s[89]! }
|
||||
public var Wallet_Receive_ShareInvoiceUrl: String { return self._s[91]! }
|
||||
public func Wallet_Time_PreciseDate_m10(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[90]!, self._r[90]!, [_1, _2, _3])
|
||||
return formatWithArgumentRanges(self._s[92]!, self._r[92]!, [_1, _2, _3])
|
||||
}
|
||||
public var Wallet_Send_UninitializedText: String { return self._s[92]! }
|
||||
public var Wallet_Send_UninitializedText: String { return self._s[94]! }
|
||||
public func Wallet_Sent_Text(_ _0: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[93]!, self._r[93]!, [_0])
|
||||
return formatWithArgumentRanges(self._s[95]!, self._r[95]!, [_0])
|
||||
}
|
||||
public var Wallet_Month_GenNovember: String { return self._s[94]! }
|
||||
public var Wallet_Month_GenNovember: String { return self._s[96]! }
|
||||
public func Wallet_Time_PreciseDate_m5(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[95]!, self._r[95]!, [_1, _2, _3])
|
||||
return formatWithArgumentRanges(self._s[97]!, self._r[97]!, [_1, _2, _3])
|
||||
}
|
||||
public var Wallet_Month_GenApril: String { return self._s[96]! }
|
||||
public var Wallet_Month_ShortMarch: String { return self._s[97]! }
|
||||
public var Wallet_Month_GenFebruary: String { return self._s[98]! }
|
||||
public var Wallet_Qr_ScanCode: String { return self._s[99]! }
|
||||
public var Wallet_Receive_AddressCopied: String { return self._s[100]! }
|
||||
public var Wallet_Send_UninitializedTitle: String { return self._s[101]! }
|
||||
public var Wallet_Send_Send: String { return self._s[102]! }
|
||||
public var Wallet_Info_RefreshErrorTitle: String { return self._s[103]! }
|
||||
public var Wallet_Month_GenJune: String { return self._s[104]! }
|
||||
public var Wallet_Send_AddressHeader: String { return self._s[105]! }
|
||||
public var Wallet_SecureStorageReset_BiometryTouchId: String { return self._s[106]! }
|
||||
public var Wallet_Send_Confirmation: String { return self._s[107]! }
|
||||
public var Wallet_Completed_Title: String { return self._s[108]! }
|
||||
public var Wallet_Alert_OK: String { return self._s[109]! }
|
||||
public var Wallet_Settings_DeleteWallet: String { return self._s[110]! }
|
||||
public var Wallet_SecureStorageReset_PasscodeText: String { return self._s[111]! }
|
||||
public var Wallet_Month_ShortSeptember: String { return self._s[112]! }
|
||||
public var Wallet_Info_TransactionTo: String { return self._s[113]! }
|
||||
public var Wallet_Send_ConfirmationConfirm: String { return self._s[114]! }
|
||||
public var Wallet_TransactionInfo_OtherFeeInfo: String { return self._s[115]! }
|
||||
public var Wallet_Receive_AmountText: String { return self._s[116]! }
|
||||
public var Wallet_Receive_CopyAddress: String { return self._s[117]! }
|
||||
public var Wallet_Intro_Text: String { return self._s[119]! }
|
||||
public var Wallet_Configuration_Apply: String { return self._s[120]! }
|
||||
public var Wallet_Month_GenApril: String { return self._s[98]! }
|
||||
public var Wallet_Month_ShortMarch: String { return self._s[99]! }
|
||||
public var Wallet_Month_GenFebruary: String { return self._s[100]! }
|
||||
public var Wallet_Qr_ScanCode: String { return self._s[101]! }
|
||||
public var Wallet_Receive_AddressCopied: String { return self._s[102]! }
|
||||
public var Wallet_Send_UninitializedTitle: String { return self._s[103]! }
|
||||
public var Wallet_Send_Send: String { return self._s[104]! }
|
||||
public var Wallet_Info_RefreshErrorTitle: String { return self._s[105]! }
|
||||
public var Wallet_Month_GenJune: String { return self._s[106]! }
|
||||
public var Wallet_Send_AddressHeader: String { return self._s[107]! }
|
||||
public var Wallet_SecureStorageReset_BiometryTouchId: String { return self._s[108]! }
|
||||
public var Wallet_Send_Confirmation: String { return self._s[109]! }
|
||||
public var Wallet_Completed_Title: String { return self._s[110]! }
|
||||
public var Wallet_Alert_OK: String { return self._s[111]! }
|
||||
public var Wallet_Settings_DeleteWallet: String { return self._s[112]! }
|
||||
public var Wallet_SecureStorageReset_PasscodeText: String { return self._s[113]! }
|
||||
public var Wallet_Month_ShortSeptember: String { return self._s[114]! }
|
||||
public var Wallet_Info_TransactionTo: String { return self._s[115]! }
|
||||
public var Wallet_Send_ConfirmationConfirm: String { return self._s[116]! }
|
||||
public var Wallet_TransactionInfo_OtherFeeInfo: String { return self._s[117]! }
|
||||
public var Wallet_Receive_AmountText: String { return self._s[118]! }
|
||||
public var Wallet_Receive_CopyAddress: String { return self._s[119]! }
|
||||
public var Wallet_Intro_Text: String { return self._s[121]! }
|
||||
public var Wallet_Configuration_Apply: String { return self._s[122]! }
|
||||
public func Wallet_SecureStorageChanged_BiometryText(_ _0: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[121]!, self._r[121]!, [_0])
|
||||
return formatWithArgumentRanges(self._s[123]!, self._r[123]!, [_0])
|
||||
}
|
||||
public var Wallet_TransactionInfo_FeeInfoURL: String { return self._s[122]! }
|
||||
public var Wallet_TransactionInfo_FeeInfoURL: String { return self._s[124]! }
|
||||
public func Wallet_Time_PreciseDate_m1(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[123]!, self._r[123]!, [_1, _2, _3])
|
||||
return formatWithArgumentRanges(self._s[125]!, self._r[125]!, [_1, _2, _3])
|
||||
}
|
||||
public var Wallet_RestoreFailed_CreateWallet: String { return self._s[124]! }
|
||||
public var Wallet_Weekday_Yesterday: String { return self._s[125]! }
|
||||
public var Wallet_Receive_AmountHeader: String { return self._s[126]! }
|
||||
public var Wallet_Month_ShortFebruary: String { return self._s[127]! }
|
||||
public var Wallet_Alert_Cancel: String { return self._s[128]! }
|
||||
public var Wallet_TransactionInfo_RecipientHeader: String { return self._s[129]! }
|
||||
public var Wallet_Info_TransactionFrom: String { return self._s[130]! }
|
||||
public var Wallet_Send_ErrorDecryptionFailed: String { return self._s[131]! }
|
||||
public var Wallet_Words_NotDoneTitle: String { return self._s[132]! }
|
||||
public var Wallet_Month_ShortOctober: String { return self._s[133]! }
|
||||
public var Wallet_Month_GenMay: String { return self._s[134]! }
|
||||
public var Wallet_Intro_CreateErrorTitle: String { return self._s[135]! }
|
||||
public var Wallet_SecureStorageReset_BiometryFaceId: String { return self._s[136]! }
|
||||
public var Wallet_Month_ShortJanuary: String { return self._s[137]! }
|
||||
public var Wallet_Month_GenMarch: String { return self._s[138]! }
|
||||
public var Wallet_Sending_Text: String { return self._s[139]! }
|
||||
public var Wallet_Month_GenOctober: String { return self._s[140]! }
|
||||
public var Wallet_Receive_CopyInvoiceUrl: String { return self._s[141]! }
|
||||
public var Wallet_ContextMenuCopy: String { return self._s[142]! }
|
||||
public var Wallet_RestoreFailed_CreateWallet: String { return self._s[126]! }
|
||||
public var Wallet_Weekday_Yesterday: String { return self._s[127]! }
|
||||
public var Wallet_Receive_AmountHeader: String { return self._s[128]! }
|
||||
public var Wallet_Month_ShortFebruary: String { return self._s[129]! }
|
||||
public var Wallet_Alert_Cancel: String { return self._s[130]! }
|
||||
public var Wallet_TransactionInfo_RecipientHeader: String { return self._s[131]! }
|
||||
public var Wallet_Info_TransactionFrom: String { return self._s[132]! }
|
||||
public var Wallet_Send_ErrorDecryptionFailed: String { return self._s[133]! }
|
||||
public var Wallet_Words_NotDoneTitle: String { return self._s[134]! }
|
||||
public var Wallet_Month_ShortOctober: String { return self._s[135]! }
|
||||
public var Wallet_Month_GenMay: String { return self._s[136]! }
|
||||
public var Wallet_Intro_CreateErrorTitle: String { return self._s[137]! }
|
||||
public var Wallet_SecureStorageReset_BiometryFaceId: String { return self._s[138]! }
|
||||
public var Wallet_Month_ShortJanuary: String { return self._s[139]! }
|
||||
public var Wallet_Month_GenMarch: String { return self._s[140]! }
|
||||
public var Wallet_Sending_Text: String { return self._s[141]! }
|
||||
public var Wallet_Month_GenOctober: String { return self._s[142]! }
|
||||
public var Wallet_Receive_CopyInvoiceUrl: String { return self._s[143]! }
|
||||
public var Wallet_ContextMenuCopy: String { return self._s[144]! }
|
||||
public func Wallet_Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[143]!, self._r[143]!, [_1, _2, _3])
|
||||
return formatWithArgumentRanges(self._s[145]!, self._r[145]!, [_1, _2, _3])
|
||||
}
|
||||
public var Wallet_Info_Updating: String { return self._s[145]! }
|
||||
public var Wallet_Intro_TermsUrl: String { return self._s[146]! }
|
||||
public var Wallet_Created_ExportErrorTitle: String { return self._s[147]! }
|
||||
public var Wallet_SecureStorageNotAvailable_Title: String { return self._s[148]! }
|
||||
public var Wallet_Sending_Title: String { return self._s[149]! }
|
||||
public var Wallet_Navigation_Done: String { return self._s[150]! }
|
||||
public var Wallet_Settings_Title: String { return self._s[151]! }
|
||||
public var Wallet_Info_Updating: String { return self._s[147]! }
|
||||
public var Wallet_Intro_TermsUrl: String { return self._s[148]! }
|
||||
public var Wallet_Created_ExportErrorTitle: String { return self._s[149]! }
|
||||
public var Wallet_SecureStorageNotAvailable_Title: String { return self._s[150]! }
|
||||
public var Wallet_Sending_Title: String { return self._s[151]! }
|
||||
public var Wallet_Navigation_Done: String { return self._s[152]! }
|
||||
public var Wallet_Settings_Title: String { return self._s[153]! }
|
||||
public func Wallet_Receive_ShareInvoiceUrlInfo(_ _0: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[152]!, self._r[152]!, [_0])
|
||||
return formatWithArgumentRanges(self._s[154]!, self._r[154]!, [_0])
|
||||
}
|
||||
public var Wallet_Info_RefreshErrorNetworkText: String { return self._s[153]! }
|
||||
public var Wallet_Weekday_Today: String { return self._s[155]! }
|
||||
public var Wallet_Month_ShortDecember: String { return self._s[156]! }
|
||||
public var Wallet_Words_Text: String { return self._s[157]! }
|
||||
public var Wallet_WordCheck_ViewWords: String { return self._s[158]! }
|
||||
public var Wallet_Send_AddressInfo: String { return self._s[159]! }
|
||||
public var Wallet_Info_RefreshErrorNetworkText: String { return self._s[155]! }
|
||||
public var Wallet_Weekday_Today: String { return self._s[157]! }
|
||||
public var Wallet_Month_ShortDecember: String { return self._s[158]! }
|
||||
public var Wallet_Words_Text: String { return self._s[159]! }
|
||||
public var Wallet_WordCheck_ViewWords: String { return self._s[160]! }
|
||||
public var Wallet_Send_AddressInfo: String { return self._s[161]! }
|
||||
public func Wallet_Updated_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[160]!, self._r[160]!, [_0])
|
||||
return formatWithArgumentRanges(self._s[162]!, self._r[162]!, [_0])
|
||||
}
|
||||
public var Wallet_Intro_NotNow: String { return self._s[161]! }
|
||||
public var Wallet_Navigation_Close: String { return self._s[162]! }
|
||||
public var Wallet_Month_GenDecember: String { return self._s[164]! }
|
||||
public var Wallet_Send_ErrorNotEnoughFundsTitle: String { return self._s[165]! }
|
||||
public var Wallet_WordImport_IncorrectTitle: String { return self._s[166]! }
|
||||
public var Wallet_Send_AddressText: String { return self._s[167]! }
|
||||
public var Wallet_Receive_AmountInfo: String { return self._s[168]! }
|
||||
public var Wallet_Intro_NotNow: String { return self._s[163]! }
|
||||
public var Wallet_Navigation_Close: String { return self._s[164]! }
|
||||
public var Wallet_Month_GenDecember: String { return self._s[166]! }
|
||||
public var Wallet_Send_ErrorNotEnoughFundsTitle: String { return self._s[167]! }
|
||||
public var Wallet_WordImport_IncorrectTitle: String { return self._s[168]! }
|
||||
public var Wallet_Send_AddressText: String { return self._s[169]! }
|
||||
public var Wallet_Receive_AmountInfo: String { return self._s[170]! }
|
||||
public func Wallet_Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[169]!, self._r[169]!, [_1, _2, _3])
|
||||
return formatWithArgumentRanges(self._s[171]!, self._r[171]!, [_1, _2, _3])
|
||||
}
|
||||
public var Wallet_Month_ShortAugust: String { return self._s[170]! }
|
||||
public var Wallet_Qr_Title: String { return self._s[171]! }
|
||||
public var Wallet_Settings_Configuration: String { return self._s[172]! }
|
||||
public var Wallet_WordCheck_TryAgain: String { return self._s[173]! }
|
||||
public var Wallet_Info_TransactionPendingHeader: String { return self._s[174]! }
|
||||
public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[175]! }
|
||||
public var Wallet_Created_Text: String { return self._s[176]! }
|
||||
public var Wallet_Created_Proceed: String { return self._s[177]! }
|
||||
public var Wallet_Words_Done: String { return self._s[178]! }
|
||||
public var Wallet_WordImport_Continue: String { return self._s[179]! }
|
||||
public var Wallet_TransactionInfo_StorageFeeHeader: String { return self._s[180]! }
|
||||
public var Wallet_WordImport_CanNotRemember: String { return self._s[181]! }
|
||||
public var Wallet_Month_ShortAugust: String { return self._s[172]! }
|
||||
public var Wallet_Qr_Title: String { return self._s[173]! }
|
||||
public var Wallet_Settings_Configuration: String { return self._s[174]! }
|
||||
public var Wallet_WordCheck_TryAgain: String { return self._s[175]! }
|
||||
public var Wallet_Info_TransactionPendingHeader: String { return self._s[176]! }
|
||||
public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[177]! }
|
||||
public var Wallet_Created_Text: String { return self._s[178]! }
|
||||
public var Wallet_Created_Proceed: String { return self._s[179]! }
|
||||
public var Wallet_Words_Done: String { return self._s[180]! }
|
||||
public var Wallet_WordImport_Continue: String { return self._s[181]! }
|
||||
public var Wallet_TransactionInfo_StorageFeeHeader: String { return self._s[182]! }
|
||||
public var Wallet_WordImport_CanNotRemember: String { return self._s[183]! }
|
||||
public func Wallet_Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[182]!, self._r[182]!, [_1, _2, _3])
|
||||
return formatWithArgumentRanges(self._s[184]!, self._r[184]!, [_1, _2, _3])
|
||||
}
|
||||
public func Wallet_Send_ConfirmationText(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[183]!, self._r[183]!, [_1, _2, _3])
|
||||
return formatWithArgumentRanges(self._s[185]!, self._r[185]!, [_1, _2, _3])
|
||||
}
|
||||
public var Wallet_Created_ExportErrorText: String { return self._s[185]! }
|
||||
public var Wallet_Created_ExportErrorText: String { return self._s[187]! }
|
||||
public func Wallet_Updated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[186]!, self._r[186]!, [_0])
|
||||
return formatWithArgumentRanges(self._s[188]!, self._r[188]!, [_0])
|
||||
}
|
||||
public var Wallet_Settings_DeleteWalletInfo: String { return self._s[187]! }
|
||||
public var Wallet_Intro_CreateErrorText: String { return self._s[188]! }
|
||||
public var Wallet_Sent_ViewWallet: String { return self._s[189]! }
|
||||
public var Wallet_Send_ErrorInvalidAddress: String { return self._s[190]! }
|
||||
public var Wallet_Settings_DeleteWalletInfo: String { return self._s[189]! }
|
||||
public var Wallet_Intro_CreateErrorText: String { return self._s[190]! }
|
||||
public var Wallet_Sent_ViewWallet: String { return self._s[191]! }
|
||||
public var Wallet_Send_ErrorInvalidAddress: String { return self._s[192]! }
|
||||
public func Wallet_Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
|
||||
return formatWithArgumentRanges(self._s[191]!, self._r[191]!, [_1, _2, _3])
|
||||
return formatWithArgumentRanges(self._s[193]!, self._r[193]!, [_1, _2, _3])
|
||||
}
|
||||
public var Wallet_Send_Title: String { return self._s[192]! }
|
||||
public var Wallet_Info_RefreshErrorText: String { return self._s[193]! }
|
||||
public var Wallet_SecureStorageReset_Title: String { return self._s[194]! }
|
||||
public var Wallet_Receive_CommentHeader: String { return self._s[195]! }
|
||||
public var Wallet_Info_ReceiveGrams: String { return self._s[196]! }
|
||||
public var Wallet_Send_Title: String { return self._s[194]! }
|
||||
public var Wallet_Info_RefreshErrorText: String { return self._s[195]! }
|
||||
public var Wallet_SecureStorageReset_Title: String { return self._s[196]! }
|
||||
public var Wallet_Receive_CommentHeader: String { return self._s[197]! }
|
||||
public var Wallet_Info_ReceiveGrams: String { return self._s[198]! }
|
||||
public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String {
|
||||
let form = getPluralizationForm(self.lc, value)
|
||||
let stringValue = walletStringsFormattedNumber(value, self.groupingSeparator)
|
||||
|
Loading…
x
Reference in New Issue
Block a user