diff --git a/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/AvatarEditorScreen.swift b/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/AvatarEditorScreen.swift index c94667f4e7..27b026e833 100644 --- a/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/AvatarEditorScreen.swift +++ b/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/AvatarEditorScreen.swift @@ -1370,15 +1370,21 @@ final class AvatarEditorScreenComponent: Component { } private func presentPremiumToast() { - guard let environment = self.environment, let component = self.component, let parentController = environment.controller() else { + guard let environment = self.environment, let component = self.component, let state = self.state, let parentController = environment.controller() else { return } HapticFeedback().impact(.light) + var text: String = environment.strings.AvatarEditor_PremiumNeeded_Background + if let selectedFile = state.selectedFile { + if selectedFile.isSticker { + text = environment.strings.AvatarEditor_PremiumNeeded_Sticker + } + } let controller = premiumAlertController( context: component.context, parentController: parentController, - text: environment.strings.AvatarEditor_PremiumNeeded_Background + text: text ) parentController.present(controller, in: .window(.root)) } diff --git a/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/BackgroundColorComponent.swift b/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/BackgroundColorComponent.swift index cf3df43339..dee2b7766f 100644 --- a/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/BackgroundColorComponent.swift +++ b/submodules/TelegramUI/Components/AvatarEditorScreen/Sources/BackgroundColorComponent.swift @@ -131,7 +131,7 @@ final class BackgroundColorComponent: Component { background: values[i].0, isCustom: values[i].1, isSelected: component.selectedValue == values[i].0, - isLocked: i >= 7 && !values[i].1, + isLocked: i >= 7 && !values[i].1 && !component.isPremium, action: { if let value = values[i].0, component.selectedValue != value { component.updateValue(value) diff --git a/submodules/TelegramUI/Components/Chat/ChatMessageNotificationItem/Sources/ChatMessageNotificationItem.swift b/submodules/TelegramUI/Components/Chat/ChatMessageNotificationItem/Sources/ChatMessageNotificationItem.swift index af8e21f43d..b9b6f47575 100644 --- a/submodules/TelegramUI/Components/Chat/ChatMessageNotificationItem/Sources/ChatMessageNotificationItem.swift +++ b/submodules/TelegramUI/Components/Chat/ChatMessageNotificationItem/Sources/ChatMessageNotificationItem.swift @@ -68,6 +68,9 @@ public final class ChatMessageNotificationItem: NotificationItem { private let compactAvatarFont = avatarPlaceholderFont(size: 20.0) private let avatarFont = avatarPlaceholderFont(size: 24.0) +private let telegramCodeRegex = try? NSRegularExpression(pattern: "(?<=: )\\b\\d{5,8}\\b(?=\\.)", options: []) +private let loginCodeRegex = try? NSRegularExpression(pattern: "\\b\\d{5,8}\\b", options: []) + final class ChatMessageNotificationItemNode: NotificationItemNode { private var item: ChatMessageNotificationItem? @@ -327,6 +330,30 @@ final class ChatMessageNotificationItemNode: NotificationItemNode { } } + var customEntities: [MessageTextEntity] = [] + if item.messages[0].id.peerId.isTelegramNotifications || item.messages[0].id.peerId.isVerificationCodes { + let regex: NSRegularExpression? + if item.messages[0].id.peerId.isTelegramNotifications { + regex = telegramCodeRegex + } else { + regex = loginCodeRegex + } + if let matches = regex?.matches(in: item.messages[0].text, options: [], range: NSMakeRange(0, (item.messages[0].text as NSString).length)) { + if let first = matches.first { + customEntities.append(MessageTextEntity(range: first.range.location ..< first.range.location + first.range.length, type: .Spoiler)) + } + } + } + + if !customEntities.isEmpty { + if messageEntities == nil { + messageEntities = customEntities + } else if var currentEntities = messageEntities { + currentEntities.append(contentsOf: customEntities) + messageEntities = customEntities + } + } + let textFont = compact ? Font.regular(15.0) : Font.regular(16.0) let textColor = presentationData.theme.inAppNotification.primaryTextColor var attributedMessageText: NSAttributedString @@ -406,7 +433,7 @@ final class ChatMessageNotificationItemNode: NotificationItemNode { let _ = titleApply() let makeTextLayout = TextNodeWithEntities.asyncLayout(self.textNode) - let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: self.textAttributedText, backgroundColor: nil, maximumNumberOfLines: 2, truncationType: .end, constrainedSize: CGSize(width: width - leftInset - rightInset, height: CGFloat.greatestFiniteMagnitude), alignment: .left, lineSpacing: 0.0, cutout: nil, insets: UIEdgeInsets())) + let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: self.textAttributedText, backgroundColor: nil, maximumNumberOfLines: 2, truncationType: .end, constrainedSize: CGSize(width: width - leftInset - rightInset, height: CGFloat.greatestFiniteMagnitude), alignment: .left, lineSpacing: 0.0, cutout: nil, insets: UIEdgeInsets(), displaySpoilers: false)) let _ = titleApply() if let item = self.item { diff --git a/submodules/TelegramUI/Components/Gifts/GiftViewScreen/Sources/GiftViewScreen.swift b/submodules/TelegramUI/Components/Gifts/GiftViewScreen/Sources/GiftViewScreen.swift index 469950558b..62d3a6dbad 100644 --- a/submodules/TelegramUI/Components/Gifts/GiftViewScreen/Sources/GiftViewScreen.swift +++ b/submodules/TelegramUI/Components/Gifts/GiftViewScreen/Sources/GiftViewScreen.swift @@ -1316,10 +1316,13 @@ private final class GiftViewSheetContent: CombinedComponent { exported = true func formatAddress(_ str: String) -> String { - var result = str - let middleIndex = result.index(result.startIndex, offsetBy: str.count / 2) - result.insert("\n", at: middleIndex) - return result + guard str.count == 48 && !str.hasSuffix(".ton") else { + return str + } + var result = str + let middleIndex = result.index(result.startIndex, offsetBy: str.count / 2) + result.insert("\n", at: middleIndex) + return result } tableItems.append(.init( @@ -1910,7 +1913,7 @@ private final class GiftViewSheetContent: CombinedComponent { } var addressToOpen: String? var descriptionText: String - if let uniqueGift, let address = uniqueGift.giftAddress { + if let uniqueGift, let address = uniqueGift.giftAddress, case .address = uniqueGift.owner { addressToOpen = address descriptionText = strings.Gift_View_TonGiftAddressInfo } else if savedToProfile { diff --git a/submodules/TelegramUI/Sources/ChatControllerOpenAttachmentMenu.swift b/submodules/TelegramUI/Sources/ChatControllerOpenAttachmentMenu.swift index 7844f12364..218d5d686a 100644 --- a/submodules/TelegramUI/Sources/ChatControllerOpenAttachmentMenu.swift +++ b/submodules/TelegramUI/Sources/ChatControllerOpenAttachmentMenu.swift @@ -218,7 +218,7 @@ extension ChatControllerImpl { } } - if let peer = self.presentationInterfaceState.renderedPeer?.peer, showPremiumGift, let user = peer as? TelegramUser, !user.isPremium && !user.isDeleted && user.botInfo == nil && !user.flags.contains(.isSupport) { + if let peer = self.presentationInterfaceState.renderedPeer?.peer, showPremiumGift, let user = peer as? TelegramUser, !user.isDeleted && user.botInfo == nil && !user.flags.contains(.isSupport) { premiumGiftOptions = self.presentationInterfaceState.premiumGiftOptions } else { premiumGiftOptions = []