Various improvements

This commit is contained in:
Ilya Laktyushin
2025-03-14 13:35:44 +04:00
parent ff34190f92
commit fed338985d
38 changed files with 914 additions and 534 deletions

View File

@@ -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?
@@ -330,6 +333,31 @@ final class ChatMessageNotificationItemNode: NotificationItemNode {
let textFont = compact ? Font.regular(15.0) : Font.regular(16.0)
let textColor = presentationData.theme.inAppNotification.primaryTextColor
var attributedMessageText: NSAttributedString
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
}
}
if let messageEntities = messageEntities {
attributedMessageText = stringWithAppliedEntities(messageText, entities: messageEntities, baseColor: textColor, linkColor: textColor, baseFont: textFont, linkFont: textFont, boldFont: textFont, italicFont: textFont, boldItalicFont: textFont, fixedFont: textFont, blockQuoteFont: textFont, underlineLinks: false, message: item.messages.first)
} else {
@@ -406,7 +434,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 {