Various fixes

This commit is contained in:
Ilya Laktyushin 2024-07-13 18:46:42 +04:00
parent 57c071fa4e
commit 6054069e60
13 changed files with 58 additions and 40 deletions

View File

@ -12493,6 +12493,21 @@ Sorry for the inconvenience.";
"Stars.Purchase.GiftStars" = "Gift Stars"; "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.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.Sent" = "%1$@ sent you a gift for %2$@";
"Notification.StarsGift.SentYou" = "You sent a gift for %@"; "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."; "Notification.StarsGift.SubtitleYou" = "With Stars, %@ will be able to unlock content and services on Telegram.";
"Bot.Settings" = "Bot Settings"; "Bot.Settings" = "Bot Settings";
"Browser.OpenInNewTap" = "";

View File

@ -1150,7 +1150,7 @@ private enum StatsEntry: ItemListNodeEntry {
detailText = stringForMediumCompactDate(timestamp: date, strings: presentationData.strings, dateTimeFormat: presentationData.dateTimeFormat) 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) 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) { if let range = label.string.range(of: "$"), let icon = generateTintedImage(image: UIImage(bundleImageName: "Ads/TonMedium"), color: labelColor) {

View File

@ -12,6 +12,7 @@ import TextFormat
import ComponentFlow import ComponentFlow
import ButtonComponent import ButtonComponent
import BundleIconComponent import BundleIconComponent
import TelegramStringFormatting
final class MonetizationBalanceItem: ListViewItem, ItemListItem { final class MonetizationBalanceItem: ListViewItem, ItemListItem {
let context: AccountContext let context: AccountContext
@ -175,12 +176,12 @@ final class MonetizationBalanceItemNode: ListViewItemNode, ItemListItemNode {
var isStars = false var isStars = false
if let stats = item.stats as? RevenueStats { if let stats = item.stats as? RevenueStats {
let cryptoValue = formatBalanceText(stats.balances.availableBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator) let cryptoValue = formatTonAmountText(stats.balances.availableBalance, decimalSeparator: item.presentationData.dateTimeFormat.decimalSeparator)
amountString = amountAttributedString(cryptoValue, integralFont: integralFont, fractionalFont: fractionalFont, color: item.presentationData.theme.list.itemPrimaryTextColor) amountString = tonAmountAttributedString(cryptoValue, integralFont: integralFont, fractionalFont: fractionalFont, color: item.presentationData.theme.list.itemPrimaryTextColor)
value = stats.balances.availableBalance == 0 ? "" : "\(formatUsdValue(stats.balances.availableBalance, rate: stats.usdRate))" value = stats.balances.availableBalance == 0 ? "" : "\(formatTonUsdValue(stats.balances.availableBalance, rate: stats.usdRate))"
} else if let stats = item.stats as? StarsRevenueStats { } 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) 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 isStars = true
} else { } else {
fatalError() fatalError()

View File

@ -10,6 +10,7 @@ import PresentationDataUtils
import EmojiTextAttachmentView import EmojiTextAttachmentView
import TextFormat import TextFormat
import AccountContext import AccountContext
import TelegramStringFormatting
protocol Stats { protocol Stats {
@ -200,7 +201,7 @@ private final class ValueItemNode: ASDisplayNode {
let valueString: NSAttributedString let valueString: NSAttributedString
if case .ton = mode { if case .ton = mode {
valueString = amountAttributedString(value, integralFont: valueFont, fractionalFont: smallValueFont, color: valueColor) valueString = tonAmountAttributedString(value, integralFont: valueFont, fractionalFont: smallValueFont, color: valueColor)
} else { } else {
valueString = NSAttributedString(string: value, font: valueFont, textColor: valueColor) valueString = NSAttributedString(string: value, font: valueFont, textColor: valueColor)
} }
@ -771,9 +772,9 @@ class StatsOverviewItemNode: ListViewItemNode {
item.context, item.context,
params.width, params.width,
item.presentationData, 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, 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 .ton
) )
@ -781,9 +782,9 @@ class StatsOverviewItemNode: ListViewItemNode {
item.context, item.context,
params.width, params.width,
item.presentationData, 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, 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 .ton
) )
@ -791,9 +792,9 @@ class StatsOverviewItemNode: ListViewItemNode {
item.context, item.context,
params.width, params.width,
item.presentationData, 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, 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 .ton
) )
@ -803,7 +804,7 @@ class StatsOverviewItemNode: ListViewItemNode {
item.presentationData, item.presentationData,
presentationStringsFormattedNumber(Int32(additionalStats.balances.availableBalance), item.presentationData.dateTimeFormat.groupingSeparator), 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 .stars
) )
@ -813,7 +814,7 @@ class StatsOverviewItemNode: ListViewItemNode {
item.presentationData, item.presentationData,
presentationStringsFormattedNumber(Int32(additionalStats.balances.currentBalance), item.presentationData.dateTimeFormat.groupingSeparator), 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 .stars
) )
@ -823,7 +824,7 @@ class StatsOverviewItemNode: ListViewItemNode {
item.presentationData, item.presentationData,
presentationStringsFormattedNumber(Int32(additionalStats.balances.overallRevenue), item.presentationData.dateTimeFormat.groupingSeparator), 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 .stars
) )
@ -835,9 +836,9 @@ class StatsOverviewItemNode: ListViewItemNode {
item.context, item.context,
params.width, params.width,
item.presentationData, 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, 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 .ton
) )
@ -845,9 +846,9 @@ class StatsOverviewItemNode: ListViewItemNode {
item.context, item.context,
params.width, params.width,
item.presentationData, 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, 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 .ton
) )
@ -855,9 +856,9 @@ class StatsOverviewItemNode: ListViewItemNode {
item.context, item.context,
params.width, params.width,
item.presentationData, 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, 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 .ton
) )
@ -872,7 +873,7 @@ class StatsOverviewItemNode: ListViewItemNode {
item.presentationData, item.presentationData,
presentationStringsFormattedNumber(Int32(stats.balances.availableBalance), item.presentationData.dateTimeFormat.groupingSeparator), presentationStringsFormattedNumber(Int32(stats.balances.availableBalance), item.presentationData.dateTimeFormat.groupingSeparator),
item.presentationData.strings.Monetization_StarsProceeds_Available, 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 .stars
) )
@ -882,7 +883,7 @@ class StatsOverviewItemNode: ListViewItemNode {
item.presentationData, item.presentationData,
presentationStringsFormattedNumber(Int32(stats.balances.currentBalance), item.presentationData.dateTimeFormat.groupingSeparator), presentationStringsFormattedNumber(Int32(stats.balances.currentBalance), item.presentationData.dateTimeFormat.groupingSeparator),
item.presentationData.strings.Monetization_StarsProceeds_Current, 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 .stars
) )
@ -892,7 +893,7 @@ class StatsOverviewItemNode: ListViewItemNode {
item.presentationData, item.presentationData,
presentationStringsFormattedNumber(Int32(stats.balances.overallRevenue), item.presentationData.dateTimeFormat.groupingSeparator), presentationStringsFormattedNumber(Int32(stats.balances.overallRevenue), item.presentationData.dateTimeFormat.groupingSeparator),
item.presentationData.strings.Monetization_StarsProceeds_Total, 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 .stars
) )

