diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index 0ccbe73b30..d9578e9b5f 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -14762,3 +14762,14 @@ Sorry for the inconvenience."; "FaceScan.Instruction.Rotate" = "Move your head slowly to\ncomplete the circle"; "Gift.Buy.Confirm.BuyForTon" = "Buy for %@ TON"; + +"Gift.View.DisplayedInfoNew" = "This gift is visible. [Hide from Profile >]()"; +"Gift.View.HiddenInfoNew" = "This gift is hidden. [Show on Profile >]()"; + +"Gift.View.DisplayedInfoChannelNew" = "This gift is visible. [Hide from Profile >]()"; +"Gift.View.HiddenInfoChannelNew" = "This gift is hidden. [Show on Profile >]()"; + +"Gift.View.Upgrade" = "Upgrade"; + +"Gift.View.UpgradeDescription" = "Upgrade this gift to turn it to a unique collectible."; +"Gift.View.UpgradeFreeDescription" = "Upgrade this gift for free to turn it to a unique collectible."; diff --git a/submodules/TelegramUI/Components/Gifts/GiftViewScreen/Sources/GiftViewScreen.swift b/submodules/TelegramUI/Components/Gifts/GiftViewScreen/Sources/GiftViewScreen.swift index dd233c0f29..18ff93aa9e 100644 --- a/submodules/TelegramUI/Components/Gifts/GiftViewScreen/Sources/GiftViewScreen.swift +++ b/submodules/TelegramUI/Components/Gifts/GiftViewScreen/Sources/GiftViewScreen.swift @@ -2239,7 +2239,11 @@ private final class GiftViewSheetContent: CombinedComponent { } else if let convertStars, !upgraded { if !converted { if canUpgrade || upgradeStars != nil { - descriptionText = isChannelGift ? strings.Gift_View_KeepUpgradeOrConvertDescription_Channel(strings.Gift_View_KeepOrConvertDescription_Stars(Int32(convertStars))).string : strings.Gift_View_KeepUpgradeOrConvertDescription(strings.Gift_View_KeepOrConvertDescription_Stars(Int32(convertStars))).string + if let upgradeStars, upgradeStars > 0 { + descriptionText = strings.Gift_View_UpgradeFreeDescription + } else { + descriptionText = strings.Gift_View_UpgradeDescription + } } else { descriptionText = isChannelGift ? strings.Gift_View_KeepOrConvertDescription_Channel(strings.Gift_View_KeepOrConvertDescription_Stars(Int32(convertStars))).string : strings.Gift_View_KeepOrConvertDescription(strings.Gift_View_KeepOrConvertDescription_Stars(Int32(convertStars))).string } @@ -3047,6 +3051,17 @@ private final class GiftViewSheetContent: CombinedComponent { canConvert = false } } + + if canConvert, let date = subject.arguments?.date { + let configuration = GiftConfiguration.with(appConfiguration: component.context.currentAppConfiguration.with { $0 }) + let starsConvertMaxDate = date + configuration.convertToStarsPeriod + + let currentTime = Int32(CFAbsoluteTimeGetCurrent() + kCFAbsoluteTimeIntervalSince1970) + if currentTime > starsConvertMaxDate { + canConvert = false + } + } + if let convertStars, incoming && !converted && canConvert { tableItems.append(.init( id: "value_convert", @@ -3121,23 +3136,6 @@ private final class GiftViewSheetContent: CombinedComponent { component: AnyComponent(MultilineTextComponent(text: .plain(NSAttributedString(string: strings.Gift_View_Status_NonUnique, font: tableFont, textColor: tableTextColor)))) ) ) - if incoming { - items.append( - AnyComponentWithIdentity( - id: AnyHashable(1), - component: AnyComponent(Button( - content: AnyComponent(ButtonContentComponent( - context: component.context, - text: strings.Gift_View_Status_Upgrade, - color: theme.list.itemAccentColor - )), - action: { [weak state] in - state?.requestUpgradePreview() - } - )) - ) - ) - } tableItems.append(.init( id: "status", title: strings.Gift_View_Status, @@ -3241,15 +3239,11 @@ private final class GiftViewSheetContent: CombinedComponent { } else if let uniqueGift, let address = uniqueGift.giftAddress, case .address = uniqueGift.owner { addressToOpen = address descriptionText = strings.Gift_View_TonGiftAddressInfo - } else if savedToProfile { - descriptionText = isChannelGift ? strings.Gift_View_DisplayedInfoHide_Channel : strings.Gift_View_DisplayedInfoHide - } else if let upgradeStars, upgradeStars > 0 && !upgraded { - descriptionText = isChannelGift ? strings.Gift_View_HiddenInfoShow_Channel : strings.Gift_View_HiddenInfoShow } else { - if let _ = uniqueGift { - descriptionText = isChannelGift ? strings.Gift_View_UniqueHiddenInfo_Channel : strings.Gift_View_UniqueHiddenInfo + if isChannelGift { + descriptionText = savedToProfile ? strings.Gift_View_DisplayedInfoChannelNew : strings.Gift_View_HiddenInfoChannelNew } else { - descriptionText = isChannelGift ? strings.Gift_View_HiddenInfo_Channel : strings.Gift_View_HiddenInfo + descriptionText = savedToProfile ? strings.Gift_View_DisplayedInfoNew : strings.Gift_View_HiddenInfoNew } } @@ -3484,13 +3478,18 @@ private final class GiftViewSheetContent: CombinedComponent { availableSize: buttonSize, transition: context.transition ) - } else if incoming && !converted && !upgraded, let upgradeStars, upgradeStars > 0 { - let buttonTitle = strings.Gift_View_UpgradeForFree + } else if incoming && !converted && !upgraded { + let buttonTitle: String + if let upgradeStars, upgradeStars > 0 { + buttonTitle = strings.Gift_View_UpgradeForFree + } else { + buttonTitle = strings.Gift_View_Upgrade + } buttonChild = button.update( component: ButtonComponent( background: buttonBackground.withIsShimmering(true), content: AnyComponentWithIdentity( - id: AnyHashable("freeUpgrade"), + id: AnyHashable("previewUpgrade"), component: AnyComponent(HStack([ AnyComponentWithIdentity(id: 0, component: AnyComponent( MultilineTextComponent(text: .plain(NSAttributedString(string: buttonTitle, font: Font.semibold(17.0), textColor: theme.list.itemCheckColors.foregroundColor, paragraphAlignment: .center)) diff --git a/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/PeerInfoGiftsPaneNode.swift b/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/PeerInfoGiftsPaneNode.swift index 1b934a323c..f43ec92a6b 100644 --- a/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/PeerInfoGiftsPaneNode.swift +++ b/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/PeerInfoGiftsPaneNode.swift @@ -618,7 +618,7 @@ public final class PeerInfoGiftsPaneNode: ASDisplayNode, PeerInfoPaneNode, UIScr context: self.context, colors: TabSelectorComponent.Colors( foreground: params.presentationData.theme.list.itemSecondaryTextColor, - selection: params.presentationData.theme.list.itemPrimaryTextColor.withMultipliedAlpha(0.05), + selection: params.presentationData.theme.list.itemSecondaryTextColor.withMultipliedAlpha(0.15), simple: true ), theme: params.presentationData.theme, diff --git a/submodules/TelegramUI/Components/Stars/StarsTransactionScreen/Sources/StarsTransactionScreen.swift b/submodules/TelegramUI/Components/Stars/StarsTransactionScreen/Sources/StarsTransactionScreen.swift index f81d39c1cc..d72766b9f7 100644 --- a/submodules/TelegramUI/Components/Stars/StarsTransactionScreen/Sources/StarsTransactionScreen.swift +++ b/submodules/TelegramUI/Components/Stars/StarsTransactionScreen/Sources/StarsTransactionScreen.swift @@ -927,8 +927,13 @@ private final class StarsTransactionSheetContent: CombinedComponent { title = count.amount < StarsAmount.zero || countIsGeneric ? strings.Stars_Transaction_To : strings.Stars_Transaction_From } + var isGiftResale = false + if count.amount < StarsAmount.zero, case let .transaction(transaction, _) = subject, transaction.flags.contains(.isStarGiftResale) { + isGiftResale = true + } + let toComponent: AnyComponent - if let _ = giftAnimationSubject, !toPeer.isDeleted && !isGiftUpgrade { + if let _ = giftAnimationSubject, !toPeer.isDeleted && !isGiftUpgrade && !isGiftResale { toComponent = AnyComponent( HStack([ AnyComponentWithIdentity(