mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Various fixes
This commit is contained in:
parent
57c071fa4e
commit
6054069e60
@ -12493,6 +12493,21 @@ Sorry for the inconvenience.";
|
||||
|
||||
"Stars.Purchase.GiftStars" = "Gift Stars";
|
||||
"Stars.Purchase.GiftInfo" = "With Stars, **%1$@** will be able to unlock content and services on Telegram. [See Examples >]()";
|
||||
|
||||
"Stars.Purchase.SubscriptionInfo" = "Buy Stars to subscribe for **%@**.";
|
||||
"Stars.Purchase.SubscriptionRenewInfo" = "Buy Stars to keep your subscription for **%@**.";
|
||||
|
||||
"InviteLink.Create.Subscription" = "Require Monthly Fee";
|
||||
"InviteLink.Create.Subscription.Placeholder" = "Stars amount per month";
|
||||
"InviteLink.Create.Subscription.PerMonth" = "%@ / month";
|
||||
"InviteLink.Create.Subscription.Info" = "Charge a subscription fee from people joining your channel via this link. [Learn More >]()";
|
||||
"InviteLink.Create.Subscription.EditInfo" = "If you need to change the subscription fee, create a new invite link with a different price.";
|
||||
|
||||
"InviteLink.Create.RequestApprovalUnavailableInfo" = "You can't enable admin approval for links that require a monthly fee.";
|
||||
|
||||
"InviteLink.Subscription.Fee" = "Subscription Fee";
|
||||
"InviteLink.Subscription.Info" = "You get approximately %@ monthly";
|
||||
|
||||
"Notification.StarsGift.Sent" = "%1$@ sent you a gift for %2$@";
|
||||
"Notification.StarsGift.SentYou" = "You sent a gift for %@";
|
||||
|
||||
@ -12502,3 +12517,5 @@ Sorry for the inconvenience.";
|
||||
"Notification.StarsGift.SubtitleYou" = "With Stars, %@ will be able to unlock content and services on Telegram.";
|
||||
|
||||
"Bot.Settings" = "Bot Settings";
|
||||
|
||||
"Browser.OpenInNewTap" = "";
|
||||
|
@ -1150,7 +1150,7 @@ private enum StatsEntry: ItemListNodeEntry {
|
||||
detailText = stringForMediumCompactDate(timestamp: date, strings: presentationData.strings, dateTimeFormat: presentationData.dateTimeFormat)
|
||||
}
|
||||
|
||||
let label = amountAttributedString(formatBalanceText(transaction.amount, decimalSeparator: presentationData.dateTimeFormat.decimalSeparator, showPlus: true), integralFont: font, fractionalFont: smallLabelFont, color: labelColor).mutableCopy() as! NSMutableAttributedString
|
||||
let label = tonAmountAttributedString(formatTonAmountText(transaction.amount, decimalSeparator: presentationData.dateTimeFormat.decimalSeparator, showPlus: true), integralFont: font, fractionalFont: smallLabelFont, color: labelColor).mutableCopy() as! NSMutableAttributedString
|
||||
|
||||
label.insert(NSAttributedString(string: " $ ", font: font, textColor: labelColor), at: 1)
|
||||
if let range = label.string.range(of: "$"), let icon = generateTintedImage(image: UIImage(bundleImageName: "Ads/TonMedium"), color: labelColor) {
|
||||
|
@ -12,6 +12,7 @@ import TextFormat
|
||||
import ComponentFlow
|
||||
import ButtonComponent
|
||||
import BundleIconComponent
|
||||
import TelegramStringFormatting
|
||||
|
||||
final class MonetizationBalanceItem: ListViewItem, ItemListItem {
|
||||
let context: AccountContext
|
||||
@ -175,12 +176,12 @@ final class MonetizationBalanceItemNode: ListViewItemNode, ItemListItemNode {
|
||||
|
||||
var isStars = false
|
||||
if let stats = item.stats as? RevenueStats {
|
||||
let cryptoValue = formatBalanceText(stats.balances.availableBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator)
|
||||
amountString = amountAttributedString(cryptoValue, integralFont: integralFont, fractionalFont: fractionalFont, color: item.presentationData.theme.list.itemPrimaryTextColor)
|
||||
value = stats.balances.availableBalance == 0 ? "" : "≈\(formatUsdValue(stats.balances.availableBalance, rate: stats.usdRate))"
|
||||
let cryptoValue = formatTonAmountText(stats.balances.availableBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator)
|
||||
amountString = tonAmountAttributedString(cryptoValue, integralFont: integralFont, fractionalFont: fractionalFont, color: item.presentationData.theme.list.itemPrimaryTextColor)
|
||||
value = stats.balances.availableBalance == 0 ? "" : "≈\(formatTonUsdValue(stats.balances.availableBalance, rate: stats.usdRate))"
|
||||
} else if let stats = item.stats as? StarsRevenueStats {
|
||||
amountString = NSAttributedString(string: presentationStringsFormattedNumber(Int32(stats.balances.availableBalance), item.presentationData.dateTimeFormat.groupingSeparator), font: integralFont, textColor: item.presentationData.theme.list.itemPrimaryTextColor)
|
||||
value = stats.balances.availableBalance == 0 ? "" : "≈\(formatUsdValue(stats.balances.availableBalance, divide: false, rate: stats.usdRate))"
|
||||
value = stats.balances.availableBalance == 0 ? "" : "≈\(formatTonUsdValue(stats.balances.availableBalance, divide: false, rate: stats.usdRate))"
|
||||
isStars = true
|
||||
} else {
|
||||
fatalError()
|
||||
|
@ -10,6 +10,7 @@ import PresentationDataUtils
|
||||
import EmojiTextAttachmentView
|
||||
import TextFormat
|
||||
import AccountContext
|
||||
import TelegramStringFormatting
|
||||
|
||||
protocol Stats {
|
||||
|
||||
@ -200,7 +201,7 @@ private final class ValueItemNode: ASDisplayNode {
|
||||
|
||||
let valueString: NSAttributedString
|
||||
if case .ton = mode {
|
||||
valueString = amountAttributedString(value, integralFont: valueFont, fractionalFont: smallValueFont, color: valueColor)
|
||||
valueString = tonAmountAttributedString(value, integralFont: valueFont, fractionalFont: smallValueFont, color: valueColor)
|
||||
} else {
|
||||
valueString = NSAttributedString(string: value, font: valueFont, textColor: valueColor)
|
||||
}
|
||||
@ -771,9 +772,9 @@ class StatsOverviewItemNode: ListViewItemNode {
|
||||
item.context,
|
||||
params.width,
|
||||
item.presentationData,
|
||||
formatBalanceText(stats.balances.availableBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||
formatTonAmountText(stats.balances.availableBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||
item.presentationData.strings.Monetization_StarsProceeds_Available,
|
||||
(stats.balances.availableBalance == 0 ? "" : "≈\(formatUsdValue(stats.balances.availableBalance, rate: stats.usdRate))", .generic),
|
||||
(stats.balances.availableBalance == 0 ? "" : "≈\(formatTonUsdValue(stats.balances.availableBalance, rate: stats.usdRate))", .generic),
|
||||
.ton
|
||||
)
|
||||
|
||||
@ -781,9 +782,9 @@ class StatsOverviewItemNode: ListViewItemNode {
|
||||
item.context,
|
||||
params.width,
|
||||
item.presentationData,
|
||||
formatBalanceText(stats.balances.currentBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||
formatTonAmountText(stats.balances.currentBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||
item.presentationData.strings.Monetization_StarsProceeds_Current,
|
||||
(stats.balances.currentBalance == 0 ? "" : "≈\(formatUsdValue(stats.balances.currentBalance, rate: stats.usdRate))", .generic),
|
||||
(stats.balances.currentBalance == 0 ? "" : "≈\(formatTonUsdValue(stats.balances.currentBalance, rate: stats.usdRate))", .generic),
|
||||
.ton
|
||||
)
|
||||
|
||||
@ -791,9 +792,9 @@ class StatsOverviewItemNode: ListViewItemNode {
|
||||
item.context,
|
||||
params.width,
|
||||
item.presentationData,
|
||||
formatBalanceText(stats.balances.overallRevenue, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||
formatTonAmountText(stats.balances.overallRevenue, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||
item.presentationData.strings.Monetization_StarsProceeds_Total,
|
||||
(stats.balances.overallRevenue == 0 ? "" : "≈\(formatUsdValue(stats.balances.overallRevenue, rate: stats.usdRate))", .generic),
|
||||
(stats.balances.overallRevenue == 0 ? "" : "≈\(formatTonUsdValue(stats.balances.overallRevenue, rate: stats.usdRate))", .generic),
|
||||
.ton
|
||||
)
|
||||
|
||||
@ -803,7 +804,7 @@ class StatsOverviewItemNode: ListViewItemNode {
|
||||
item.presentationData,
|
||||
presentationStringsFormattedNumber(Int32(additionalStats.balances.availableBalance), item.presentationData.dateTimeFormat.groupingSeparator),
|
||||
" ",
|
||||
(additionalStats.balances.availableBalance == 0 ? "" : "≈\(formatUsdValue(additionalStats.balances.availableBalance, divide: false, rate: additionalStats.usdRate))", .generic),
|
||||
(additionalStats.balances.availableBalance == 0 ? "" : "≈\(formatTonUsdValue(additionalStats.balances.availableBalance, divide: false, rate: additionalStats.usdRate))", .generic),
|
||||
.stars
|
||||
)
|
||||
|
||||
@ -813,7 +814,7 @@ class StatsOverviewItemNode: ListViewItemNode {
|
||||
item.presentationData,
|
||||
presentationStringsFormattedNumber(Int32(additionalStats.balances.currentBalance), item.presentationData.dateTimeFormat.groupingSeparator),
|
||||
" ",
|
||||
(additionalStats.balances.currentBalance == 0 ? "" : "≈\(formatUsdValue(additionalStats.balances.currentBalance, divide: false, rate: additionalStats.usdRate))", .generic),
|
||||
(additionalStats.balances.currentBalance == 0 ? "" : "≈\(formatTonUsdValue(additionalStats.balances.currentBalance, divide: false, rate: additionalStats.usdRate))", .generic),
|
||||
.stars
|
||||
)
|
||||
|
||||
@ -823,7 +824,7 @@ class StatsOverviewItemNode: ListViewItemNode {
|
||||
item.presentationData,
|
||||
presentationStringsFormattedNumber(Int32(additionalStats.balances.overallRevenue), item.presentationData.dateTimeFormat.groupingSeparator),
|
||||
" ",
|
||||
(additionalStats.balances.overallRevenue == 0 ? "" : "≈\(formatUsdValue(additionalStats.balances.overallRevenue, divide: false, rate: additionalStats.usdRate))", .generic),
|
||||
(additionalStats.balances.overallRevenue == 0 ? "" : "≈\(formatTonUsdValue(additionalStats.balances.overallRevenue, divide: false, rate: additionalStats.usdRate))", .generic),
|
||||
.stars
|
||||
)
|
||||
|
||||
@ -835,9 +836,9 @@ class StatsOverviewItemNode: ListViewItemNode {
|
||||
item.context,
|
||||
params.width,
|
||||
item.presentationData,
|
||||
formatBalanceText(stats.balances.availableBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||
formatTonAmountText(stats.balances.availableBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||
item.presentationData.strings.Monetization_Overview_Available,
|
||||
(stats.balances.availableBalance == 0 ? "" : "≈\(formatUsdValue(stats.balances.availableBalance, rate: stats.usdRate))", .generic),
|
||||
(stats.balances.availableBalance == 0 ? "" : "≈\(formatTonUsdValue(stats.balances.availableBalance, rate: stats.usdRate))", .generic),
|
||||
.ton
|
||||
)
|
||||
|
||||
@ -845,9 +846,9 @@ class StatsOverviewItemNode: ListViewItemNode {
|
||||
item.context,
|
||||
params.width,
|
||||
item.presentationData,
|
||||
formatBalanceText(stats.balances.currentBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||
formatTonAmountText(stats.balances.currentBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||
item.presentationData.strings.Monetization_Overview_Current,
|
||||
(stats.balances.currentBalance == 0 ? "" : "≈\(formatUsdValue(stats.balances.currentBalance, rate: stats.usdRate))", .generic),
|
||||
(stats.balances.currentBalance == 0 ? "" : "≈\(formatTonUsdValue(stats.balances.currentBalance, rate: stats.usdRate))", .generic),
|
||||
.ton
|
||||
)
|
||||
|
||||
@ -855,9 +856,9 @@ class StatsOverviewItemNode: ListViewItemNode {
|
||||
item.context,
|
||||
params.width,
|
||||
item.presentationData,
|
||||
formatBalanceText(stats.balances.overallRevenue, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||
formatTonAmountText(stats.balances.overallRevenue, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator),
|
||||
item.presentationData.strings.Monetization_Overview_Total,
|
||||
(stats.balances.overallRevenue == 0 ? "" : "≈\(formatUsdValue(stats.balances.overallRevenue, rate: stats.usdRate))", .generic),
|
||||
(stats.balances.overallRevenue == 0 ? "" : "≈\(formatTonUsdValue(stats.balances.overallRevenue, rate: stats.usdRate))", .generic),
|
||||
.ton
|
||||
)
|
||||
|
||||
@ -872,7 +873,7 @@ class StatsOverviewItemNode: ListViewItemNode {
|
||||
item.presentationData,
|
||||
presentationStringsFormattedNumber(Int32(stats.balances.availableBalance), item.presentationData.dateTimeFormat.groupingSeparator),
|
||||
item.presentationData.strings.Monetization_StarsProceeds_Available,
|
||||
(stats.balances.availableBalance == 0 ? "" : "≈\(formatUsdValue(stats.balances.availableBalance, rate: stats.usdRate))", .generic),
|
||||
(stats.balances.availableBalance == 0 ? "" : "≈\(formatTonUsdValue(stats.balances.availableBalance, rate: stats.usdRate))", .generic),
|
||||
.stars
|
||||
)
|
||||
|
||||
@ -882,7 +883,7 @@ class StatsOverviewItemNode: ListViewItemNode {
|
||||
item.presentationData,
|
||||
presentationStringsFormattedNumber(Int32(stats.balances.currentBalance), item.presentationData.dateTimeFormat.groupingSeparator),
|
||||
item.presentationData.strings.Monetization_StarsProceeds_Current,
|
||||
(stats.balances.currentBalance == 0 ? "" : "≈\(formatUsdValue(stats.balances.currentBalance, rate: stats.usdRate))", .generic),
|
||||
(stats.balances.currentBalance == 0 ? "" : "≈\(formatTonUsdValue(stats.balances.currentBalance, rate: stats.usdRate))", .generic),
|
||||
.stars
|
||||
)
|
||||
|
||||
@ -892,7 +893,7 @@ class StatsOverviewItemNode: ListViewItemNode {
|
||||
item.presentationData,
|
||||
presentationStringsFormattedNumber(Int32(stats.balances.overallRevenue), item.presentationData.dateTimeFormat.groupingSeparator),
|
||||
item.presentationData.strings.Monetization_StarsProceeds_Total,
|
||||
(stats.balances.overallRevenue == 0 ? "" : "≈\(formatUsdValue(stats.balances.overallRevenue, rate: stats.usdRate))", .generic),
|
||||
(stats.balances.overallRevenue == 0 ? "" : "≈\(formatTonUsdValue(stats.balances.overallRevenue, rate: stats.usdRate))", .generic),
|
||||
.stars
|
||||
)
|
||||
|
||||
|
@ -139,7 +139,7 @@ private final class SheetContent: CombinedComponent {
|
||||
switch component.transaction {
|
||||
case let .proceeds(amount, fromDate, toDate):
|
||||
labelColor = theme.list.itemDisclosureActions.constructive.fillColor
|
||||
amountString = amountAttributedString(formatBalanceText(amount, decimalSeparator: dateTimeFormat.decimalSeparator, showPlus: true), integralFont: integralFont, fractionalFont: fractionalFont, color: labelColor).mutableCopy() as! NSMutableAttributedString
|
||||
amountString = tonAmountAttributedString(formatTonAmountText(amount, decimalSeparator: dateTimeFormat.decimalSeparator, showPlus: true), integralFont: integralFont, fractionalFont: fractionalFont, color: labelColor).mutableCopy() as! NSMutableAttributedString
|
||||
dateString = "\(stringForMediumCompactDate(timestamp: fromDate, strings: strings, dateTimeFormat: dateTimeFormat)) – \(stringForMediumCompactDate(timestamp: toDate, strings: strings, dateTimeFormat: dateTimeFormat))"
|
||||
titleString = strings.Monetization_TransactionInfo_Proceeds
|
||||
buttonTitle = strings.Common_OK
|
||||
@ -147,7 +147,7 @@ private final class SheetContent: CombinedComponent {
|
||||
showPeer = true
|
||||
case let .withdrawal(status, amount, date, provider, _, transactionUrl):
|
||||
labelColor = theme.list.itemDestructiveColor
|
||||
amountString = amountAttributedString(formatBalanceText(amount, decimalSeparator: dateTimeFormat.groupingSeparator), integralFont: integralFont, fractionalFont: fractionalFont, color: labelColor).mutableCopy() as! NSMutableAttributedString
|
||||
amountString = tonAmountAttributedString(formatTonAmountText(amount, decimalSeparator: dateTimeFormat.groupingSeparator), integralFont: integralFont, fractionalFont: fractionalFont, color: labelColor).mutableCopy() as! NSMutableAttributedString
|
||||
dateString = stringForFullDate(timestamp: date, strings: strings, dateTimeFormat: dateTimeFormat)
|
||||
|
||||
switch status {
|
||||
@ -166,7 +166,7 @@ private final class SheetContent: CombinedComponent {
|
||||
case let .refund(amount, date, _):
|
||||
labelColor = theme.list.itemDisclosureActions.constructive.fillColor
|
||||
titleString = strings.Monetization_TransactionInfo_Refund
|
||||
amountString = amountAttributedString(formatBalanceText(amount, decimalSeparator: dateTimeFormat.decimalSeparator, showPlus: true), integralFont: integralFont, fractionalFont: fractionalFont, color: labelColor).mutableCopy() as! NSMutableAttributedString
|
||||
amountString = tonAmountAttributedString(formatTonAmountText(amount, decimalSeparator: dateTimeFormat.decimalSeparator, showPlus: true), integralFont: integralFont, fractionalFont: fractionalFont, color: labelColor).mutableCopy() as! NSMutableAttributedString
|
||||
dateString = stringForFullDate(timestamp: date, strings: strings, dateTimeFormat: dateTimeFormat)
|
||||
buttonTitle = strings.Common_OK
|
||||
explorerUrl = nil
|
||||
|
@ -1044,8 +1044,6 @@ public func universalServiceMessageString(presentationData: (PresentationTheme,
|
||||
attributedString = mutableString
|
||||
case .unknown:
|
||||
attributedString = nil
|
||||
case .paymentRefunded, .giftStars:
|
||||
attributedString = nil
|
||||
}
|
||||
|
||||
break
|
||||
|
@ -3,19 +3,19 @@ import UIKit
|
||||
|
||||
let walletAddressLength: Int = 48
|
||||
|
||||
func formatAddress(_ address: String) -> String {
|
||||
public func formatTonAddress(_ address: String) -> String {
|
||||
var address = address
|
||||
address.insert("\n", at: address.index(address.startIndex, offsetBy: address.count / 2))
|
||||
return address
|
||||
}
|
||||
|
||||
func formatUsdValue(_ value: Int64, divide: Bool = true, rate: Double) -> String {
|
||||
public func formatTonUsdValue(_ value: Int64, divide: Bool = true, rate: Double) -> String {
|
||||
let normalizedValue: Double = divide ? Double(value) / 1000000000 : Double(value)
|
||||
let formattedValue = String(format: "%0.2f", normalizedValue * rate)
|
||||
return "$\(formattedValue)"
|
||||
}
|
||||
|
||||
func formatBalanceText(_ value: Int64, decimalSeparator: String, showPlus: Bool = false) -> String {
|
||||
public func formatTonAmountText(_ value: Int64, decimalSeparator: String, showPlus: Bool = false) -> String {
|
||||
var balanceText = "\(abs(value))"
|
||||
while balanceText.count < 10 {
|
||||
balanceText.insert("0", at: balanceText.startIndex)
|
||||
@ -48,7 +48,7 @@ func formatBalanceText(_ value: Int64, decimalSeparator: String, showPlus: Bool
|
||||
}
|
||||
|
||||
private let invalidAddressCharacters = CharacterSet(charactersIn: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=").inverted
|
||||
func isValidAddress(_ address: String, exactLength: Bool = false) -> Bool {
|
||||
public func isValidTonAddress(_ address: String, exactLength: Bool = false) -> Bool {
|
||||
if address.count > walletAddressLength || address.rangeOfCharacter(from: invalidAddressCharacters) != nil {
|
||||
return false
|
||||
}
|
||||
@ -59,7 +59,7 @@ func isValidAddress(_ address: String, exactLength: Bool = false) -> Bool {
|
||||
}
|
||||
|
||||
private let amountDelimeterCharacters = CharacterSet(charactersIn: "0123456789-+").inverted
|
||||
func amountAttributedString(_ string: String, integralFont: UIFont, fractionalFont: UIFont, color: UIColor) -> NSAttributedString {
|
||||
public func tonAmountAttributedString(_ string: String, integralFont: UIFont, fractionalFont: UIFont, color: UIColor) -> NSAttributedString {
|
||||
let result = NSMutableAttributedString()
|
||||
if let range = string.rangeOfCharacter(from: amountDelimeterCharacters) {
|
||||
let integralPart = String(string[..<range.lowerBound])
|
||||
@ -71,3 +71,4 @@ func amountAttributedString(_ string: String, integralFont: UIFont, fractionalFo
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
@ -1689,7 +1689,7 @@ private func infoItems(data: PeerInfoScreenData?, context: AccountContext, prese
|
||||
if overallRevenueBalance > 0 || overallStarsBalance > 0 {
|
||||
var string = ""
|
||||
if overallRevenueBalance > 0 {
|
||||
string.append("#\(revenueBalance)")
|
||||
string.append("#\(formatTonAmountText(revenueBalance, decimalSeparator: presentationData.dateTimeFormat.decimalSeparator))")
|
||||
}
|
||||
if overallStarsBalance > 0 {
|
||||
if !string.isEmpty {
|
||||
|
@ -288,7 +288,7 @@ public final class StarsImageComponent: Component {
|
||||
return false
|
||||
}
|
||||
case let .gift(lhsCount):
|
||||
if case let .gift = rhs(rhsCount) {
|
||||
if case let .gift(rhsCount) = rhs, lhsCount == rhsCount {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
|
@ -362,7 +362,7 @@ private final class StarsTransactionSheetContent: CombinedComponent {
|
||||
|
||||
let imageSubject: StarsImageComponent.Subject
|
||||
if isGift {
|
||||
imageSubject = .gift
|
||||
imageSubject = .gift(count)
|
||||
} else if !media.isEmpty {
|
||||
imageSubject = .media(media)
|
||||
} else if let photo {
|
||||
|
@ -168,7 +168,7 @@ final class StarsBalanceComponent: Component {
|
||||
|
||||
let subtitleText: String
|
||||
if let rate = component.rate {
|
||||
subtitleText = "≈\(formatUsdValue(component.count, rate: rate))"
|
||||
subtitleText = "≈\(formatStarsUsdValue(component.count, rate: rate))"
|
||||
} else {
|
||||
subtitleText = component.strings.Stars_Intro_YourBalance
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ final class StarsOverviewItemComponent: Component {
|
||||
}
|
||||
|
||||
let valueString = presentationStringsFormattedNumber(Int32(component.value), component.dateTimeFormat.groupingSeparator)
|
||||
let usdValueString = formatUsdValue(component.value, rate: component.rate)
|
||||
let usdValueString = formatStarsUsdValue(component.value, rate: component.rate)
|
||||
|
||||
let valueSize = self.value.update(
|
||||
transition: .immediate,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import Foundation
|
||||
|
||||
func formatUsdValue(_ value: Int64, rate: Double) -> String {
|
||||
func formatStarsUsdValue(_ value: Int64, rate: Double) -> String {
|
||||
let formattedValue = String(format: "%0.2f", (Double(value)) * rate)
|
||||
return "$\(formattedValue)"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user