@@ -1549,7 +1549,7 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
15491549 } else {
15501550 result += item. presentationData. strings. VoiceOver_ChatList_OutgoingMessage
15511551 }
1552- let ( _, initialHideAuthor, messageText, _, _, _) = chatListItemStrings ( strings: item. presentationData. strings, nameDisplayOrder: item. presentationData. nameDisplayOrder, dateTimeFormat: item. presentationData. dateTimeFormat, contentSettings: item. context. currentContentSettings. with { $0 } , messages: messages, chatPeer: peer, accountPeerId: item. context. account. peerId, isPeerGroup: false )
1552+ let ( _, initialHideAuthor, messageText, _, _, _, _ ) = chatListItemStrings ( strings: item. presentationData. strings, nameDisplayOrder: item. presentationData. nameDisplayOrder, dateTimeFormat: item. presentationData. dateTimeFormat, contentSettings: item. context. currentContentSettings. with { $0 } , messages: messages, chatPeer: peer, accountPeerId: item. context. account. peerId, isPeerGroup: false )
15531553 if message. flags. contains ( . Incoming) , !initialHideAuthor, let author = message. author, case . user = author {
15541554 result += " \n \( item. presentationData. strings. VoiceOver_ChatList_MessageFrom ( author. displayTitle ( strings: item. presentationData. strings, displayOrder: item. presentationData. nameDisplayOrder) ) . string) "
15551555 }
@@ -1583,7 +1583,7 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
15831583 } else {
15841584 result += item. presentationData. strings. VoiceOver_ChatList_OutgoingMessage
15851585 }
1586- let ( _, initialHideAuthor, messageText, _, _, _) = chatListItemStrings ( strings: item. presentationData. strings, nameDisplayOrder: item. presentationData. nameDisplayOrder, dateTimeFormat: item. presentationData. dateTimeFormat, contentSettings: item. context. currentContentSettings. with { $0 } , messages: peerData. messages, chatPeer: peerData. peer, accountPeerId: item. context. account. peerId, isPeerGroup: false )
1586+ let ( _, initialHideAuthor, messageText, _, _, _, _ ) = chatListItemStrings ( strings: item. presentationData. strings, nameDisplayOrder: item. presentationData. nameDisplayOrder, dateTimeFormat: item. presentationData. dateTimeFormat, contentSettings: item. context. currentContentSettings. with { $0 } , messages: peerData. messages, chatPeer: peerData. peer, accountPeerId: item. context. account. peerId, isPeerGroup: false )
15871587 if message. flags. contains ( . Incoming) , !initialHideAuthor, let author = message. author, case . user = author {
15881588 result += " \n \( item. presentationData. strings. VoiceOver_ChatList_MessageFrom ( author. displayTitle ( strings: item. presentationData. strings, displayOrder: item. presentationData. nameDisplayOrder) ) . string) "
15891589 }
@@ -2589,7 +2589,7 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
25892589 let leftInset : CGFloat = params. leftInset + avatarLeftInset
25902590
25912591 enum ContentData {
2592- case chat( itemPeer: EngineRenderedPeer , threadInfo: ChatListItemContent . ThreadInfo ? , peer: EnginePeer ? , hideAuthor: Bool , messageText: String , messageEntities: [ MessageTextEntity ] , spoilers: [ NSRange ] ? , customEmojiRanges: [ ( NSRange , ChatTextInputTextCustomEmojiAttribute ) ] ? )
2592+ case chat( itemPeer: EngineRenderedPeer , threadInfo: ChatListItemContent . ThreadInfo ? , peer: EnginePeer ? , hideAuthor: Bool , messageText: String , messageEntities: [ MessageTextEntity ] , spoilers: [ NSRange ] ? , customEmojiRanges: [ ( NSRange , ChatTextInputTextCustomEmojiAttribute ) ] ? , richTextPreview : NSAttributedString ? )
25932593 case group( peers: [ EngineChatList . GroupItem . Item ] )
25942594 }
25952595
@@ -2598,11 +2598,12 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
25982598 var hideAuthor = false
25992599 switch contentPeer {
26002600 case let . chat( itemPeer) :
2601- var ( peer, initialHideAuthor, messageText, messageEntities, spoilers, customEmojiRanges) = chatListItemStrings ( strings: item. presentationData. strings, nameDisplayOrder: item. presentationData. nameDisplayOrder, dateTimeFormat: item. presentationData. dateTimeFormat, contentSettings: item. context. currentContentSettings. with { $0 } , messages: messages, chatPeer: itemPeer, accountPeerId: item. context. account. peerId, enableMediaEmoji: !enableChatListPhotos, isPeerGroup: isPeerGroup)
2601+ var ( peer, initialHideAuthor, messageText, messageEntities, spoilers, customEmojiRanges, richTextPreview ) = chatListItemStrings ( strings: item. presentationData. strings, nameDisplayOrder: item. presentationData. nameDisplayOrder, dateTimeFormat: item. presentationData. dateTimeFormat, contentSettings: item. context. currentContentSettings. with { $0 } , messages: messages, chatPeer: itemPeer, accountPeerId: item. context. account. peerId, enableMediaEmoji: !enableChatListPhotos, isPeerGroup: isPeerGroup)
26022602
26032603 if case let . psa( _, maybePsaText) = promoInfo, let psaText = maybePsaText {
26042604 initialHideAuthor = true
26052605 messageText = psaText
2606+ richTextPreview = nil
26062607 }
26072608
26082609 switch itemPeer. peer {
@@ -2613,6 +2614,7 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
26132614 switch recentPeer. value {
26142615 case let . builtin( value) :
26152616 messageText = item. presentationData. strings. ChatList_UserReacted ( value) . string
2617+ richTextPreview = nil
26162618 case . custom:
26172619 break
26182620 case . stars:
@@ -2626,7 +2628,7 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
26262628 break
26272629 }
26282630
2629- contentData = . chat( itemPeer: itemPeer, threadInfo: threadInfo, peer: peer, hideAuthor: hideAuthor, messageText: messageText, messageEntities: messageEntities, spoilers: spoilers, customEmojiRanges: customEmojiRanges)
2631+ contentData = . chat( itemPeer: itemPeer, threadInfo: threadInfo, peer: peer, hideAuthor: hideAuthor, messageText: messageText, messageEntities: messageEntities, spoilers: spoilers, customEmojiRanges: customEmojiRanges, richTextPreview : richTextPreview )
26302632 hideAuthor = initialHideAuthor
26312633 case let . group( groupPeers) :
26322634 contentData = . group( peers: groupPeers)
@@ -2645,7 +2647,7 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
26452647 forumTopicData = nil
26462648 topForumTopicItems = [ ]
26472649
2648- if case let . chat( itemPeer, _, _, _, _, _, _, _) = contentData {
2650+ if case let . chat( itemPeer, _, _, _, _, _, _, _, _ ) = contentData {
26492651 if let messagePeer = itemPeer. chatMainPeer {
26502652 switch messagePeer {
26512653 case let . channel( channel) :
@@ -2710,7 +2712,7 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
27102712 var ignoreForwardedIcon = false
27112713
27122714 switch contentData {
2713- case let . chat( itemPeer, _, _, _, text, entities, spoilers, customEmojiRanges) :
2715+ case let . chat( itemPeer, _, _, _, text, entities, spoilers, customEmojiRanges, richTextPreview ) :
27142716 var isUser = false
27152717 if case . user = itemPeer. chatMainPeer {
27162718 isUser = true
@@ -2784,6 +2786,7 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
27842786 }
27852787
27862788 let messageText : String
2789+ let foldedRichTextPreview : NSAttributedString ?
27872790 if let currentChatListText = currentChatListText, currentChatListText. 0 == text {
27882791 messageText = currentChatListText. 1
27892792 chatListText = currentChatListText
@@ -2797,6 +2800,12 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
27972800 }
27982801 chatListText = ( text, messageText)
27992802 }
2803+ if let richTextPreview {
2804+ let foldedPreview = foldLineBreaks ( richTextPreview)
2805+ foldedRichTextPreview = foldedPreview. string == messageText ? foldedPreview : nil
2806+ } else {
2807+ foldedRichTextPreview = nil
2808+ }
28002809
28012810 if inlineAuthorPrefix == nil , let mediaDraftContentType {
28022811 hasDraft = true
@@ -2895,6 +2904,13 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
28952904 }
28962905 }
28972906 messageString = mutableString
2907+ } else if let foldedRichTextPreview {
2908+ let mutableString = NSMutableAttributedString ( attributedString: foldedRichTextPreview)
2909+ mutableString. addAttributes ( [
2910+ . font: textFont,
2911+ . foregroundColor: theme. messageTextColor
2912+ ] , range: NSRange ( location: 0 , length: mutableString. length) )
2913+ messageString = mutableString
28982914 } else {
28992915 messageString = NSAttributedString ( string: messageText, font: textFont, textColor: theme. messageTextColor)
29002916 }
@@ -3274,7 +3290,7 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
32743290 }
32753291
32763292 switch contentData {
3277- case let . chat( itemPeer, threadInfo, _, _, _, _, _, _) :
3293+ case let . chat( itemPeer, threadInfo, _, _, _, _, _, _, _ ) :
32783294 if case let . peer( peerData) = item. content, let customMessageListData = peerData. customMessageListData {
32793295 if customMessageListData. commandPrefix != nil {
32803296 titleAttributedString = nil
@@ -3325,6 +3341,7 @@ public class ChatListItemNode: ItemListRevealOptionsItemNode {
33253341 titleAttributedString = NSAttributedString ( string: item. presentationData. strings. ChatList_ArchivedChatsTitle, font: titleFont, textColor: theme. titleColor)
33263342 }
33273343
3344+ attributedText = renderInstantPagePreviewIcons ( attributedText, font: textFont, textColor: theme. messageTextColor)
33283345 textAttributedString = attributedText
33293346
33303347 let dateText : String
0 commit comments