diff --git a/submodules/Postbox/Sources/MessageHistoryTable.swift b/submodules/Postbox/Sources/MessageHistoryTable.swift index ea456c2704..fa3095fe40 100644 --- a/submodules/Postbox/Sources/MessageHistoryTable.swift +++ b/submodules/Postbox/Sources/MessageHistoryTable.swift @@ -1879,13 +1879,16 @@ final class MessageHistoryTable: Table { if let forwardInfo = message.forwardInfo { var forwardInfoFlags: Int8 = 1 if forwardInfo.sourceId != nil { - forwardInfoFlags |= 2 + forwardInfoFlags |= 1 << 1 } if forwardInfo.sourceMessageId != nil { - forwardInfoFlags |= 4 + forwardInfoFlags |= 1 << 2 } if forwardInfo.authorSignature != nil { - forwardInfoFlags |= 8 + forwardInfoFlags |= 1 << 3 + } + if forwardInfo.psaType != nil { + forwardInfoFlags |= 1 << 4 } sharedBuffer.write(&forwardInfoFlags, offset: 0, length: 1) var forwardAuthorId: Int64 = forwardInfo.authorId?.toInt64() ?? 0 @@ -1917,6 +1920,17 @@ final class MessageHistoryTable: Table { sharedBuffer.write(&length, offset: 0, length: 4) } } + + if let psaType = forwardInfo.psaType { + if let data = psaType.data(using: .utf8, allowLossyConversion: true) { + var length: Int32 = Int32(data.count) + sharedBuffer.write(&length, offset: 0, length: 4) + sharedBuffer.write(data) + } else { + var length: Int32 = 0 + sharedBuffer.write(&length, offset: 0, length: 4) + } + } } else { var forwardInfoFlags: Int8 = 0 sharedBuffer.write(&forwardInfoFlags, offset: 0, length: 1) diff --git a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift index c3762a49c9..fbd9cd2df0 100644 --- a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift @@ -809,7 +809,7 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode displayAuthorInfo = !mergedTop.merged && incoming && effectiveAuthor != nil } else { effectiveAuthor = firstMessage.author - displayAuthorInfo = !mergedTop.merged && incoming && peerId.isGroupOrChannel && effectiveAuthor != nil + displayAuthorInfo = !mergedTop.merged && incoming && peerId.isGroupOrChannel && effectiveAuthor != nil if let forwardInfo = firstMessage.forwardInfo, forwardInfo.psaType != nil { displayAuthorInfo = false } @@ -830,10 +830,6 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode } else if incoming { hasAvatar = true } - /*case .group: - allowFullWidth = true - hasAvatar = true - displayAuthorInfo = true*/ } if let forwardInfo = item.content.firstMessage.forwardInfo, forwardInfo.source == nil, forwardInfo.author?.id.namespace == Namespaces.Peer.CloudUser { @@ -990,6 +986,10 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode } } + if let forwardInfo = firstMessage.forwardInfo, forwardInfo.psaType != nil { + inlineBotNameString = nil + } + var contentPropertiesAndLayouts: [(CGSize?, ChatMessageBubbleContentProperties, ChatMessageBubblePreparePosition, (CGSize, ChatMessageBubbleContentPosition) -> (CGFloat, (CGFloat) -> (CGSize, (ListViewItemUpdateAnimation, Bool) -> Void)))] = [] let topNodeMergeStatus: ChatMessageBubbleMergeStatus = mergedTop.merged ? (incoming ? .Left : .Right) : .None(incoming ? .Incoming : .Outgoing)