mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-06 03:33:41 +02:00
Implement the nine message-entity RichText cases (textMention, textMentionName, textHashtag, textCashtag, textBotCommand, textBankCard, textAutoUrl, textAutoEmail, textAutoPhone): model + Postbox coding, FlatBuffers schema/codec, Api.RichText parsing/serialization (lossless), InstantPage display attaching the matching TelegramTextAttributes keys, and tap routing in the rich-data bubble mirroring ChatMessageTextBubbleContentNode. mentionName display resolves via EnginePeer.Id (PeerId not in scope). Also lets rich-data text selection reach a line's trailing edge and fixes the date/status node positioning to match TextBubble. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
152 lines
2.7 KiB
Text
152 lines
2.7 KiB
Text
include "MediaId.fbs";
|
|
include "PixelDimensions.fbs";
|
|
|
|
namespace TelegramCore;
|
|
|
|
union RichText_Value {
|
|
RichText_Empty,
|
|
RichText_Plain,
|
|
RichText_Bold,
|
|
RichText_Italic,
|
|
RichText_Underline,
|
|
RichText_Strikethrough,
|
|
RichText_Fixed,
|
|
RichText_Url,
|
|
RichText_Email,
|
|
RichText_Concat,
|
|
RichText_Subscript,
|
|
RichText_Superscript,
|
|
RichText_Marked,
|
|
RichText_Phone,
|
|
RichText_Image,
|
|
RichText_Anchor,
|
|
RichText_Formula,
|
|
RichText_CustomEmoji,
|
|
RichText_AutoEmail,
|
|
RichText_AutoPhone,
|
|
RichText_AutoUrl,
|
|
RichText_BankCard,
|
|
RichText_BotCommand,
|
|
RichText_Cashtag,
|
|
RichText_Hashtag,
|
|
RichText_Mention,
|
|
RichText_MentionName
|
|
}
|
|
|
|
table RichText {
|
|
value:RichText_Value (id: 1, required);
|
|
}
|
|
|
|
table RichText_Empty {}
|
|
|
|
table RichText_Plain {
|
|
text:string (id: 0, required);
|
|
}
|
|
|
|
table RichText_Bold {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Italic {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Underline {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Strikethrough {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Fixed {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Url {
|
|
text:RichText (id: 0, required);
|
|
url:string (id: 1, required);
|
|
webpageId:MediaId (id: 2);
|
|
}
|
|
|
|
table RichText_Email {
|
|
text:RichText (id: 0, required);
|
|
email:string (id: 1, required);
|
|
}
|
|
|
|
table RichText_Concat {
|
|
texts:[RichText] (id: 0, required);
|
|
}
|
|
|
|
table RichText_Subscript {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Superscript {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Marked {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Phone {
|
|
text:RichText (id: 0, required);
|
|
phone:string (id: 1, required);
|
|
}
|
|
|
|
table RichText_Image {
|
|
id:MediaId (id: 0, required);
|
|
dimensions:PixelDimensions (id: 1, required);
|
|
}
|
|
|
|
table RichText_Anchor {
|
|
text:RichText (id: 0, required);
|
|
name:string (id: 1, required);
|
|
}
|
|
|
|
table RichText_Formula {
|
|
latex:string (id: 0, required);
|
|
}
|
|
|
|
table RichText_CustomEmoji {
|
|
fileId:long (id: 0);
|
|
alt:string (id: 1, required);
|
|
}
|
|
|
|
table RichText_AutoEmail {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_AutoPhone {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_AutoUrl {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_BankCard {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_BotCommand {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Cashtag {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Hashtag {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_Mention {
|
|
text:RichText (id: 0, required);
|
|
}
|
|
|
|
table RichText_MentionName {
|
|
text:RichText (id: 0, required);
|
|
peerId:long (id: 1);
|
|
}
|