Skip to content

Commit 2311687

Browse files
prepending the first message in the reply thread
1 parent e210f44 commit 2311687

File tree

4 files changed

+16
-2
lines changed

4 files changed

+16
-2
lines changed

Sources/StreamChatSwiftUI/ChatChannel/ChatChannelView.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public struct ChatChannelView<Factory: ViewFactory>: View {
4444
isGroup: !viewModel.channel.isDirectMessageChannel,
4545
unreadCount: viewModel.channel.unreadCount.messages,
4646
listId: viewModel.listId,
47+
isMessageThread: viewModel.isMessageThread,
4748
onMessageAppear: viewModel.handleMessageAppear(index:),
4849
onScrollToBottom: viewModel.scrollToLastMessage,
4950
onLongPress: { displayInfo in

Sources/StreamChatSwiftUI/ChatChannel/ChatChannelViewModel.swift

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ public class ChatChannelViewModel: ObservableObject, MessagesDataSource {
8787
var channel: ChatChannel {
8888
channelController.channel!
8989
}
90+
91+
var isMessageThread: Bool {
92+
messageController != nil
93+
}
9094

9195
public init(
9296
channelController: ChatChannelController,
@@ -139,7 +143,13 @@ public class ChatChannelViewModel: ObservableObject, MessagesDataSource {
139143
channelDataSource: ChannelDataSource,
140144
didUpdateMessages messages: LazyCachedMapCollection<ChatMessage>
141145
) {
142-
self.messages = messages
146+
if let message = messageController?.message {
147+
var array = Array(messages)
148+
array.append(message)
149+
self.messages = LazyCachedMapCollection(source: array, map: { $0 })
150+
} else {
151+
self.messages = messages
152+
}
143153

144154
let count = messages.count
145155
if count > lastRefreshThreshold {

Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageContainerView.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ struct MessageContainerView<Factory: ViewFactory>: View {
1818
let isInGroup: Bool
1919
var width: CGFloat?
2020
var showsAllInfo: Bool
21+
var isInThread: Bool
2122
var onLongPress: (MessageDisplayInfo) -> Void
2223

2324
@State private var frame: CGRect = .zero
@@ -79,7 +80,7 @@ struct MessageContainerView<Factory: ViewFactory>: View {
7980

8081
})
8182

82-
if message.replyCount > 0 && !message.threadParticipants.isEmpty {
83+
if message.replyCount > 0 && !message.threadParticipants.isEmpty && !isInThread {
8384
MessageRepliesView(
8485
factory: factory,
8586
channel: channel,

Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageListView.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ struct MessageListView<Factory: ViewFactory>: View, KeyboardReadable {
1818
var isGroup: Bool
1919
var unreadCount: Int
2020
var listId: String
21+
var isMessageThread: Bool
2122

2223
var onMessageAppear: (Int) -> Void
2324
var onScrollToBottom: () -> Void
@@ -57,6 +58,7 @@ struct MessageListView<Factory: ViewFactory>: View, KeyboardReadable {
5758
isInGroup: isGroup,
5859
width: width,
5960
showsAllInfo: showsAllData(for: message),
61+
isInThread: isMessageThread,
6062
onLongPress: { messageDisplayInfo in
6163
if keyboardShown {
6264
resignFirstResponder()

0 commit comments

Comments
 (0)