Add a special case for tap-and-context menu

This commit is contained in:
Ali
2023-10-25 16:18:14 +04:00
parent 10836c4f8d
commit 5261f34e6a
8 changed files with 174 additions and 93 deletions

View File

@@ -159,8 +159,8 @@ public class ChatMessageStickerItemNode: ChatMessageItemView {
switch action {
case .action, .optionalAction:
break
case let .openContextMenu(tapMessage, selectAll, subFrame):
item.controllerInteraction.openMessageContextMenu(tapMessage, selectAll, strongSelf, subFrame, gesture, nil)
case let .openContextMenu(openContextMenu):
item.controllerInteraction.openMessageContextMenu(openContextMenu.tapMessage, openContextMenu.selectAll, strongSelf, openContextMenu.subFrame, gesture, nil)
}
}
}
@@ -234,7 +234,7 @@ public class ChatMessageStickerItemNode: ChatMessageItemView {
if let action = strongSelf.gestureRecognized(gesture: .longTap, location: point, recognizer: recognizer) {
switch action {
case let .action(f):
f()
f.action()
recognizer.cancel()
case let .optionalAction(f):
f()
@@ -1283,14 +1283,14 @@ public class ChatMessageStickerItemNode: ChatMessageItemView {
}
switch action {
case let .action(f):
f()
f.action()
case let .optionalAction(f):
f()
case let .openContextMenu(tapMessage, selectAll, subFrame):
case let .openContextMenu(openContextMenu):
if canAddMessageReactions(message: item.message) {
item.controllerInteraction.updateMessageReaction(tapMessage, .default)
item.controllerInteraction.updateMessageReaction(openContextMenu.tapMessage, .default)
} else {
item.controllerInteraction.openMessageContextMenu(tapMessage, selectAll, self, subFrame, nil, nil)
item.controllerInteraction.openMessageContextMenu(openContextMenu.tapMessage, openContextMenu.selectAll, self, openContextMenu.subFrame, nil, nil)
}
}
} else if case .tap = gesture {
@@ -1372,7 +1372,7 @@ public class ChatMessageStickerItemNode: ChatMessageItemView {
}
if forwardInfoNode.hasAction(at: self.view.convert(location, to: forwardInfoNode.view)) {
return .action({})
return .action(InternalBubbleTapAction.Action {})
} else {
return .optionalAction(performAction)
}
@@ -1388,7 +1388,7 @@ public class ChatMessageStickerItemNode: ChatMessageItemView {
return nil
case .longTap, .doubleTap, .secondaryTap:
if let item = self.item, self.imageNode.frame.contains(location) {
return .openContextMenu(tapMessage: item.message, selectAll: false, subFrame: self.imageNode.frame)
return .openContextMenu(InternalBubbleTapAction.OpenContextMenu(tapMessage: item.message, selectAll: false, subFrame: self.imageNode.frame))
}
case .hold:
break