mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
60 lines
2.8 KiB
Swift
60 lines
2.8 KiB
Swift
import Foundation
|
|
import Postbox
|
|
import TelegramApi
|
|
|
|
|
|
func apiEntitiesFromMessageTextEntities(_ entities: [MessageTextEntity], associatedPeers: SimpleDictionary<PeerId, Peer>) -> [Api.MessageEntity] {
|
|
var apiEntities: [Api.MessageEntity] = []
|
|
|
|
for entity in entities {
|
|
let offset: Int32 = Int32(entity.range.lowerBound)
|
|
let length: Int32 = Int32(entity.range.upperBound - entity.range.lowerBound)
|
|
switch entity.type {
|
|
case .Unknown:
|
|
break
|
|
case .Mention:
|
|
apiEntities.append(.messageEntityMention(offset: offset, length: length))
|
|
case .Hashtag:
|
|
apiEntities.append(.messageEntityHashtag(offset: offset, length: length))
|
|
case .BotCommand:
|
|
apiEntities.append(.messageEntityBotCommand(offset: offset, length: length))
|
|
case .Url:
|
|
apiEntities.append(.messageEntityUrl(offset: offset, length: length))
|
|
case .Email:
|
|
apiEntities.append(.messageEntityEmail(offset: offset, length: length))
|
|
case .Bold:
|
|
apiEntities.append(.messageEntityBold(offset: offset, length: length))
|
|
case .Italic:
|
|
apiEntities.append(.messageEntityItalic(offset: offset, length: length))
|
|
case .Code:
|
|
apiEntities.append(.messageEntityCode(offset: offset, length: length))
|
|
case .Pre:
|
|
apiEntities.append(.messageEntityPre(offset: offset, length: length, language: ""))
|
|
case let .TextUrl(url):
|
|
apiEntities.append(.messageEntityTextUrl(offset: offset, length: length, url: url))
|
|
case let .TextMention(peerId):
|
|
if let peer = associatedPeers[peerId], let inputUser = apiInputUser(peer) {
|
|
apiEntities.append(.inputMessageEntityMentionName(offset: offset, length: length, userId: inputUser))
|
|
}
|
|
case .PhoneNumber:
|
|
break
|
|
case .Strikethrough:
|
|
apiEntities.append(.messageEntityStrike(offset: offset, length: length))
|
|
case .BlockQuote:
|
|
apiEntities.append(.messageEntityBlockquote(offset: offset, length: length))
|
|
case .Underline:
|
|
apiEntities.append(.messageEntityUnderline(offset: offset, length: length))
|
|
case .BankCard:
|
|
apiEntities.append(.messageEntityBankCard(offset: offset, length: length))
|
|
case .Custom:
|
|
break
|
|
}
|
|
}
|
|
|
|
return apiEntities
|
|
}
|
|
|
|
func apiTextAttributeEntities(_ attribute: TextEntitiesMessageAttribute, associatedPeers: SimpleDictionary<PeerId, Peer>) -> [Api.MessageEntity] {
|
|
return apiEntitiesFromMessageTextEntities(attribute.entities, associatedPeers: associatedPeers)
|
|
}
|