import Foundation import UIKit import TelegramPresentationData let walletAddressLength: Int = 48 public func formatTonAddress(_ address: String) -> String { var address = address address.insert("\n", at: address.index(address.startIndex, offsetBy: address.count / 2)) return address } public func formatTonUsdValue(_ value: Int64, divide: Bool = true, rate: Double = 1.0, dateTimeFormat: PresentationDateTimeFormat) -> String { let decimalSeparator = dateTimeFormat.decimalSeparator let normalizedValue: Double = divide ? Double(value) / 1000000000 : Double(value) var formattedValue = String(format: "%0.2f", normalizedValue * rate) formattedValue = formattedValue.replacingOccurrences(of: ".", with: decimalSeparator) if let dotIndex = formattedValue.firstIndex(of: decimalSeparator.first!) { let integerPartString = formattedValue[.. String { var balanceText = "\(abs(value))" while balanceText.count < 10 { balanceText.insert("0", at: balanceText.startIndex) } balanceText.insert(contentsOf: dateTimeFormat.decimalSeparator, at: balanceText.index(balanceText.endIndex, offsetBy: -9)) while true { if balanceText.hasSuffix("0") { if balanceText.hasSuffix("\(dateTimeFormat.decimalSeparator)0") { balanceText.removeLast() balanceText.removeLast() break } else { balanceText.removeLast() } } else { break } } if value < 0 { balanceText.insert("-", at: balanceText.startIndex) } else if showPlus { balanceText.insert("+", at: balanceText.startIndex) } if let dotIndex = balanceText.range(of: dateTimeFormat.decimalSeparator) { balanceText = String(balanceText[balanceText.startIndex ..< min(balanceText.endIndex, balanceText.index(dotIndex.upperBound, offsetBy: 2))]) let integerPartString = balanceText[.. NSAttributedString { let result = NSMutableAttributedString() if let range = string.rangeOfCharacter(from: amountDelimeterCharacters) { let integralPart = String(string[..