View File

@ -139,7 +139,7 @@ private final class SheetContent: CombinedComponent {
switch component.transaction { switch component.transaction {
case let .proceeds(amount, fromDate, toDate): case let .proceeds(amount, fromDate, toDate):
labelColor = theme.list.itemDisclosureActions.constructive.fillColor 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))" dateString = "\(stringForMediumCompactDate(timestamp: fromDate, strings: strings, dateTimeFormat: dateTimeFormat)) \(stringForMediumCompactDate(timestamp: toDate, strings: strings, dateTimeFormat: dateTimeFormat))"
titleString = strings.Monetization_TransactionInfo_Proceeds titleString = strings.Monetization_TransactionInfo_Proceeds
buttonTitle = strings.Common_OK buttonTitle = strings.Common_OK
@ -147,7 +147,7 @@ private final class SheetContent: CombinedComponent {
showPeer = true showPeer = true
case let .withdrawal(status, amount, date, provider, _, transactionUrl): case let .withdrawal(status, amount, date, provider, _, transactionUrl):
labelColor = theme.list.itemDestructiveColor 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) dateString = stringForFullDate(timestamp: date, strings: strings, dateTimeFormat: dateTimeFormat)
switch status { switch status {
@ -166,7 +166,7 @@ private final class SheetContent: CombinedComponent {
case let .refund(amount, date, _): case let .refund(amount, date, _):
labelColor = theme.list.itemDisclosureActions.constructive.fillColor labelColor = theme.list.itemDisclosureActions.constructive.fillColor
titleString = strings.Monetization_TransactionInfo_Refund 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) dateString = stringForFullDate(timestamp: date, strings: strings, dateTimeFormat: dateTimeFormat)
buttonTitle = strings.Common_OK buttonTitle = strings.Common_OK
explorerUrl = nil explorerUrl = nil

View File

@ -1044,8 +1044,6 @@ public func universalServiceMessageString(presentationData: (PresentationTheme,
attributedString = mutableString attributedString = mutableString
case .unknown: case .unknown:
attributedString = nil attributedString = nil
case .paymentRefunded, .giftStars:
attributedString = nil
} }
break break

View File

@ -3,19 +3,19 @@ import UIKit
let walletAddressLength: Int = 48 let walletAddressLength: Int = 48
func formatAddress(_ address: String) -> String { public func formatTonAddress(_ address: String) -> String {
var address = address var address = address
address.insert("\n", at: address.index(address.startIndex, offsetBy: address.count / 2)) address.insert("\n", at: address.index(address.startIndex, offsetBy: address.count / 2))
return address 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 normalizedValue: Double = divide ? Double(value) / 1000000000 : Double(value)
let formattedValue = String(format: "%0.2f", normalizedValue * rate) let formattedValue = String(format: "%0.2f", normalizedValue * rate)
return "$\(formattedValue)" 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))" var balanceText = "\(abs(value))"
while balanceText.count < 10 { while balanceText.count < 10 {
balanceText.insert("0", at: balanceText.startIndex) 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 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 { if address.count > walletAddressLength || address.rangeOfCharacter(from: invalidAddressCharacters) != nil {
return false return false
} }
@ -59,7 +59,7 @@ func isValidAddress(_ address: String, exactLength: Bool = false) -> Bool {
} }
private let amountDelimeterCharacters = CharacterSet(charactersIn: "0123456789-+").inverted 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() let result = NSMutableAttributedString()
if let range = string.rangeOfCharacter(from: amountDelimeterCharacters) { if let range = string.rangeOfCharacter(from: amountDelimeterCharacters) {
let integralPart = String(string[..<range.lowerBound]) let integralPart = String(string[..<range.lowerBound])
@ -71,3 +71,4 @@ func amountAttributedString(_ string: String, integralFont: UIFont, fractionalFo
} }
return result return result
} }

View File

@ -1689,7 +1689,7 @@ private func infoItems(data: PeerInfoScreenData?, context: AccountContext, prese
if overallRevenueBalance > 0 || overallStarsBalance > 0 { if overallRevenueBalance > 0 || overallStarsBalance > 0 {
var string = "" var string = ""
if overallRevenueBalance > 0 { if overallRevenueBalance > 0 {
string.append("#\(revenueBalance)") string.append("#\(formatTonAmountText(revenueBalance, decimalSeparator: presentationData.dateTimeFormat.decimalSeparator))")
} }
if overallStarsBalance > 0 { if overallStarsBalance > 0 {
if !string.isEmpty { if !string.isEmpty {

View File

@ -288,7 +288,7 @@ public final class StarsImageComponent: Component {
return false return false
} }
case let .gift(lhsCount): case let .gift(lhsCount):
if case let .gift = rhs(rhsCount) { if case let .gift(rhsCount) = rhs, lhsCount == rhsCount {
return true return true
} else { } else {
return false return false

View File

@ -362,7 +362,7 @@ private final class StarsTransactionSheetContent: CombinedComponent {
let imageSubject: StarsImageComponent.Subject let imageSubject: StarsImageComponent.Subject
if isGift { if isGift {
imageSubject = .gift imageSubject = .gift(count)
} else if !media.isEmpty { } else if !media.isEmpty {
imageSubject = .media(media) imageSubject = .media(media)
} else if let photo { } else if let photo {

View File

@ -168,7 +168,7 @@ final class StarsBalanceComponent: Component {
let subtitleText: String let subtitleText: String
if let rate = component.rate { if let rate = component.rate {
subtitleText = "\(formatUsdValue(component.count, rate: rate))" subtitleText = "\(formatStarsUsdValue(component.count, rate: rate))"
} else { } else {
subtitleText = component.strings.Stars_Intro_YourBalance subtitleText = component.strings.Stars_Intro_YourBalance
} }

View File

@ -80,7 +80,7 @@ final class StarsOverviewItemComponent: Component {
} }
let valueString = presentationStringsFormattedNumber(Int32(component.value), component.dateTimeFormat.groupingSeparator) 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( let valueSize = self.value.update(
transition: .immediate, transition: .immediate,

View File

@ -1,6 +1,6 @@
import Foundation 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) let formattedValue = String(format: "%0.2f", (Double(value)) * rate)
return "$\(formattedValue)" return "$\(formattedValue)"
} }