mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2026-02-22 18:43:14 +00:00
59 lines
2.9 KiB
Swift
59 lines
2.9 KiB
Swift
import Foundation
|
|
import Postbox
|
|
import TelegramApi
|
|
|
|
|
|
extension RichText {
|
|
init(apiText: Api.RichText) {
|
|
switch apiText {
|
|
case .textEmpty:
|
|
self = .empty
|
|
case let .textPlain(textPlainData):
|
|
let text = textPlainData.text
|
|
self = .plain(text)
|
|
case let .textBold(textBoldData):
|
|
let text = textBoldData.text
|
|
self = .bold(RichText(apiText: text))
|
|
case let .textItalic(textItalicData):
|
|
let text = textItalicData.text
|
|
self = .italic(RichText(apiText: text))
|
|
case let .textUnderline(textUnderlineData):
|
|
let text = textUnderlineData.text
|
|
self = .underline(RichText(apiText: text))
|
|
case let .textStrike(textStrikeData):
|
|
let text = textStrikeData.text
|
|
self = .strikethrough(RichText(apiText: text))
|
|
case let .textFixed(textFixedData):
|
|
let text = textFixedData.text
|
|
self = .fixed(RichText(apiText: text))
|
|
case let .textUrl(textUrlData):
|
|
let (text, url, webpageId) = (textUrlData.text, textUrlData.url, textUrlData.webpageId)
|
|
self = .url(text: RichText(apiText: text), url: url, webpageId: webpageId == 0 ? nil : MediaId(namespace: Namespaces.Media.CloudWebpage, id: webpageId))
|
|
case let .textEmail(textEmailData):
|
|
let (text, email) = (textEmailData.text, textEmailData.email)
|
|
self = .email(text: RichText(apiText: text), email: email)
|
|
case let .textConcat(textConcatData):
|
|
let texts = textConcatData.texts
|
|
self = .concat(texts.map({ RichText(apiText: $0) }))
|
|
case let .textSubscript(textSubscriptData):
|
|
let text = textSubscriptData.text
|
|
self = .subscript(RichText(apiText: text))
|
|
case let .textSuperscript(textSuperscriptData):
|
|
let text = textSuperscriptData.text
|
|
self = .superscript(RichText(apiText: text))
|
|
case let .textMarked(textMarkedData):
|
|
let text = textMarkedData.text
|
|
self = .marked(RichText(apiText: text))
|
|
case let .textPhone(textPhoneData):
|
|
let (text, phone) = (textPhoneData.text, textPhoneData.phone)
|
|
self = .phone(text: RichText(apiText: text), phone: phone)
|
|
case let .textImage(textImageData):
|
|
let (documentId, w, h) = (textImageData.documentId, textImageData.w, textImageData.h)
|
|
self = .image(id: MediaId(namespace: Namespaces.Media.CloudFile, id: documentId), dimensions: PixelDimensions(width: w, height: h))
|
|
case let .textAnchor(textAnchorData):
|
|
let (text, name) = (textAnchorData.text, textAnchorData.name)
|
|
self = .anchor(text: RichText(apiText: text), name: name)
|
|
}
|
|
}
|
|
}
|