@@ -735,10 +735,9 @@ class ConversationViewController: UIViewController {
735735 let isImageOrVideo = message. category. hasSuffix ( " _IMAGE " ) || message. category. hasSuffix ( " _VIDEO " )
736736 let mediaStatusIsReady = message. mediaStatus == MediaStatus . DONE. rawValue || message. mediaStatus == MediaStatus . READ. rawValue
737737 if let quoteMessageId = viewModel. message. quoteMessageId, !quoteMessageId. isEmpty, let quote = cell. quotedMessageViewIfLoaded, quote. bounds. contains ( recognizer. location ( in: quote) ) {
738- let messageId = messageIdIfIncluedInStackedPhotoMessage ( for: quoteMessageId)
739- if let indexPath = dataSource? . indexPath ( where: { $0. messageId == messageId } ) {
738+ if let indexPath = dataSource? . indexPath ( where: { $0. messageId == quoteMessageId } ) {
740739 quotingMessageId = message. messageId
741- scheduleCellBackgroundFlash ( messageId: messageId )
740+ scheduleCellBackgroundFlash ( messageId: quoteMessageId )
742741 tableView. scrollToRow ( at: indexPath, at: . middle, animated: true )
743742 } else if MessageDAO . shared. hasMessage ( id: quoteMessageId) {
744743 quotingMessageId = message. messageId
@@ -822,9 +821,6 @@ class ConversationViewController: UIViewController {
822821 conversationInputViewController. dismiss ( )
823822 let vc = StickerPreviewViewController . instance ( message: message)
824823 vc. presentAsChild ( of: self )
825- } else if message. category == MessageCategory . STACKED_PHOTO. rawValue {
826- let vc = StackedPhotoPreviewViewController ( conversationId: conversationId, stackedPhotoMessage: message)
827- vc. presentAsChild ( of: self )
828824 } else {
829825 conversationInputViewController. dismiss ( )
830826 }
@@ -865,7 +861,7 @@ class ConversationViewController: UIViewController {
865861 cell. messageContentView. frame. origin. x = 0
866862 }
867863 if shouldQuote, let viewModel = cell. viewModel {
868- conversationInputViewController. quote = ( messageIfIncludedInStackedPhotoMessage ( for : viewModel. message) , viewModel. thumbnail)
864+ conversationInputViewController. quote = ( viewModel. message, viewModel. thumbnail)
869865 }
870866 case . cancelled, . failed:
871867 tableView. isScrollEnabled = true
@@ -1308,7 +1304,7 @@ extension ConversationViewController: MultipleSelectionActionViewDelegate {
13081304 func multipleSelectionActionViewDidTapAction( _ view: MultipleSelectionActionView ) {
13091305 switch view. intent {
13101306 case . forward:
1311- let messages = dataSource. selectedMessageViewModels
1307+ let messages = dataSource. selectedViewModels . values
13121308 . map ( { $0. message } )
13131309 . sorted ( by: { $0. createdAt < $1. createdAt } )
13141310 let containsTranscriptMessage = messages. contains {
@@ -1331,7 +1327,7 @@ extension ConversationViewController: MultipleSelectionActionViewDelegate {
13311327 present ( alert, animated: true , completion: nil )
13321328 }
13331329 case . delete:
1334- let viewModels = dataSource. selectedMessageViewModels
1330+ let viewModels = dataSource. selectedViewModels . values . map ( { $0 } )
13351331 let controller = UIAlertController ( title: nil , message: nil , preferredStyle: . actionSheet)
13361332 if !viewModels. contains ( where: { $0. message. userId != myUserId || !$0. message. canRecall } ) {
13371333 controller. addAction ( UIAlertAction ( title: Localized . ACTION_DELETE_EVERYONE, style: . destructive, handler: { ( _) in
@@ -1891,8 +1887,6 @@ extension ConversationViewController {
18911887 actions = [ . delete]
18921888 } else if category == MessageCategory . MESSAGE_RECALL. rawValue {
18931889 actions = [ . delete]
1894- } else if category == MessageCategory . STACKED_PHOTO. rawValue {
1895- actions = [ . reply, . forward, . delete]
18961890 } else {
18971891 actions = [ ]
18981892 }
@@ -1909,7 +1903,6 @@ extension ConversationViewController {
19091903 index = nil
19101904 }
19111905 if let index = index {
1912- let message = messageIfIncludedInStackedPhotoMessage ( for: message)
19131906 let action : MessageAction = pinnedMessageIds. contains ( message. messageId) ? . unpin : . pin
19141907 actions. insert ( action, at: index)
19151908 }
@@ -1939,7 +1932,7 @@ extension ConversationViewController {
19391932 case . forward:
19401933 beginMultipleSelection ( on: indexPath, intent: . forward)
19411934 case . reply:
1942- conversationInputViewController. quote = ( messageIfIncludedInStackedPhotoMessage ( for : message) , viewModel. thumbnail)
1935+ conversationInputViewController. quote = ( message, viewModel. thumbnail)
19431936 case . addToStickers:
19441937 if message. category. hasSuffix ( " _STICKER " ) , let stickerId = message. stickerId {
19451938 StickerAPI . addSticker ( stickerId: stickerId, completion: { ( result) in
@@ -1960,9 +1953,9 @@ extension ConversationViewController {
19601953 case . report:
19611954 report ( conversationId: conversationId, message: message)
19621955 case . pin:
1963- SendMessageService . shared. sendPinMessages ( items: [ messageIfIncludedInStackedPhotoMessage ( for : message) ] , conversationId: conversationId, action: . pin)
1956+ SendMessageService . shared. sendPinMessages ( items: [ message] , conversationId: conversationId, action: . pin)
19641957 case . unpin:
1965- SendMessageService . shared. sendPinMessages ( items: [ messageIfIncludedInStackedPhotoMessage ( for : message) ] , conversationId: conversationId, action: . unpin)
1958+ SendMessageService . shared. sendPinMessages ( items: [ message] , conversationId: conversationId, action: . unpin)
19661959 }
19671960 }
19681961
@@ -2677,13 +2670,9 @@ extension ConversationViewController {
26772670 guard let weakSelf = self , let indexPath = weakSelf. dataSource. indexPath ( where: { $0. messageId == message. messageId } ) else {
26782671 return
26792672 }
2680- if message. category == MessageCategory . STACKED_PHOTO. rawValue {
2681- message. messageItems? . forEach ( { MessageDAO . shared. deleteMessage ( id: $0. messageId) } )
2682- } else {
2683- let ( deleted, childMessageIds) = MessageDAO . shared. deleteMessage ( id: message. messageId)
2684- if deleted {
2685- ReceiveMessageService . shared. stopRecallMessage ( item: message, childMessageIds: childMessageIds)
2686- }
2673+ let ( deleted, childMessageIds) = MessageDAO . shared. deleteMessage ( id: message. messageId)
2674+ if deleted {
2675+ ReceiveMessageService . shared. stopRecallMessage ( item: message, childMessageIds: childMessageIds)
26872676 }
26882677 DispatchQueue . main. sync {
26892678 _ = weakSelf. dataSource? . removeViewModel ( at: indexPath)
@@ -2728,16 +2717,15 @@ extension ConversationViewController {
27282717 let flashingId = self . messageIdToFlashAfterAnimationFinished
27292718 self . messageIdToFlashAfterAnimationFinished = nil
27302719 scroll ( messageId, {
2731- let msgId = self . messageIdIfIncluedInStackedPhotoMessage ( for: messageId)
2732- guard let indexPath = self . dataSource? . indexPath ( where: { $0. messageId == msgId } ) else {
2720+ guard let indexPath = self . dataSource? . indexPath ( where: { $0. messageId == messageId } ) else {
27332721 return
27342722 }
27352723 if scrollUpwards {
27362724 self . tableView. scrollToRow ( at: indexPath, at: . bottom, animated: false )
27372725 } else {
27382726 self . tableView. scrollToRow ( at: indexPath, at: . top, animated: false )
27392727 }
2740- self . messageIdToFlashAfterAnimationFinished = flashingId != nil ? msgId : flashingId
2728+ self . messageIdToFlashAfterAnimationFinished = flashingId
27412729 self . tableView. scrollToRow ( at: indexPath, at: . middle, animated: true )
27422730 } )
27432731 }
@@ -2797,9 +2785,8 @@ extension ConversationViewController {
27972785 }
27982786
27992787 private func scrollToPinnedMessage( messageId: String ) {
2800- let msgId = messageIdIfIncluedInStackedPhotoMessage ( for: messageId)
2801- if let indexPath = dataSource. indexPath ( where: { $0. messageId == msgId } ) {
2802- scheduleCellBackgroundFlash ( messageId: msgId)
2788+ if let indexPath = dataSource. indexPath ( where: { $0. messageId == messageId } ) {
2789+ scheduleCellBackgroundFlash ( messageId: messageId)
28032790 tableView. scrollToRow ( at: indexPath, at: . middle, animated: true )
28042791 } else if MessageDAO . shared. hasMessage ( id: messageId) {
28052792 messageIdToFlashAfterAnimationFinished = messageId
@@ -2815,30 +2802,6 @@ extension ConversationViewController {
28152802 }
28162803 }
28172804
2818- private func messageIdIfIncluedInStackedPhotoMessage( for messageId: String ) -> String {
2819- guard !dataSource. stackedPhotoMessages. isEmpty else {
2820- return messageId
2821- }
2822- let msgId : String
2823- let stackedPhotoMessage = dataSource. stackedPhotoMessages. first { message in
2824- message. messageItems? . contains ( where: { $0. messageId == messageId } ) ?? false
2825- }
2826- if let stackedPhotoMessageId = stackedPhotoMessage? . messageId {
2827- msgId = stackedPhotoMessageId
2828- } else {
2829- msgId = messageId
2830- }
2831- return msgId
2832- }
2833-
2834- private func messageIfIncludedInStackedPhotoMessage( for message: MessageItem ) -> MessageItem {
2835- if message. category == MessageCategory . STACKED_PHOTO. rawValue, let photoMessage = message. messageItems? . first {
2836- return photoMessage
2837- } else {
2838- return message
2839- }
2840- }
2841-
28422805}
28432806
28442807// MARK: - Context menu configs
@@ -2889,9 +2852,6 @@ extension ConversationViewController {
28892852 } else if let viewModel = viewModel as? AppButtonGroupViewModel {
28902853 param. visiblePath = UIBezierPath ( roundedRect: viewModel. buttonGroupFrame,
28912854 cornerRadius: AppButtonView . cornerRadius)
2892- } else if let viewModel = viewModel as? StackedPhotoMessageViewModel {
2893- param. visiblePath = UIBezierPath ( roundedRect: viewModel. stackedPhotoViewFrame,
2894- cornerRadius: 13 )
28952855 } else {
28962856 if viewModel. style. contains ( . received) {
28972857 if viewModel. style. contains ( . tail) {
0 commit comments