Message effects improvements

This commit is contained in:
Isaac
2024-05-14 15:48:07 +04:00
parent 250b5ff2ad
commit 608893e317
16 changed files with 116 additions and 7 deletions

View File

@@ -564,6 +564,8 @@ public class ChatMessageInteractiveInstantVideoNode: ASDisplayNode {
isReplyThread = true
}
let messageEffect = item.topMessage.messageEffect(availableMessageEffects: item.associatedData.availableMessageEffects)
let statusSuggestedWidthAndContinue = makeDateAndStatusLayout(ChatMessageDateAndStatusNode.Arguments(
context: item.context,
presentationData: item.presentationData,
@@ -579,7 +581,7 @@ public class ChatMessageInteractiveInstantVideoNode: ASDisplayNode {
reactionPeers: dateReactionsAndPeers.peers,
displayAllReactionPeers: item.message.id.peerId.namespace == Namespaces.Peer.CloudUser,
areReactionsTags: item.topMessage.areReactionsTags(accountPeerId: item.context.account.peerId),
messageEffect: item.topMessage.messageEffect(availableMessageEffects: item.associatedData.availableMessageEffects),
messageEffect: messageEffect,
replyCount: dateReplies,
isPinned: item.message.tags.contains(.pinned) && !item.associatedData.isInPinnedListMode && !isReplyThread,
hasAutoremove: item.message.isSelfExpiring,
@@ -997,6 +999,13 @@ public class ChatMessageInteractiveInstantVideoNode: ASDisplayNode {
}
item.controllerInteraction.displayImportedMessageTooltip(strongSelf.dateAndStatusNode)
}
} else if messageEffect != nil {
strongSelf.dateAndStatusNode.pressed = { [weak strongSelf] in
guard let strongSelf, let item = strongSelf.item else {
return
}
item.controllerInteraction.playMessageEffect(item.message)
}
} else {
strongSelf.dateAndStatusNode.pressed = nil
}
@@ -1630,6 +1639,11 @@ public class ChatMessageInteractiveInstantVideoNode: ASDisplayNode {
if let statusNode = self.statusNode, statusNode.supernode != nil, !statusNode.isHidden, statusNode.frame.contains(point) {
return self.view
}
if self.dateAndStatusNode.supernode != nil, !self.dateAndStatusNode.isHidden {
if let result = self.dateAndStatusNode.hitTest(self.view.convert(point, to: self.dateAndStatusNode.view), with: event) {
return result
}
}
if let videoNode = self.videoNode, videoNode.view.frame.contains(point) {
return self.view