import Foundation import Postbox import TelegramApi import SyncCore func apiEntitiesFromMessageTextEntities(_ entities: [MessageTextEntity], associatedPeers: SimpleDictionary) -> [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) -> [Api.MessageEntity] { return apiEntitiesFromMessageTextEntities(attribute.entities, associatedPeers: associatedPeers) }