Swiftgram/TelegramUI/ChatMessageBubbleContentNode.swift
2017-08-15 14:44:14 +03:00

92 lines
2.4 KiB
Swift

import Foundation
import AsyncDisplayKit
import Display
import Postbox
struct ChatMessageBubbleContentProperties {
let hidesSimpleAuthorHeader: Bool
let headerSpacing: CGFloat
}
enum ChatMessageBubbleNoneMergeStatus {
case Incoming
case Outgoing
}
enum ChatMessageBubbleMergeStatus {
case None(ChatMessageBubbleNoneMergeStatus)
case Left
case Right
}
enum ChatMessageBubbleRelativePosition {
case None(ChatMessageBubbleMergeStatus)
case Neighbour
}
struct ChatMessageBubbleContentPosition {
let top: ChatMessageBubbleRelativePosition
let bottom: ChatMessageBubbleRelativePosition
}
enum ChatMessageBubbleContentTapAction {
case none
case url(String)
case textMention(String)
case peerMention(PeerId, String)
case botCommand(String)
case hashtag(String?, String)
case instantPage
case holdToPreviewSecretMedia
case call(PeerId)
case ignore
}
class ChatMessageBubbleContentNode: ASDisplayNode {
var properties: ChatMessageBubbleContentProperties {
return ChatMessageBubbleContentProperties(hidesSimpleAuthorHeader: false, headerSpacing: 0.0)
}
var controllerInteraction: ChatControllerInteraction?
var visibility: ListViewItemNodeVisibility = .none
required override init() {
//super.init(layerBacked: false)
super.init()
}
func asyncLayoutContent() -> (_ item: ChatMessageItem, _ layoutConstants: ChatMessageItemLayoutConstants, _ position: ChatMessageBubbleContentPosition, _ constrainedSize: CGSize) -> (maxWidth: CGFloat, layout: (CGSize) -> (CGFloat, (CGFloat) -> (CGSize, (ListViewItemUpdateAnimation) -> Void))) {
preconditionFailure()
}
func animateInsertion(_ currentTimestamp: Double, duration: Double) {
}
func animateAdded(_ currentTimestamp: Double, duration: Double) {
}
func animateRemoved(_ currentTimestamp: Double, duration: Double) {
}
func animateInsertionIntoBubble(_ duration: Double) {
}
func transitionNode(media: Media) -> ASDisplayNode? {
return nil
}
func updateHiddenMedia(_ media: [Media]?) {
}
func updateAutomaticMediaDownloadSettings(_ settings: AutomaticMediaDownloadSettings) {
}
func tapActionAtPoint(_ point: CGPoint) -> ChatMessageBubbleContentTapAction {
return .none
}
func updateTouchesAtPoint(_ point: CGPoint?) {
}
}