[WIP] Animated emoji

This commit is contained in:
Ali
2022-07-08 19:53:20 +02:00
parent 1ac654e8b2
commit ed59ead31e
108 changed files with 1005 additions and 678 deletions

View File

@@ -1,5 +1,6 @@
import Foundation
import UIKit
import Postbox
import TelegramCore
import TelegramPresentationData
import TelegramUIPreferences
@@ -15,6 +16,10 @@ private func spoilerAttributes(primaryTextColor: UIColor) -> MarkdownAttributeSe
return MarkdownAttributeSet(font: titleFont, textColor: primaryTextColor, additionalAttributes: [TelegramTextAttributes.Spoiler: true])
}
private func customEmojiAttributes(primaryTextColor: UIColor, emoji: ChatTextInputTextCustomEmojiAttribute) -> MarkdownAttributeSet {
return MarkdownAttributeSet(font: titleFont, textColor: primaryTextColor, additionalAttributes: [ChatTextInputAttributes.customEmoji.rawValue: emoji])
}
private func peerMentionAttributes(primaryTextColor: UIColor, peerId: EnginePeer.Id) -> MarkdownAttributeSet {
return MarkdownAttributeSet(font: titleBoldFont, textColor: primaryTextColor, additionalAttributes: [TelegramTextAttributes.PeerMention: TelegramPeerMention(peerId: peerId, mention: "")])
}
@@ -176,9 +181,10 @@ public func universalServiceMessageString(presentationData: (PresentationTheme,
var type: PinnnedMediaType
if let pinnedMessage = pinnedMessage?._asMessage() {
let entities = (pinnedMessage.textEntitiesAttribute?.entities ?? []).filter { entity in
if case .Spoiler = entity.type {
switch entity.type {
case .Spoiler, .CustomEmoji:
return true
} else {
default:
return false
}
}
@@ -264,9 +270,18 @@ public func universalServiceMessageString(presentationData: (PresentationTheme,
let location = entityOffset + entity.range.startIndex
let length = max(0, min(entity.range.count, stringLength - location - 1))
if length > 0 {
let index = ranges.count
ranges.append((ranges.count, NSRange(location: location, length: length)))
attributes[index] = spoilerAttributes(primaryTextColor: primaryTextColor)
switch entity.type {
case .Spoiler:
let index = ranges.count
ranges.append((ranges.count, NSRange(location: location, length: length)))
attributes[index] = spoilerAttributes(primaryTextColor: primaryTextColor)
case let .CustomEmoji(stickerPack, fileId):
let index = ranges.count
ranges.append((ranges.count, NSRange(location: location, length: length)))
attributes[index] = customEmojiAttributes(primaryTextColor: primaryTextColor, emoji: ChatTextInputTextCustomEmojiAttribute(stickerPack: stickerPack, fileId: fileId, file: message.associatedMedia[MediaId(namespace: Namespaces.Media.CloudFile, id: fileId)] as? TelegramMediaFile))
default:
break
}
}
}
attributedString = addAttributesToStringWithRanges((string, ranges), body: bodyAttributes, argumentAttributes: attributes)
@@ -567,7 +582,7 @@ public func universalServiceMessageString(presentationData: (PresentationTheme,
}
}
case let .customText(text, entities):
attributedString = stringWithAppliedEntities(text, entities: entities, baseColor: primaryTextColor, linkColor: primaryTextColor, baseFont: titleFont, linkFont: titleBoldFont, boldFont: titleBoldFont, italicFont: titleFont, boldItalicFont: titleBoldFont, fixedFont: titleFont, blockQuoteFont: titleFont, underlineLinks: false)
attributedString = stringWithAppliedEntities(text, entities: entities, baseColor: primaryTextColor, linkColor: primaryTextColor, baseFont: titleFont, linkFont: titleBoldFont, boldFont: titleBoldFont, italicFont: titleFont, boldItalicFont: titleBoldFont, fixedFont: titleFont, blockQuoteFont: titleFont, underlineLinks: false, message: message._asMessage())
case let .botDomainAccessGranted(domain):
attributedString = NSAttributedString(string: strings.AuthSessions_Message(domain).string, font: titleFont, textColor: primaryTextColor)
case let .botSentSecureValues(types):