Skip to content

Commit 790c353

Browse files
Fixed bug with replies with emoji
1 parent 1efb9f8 commit 790c353

File tree

3 files changed

+53
-4
lines changed

3 files changed

+53
-4
lines changed

Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageView.swift

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,12 @@ struct MessageView<Factory: ViewFactory>: View {
8080
}
8181
} else {
8282
if message.shouldRenderAsJumbomoji {
83-
EmojiTextView(message: message)
83+
EmojiTextView(
84+
factory: factory,
85+
message: message,
86+
scrolledId: $scrolledId,
87+
isFirst: isFirst
88+
)
8489
} else if !message.text.isEmpty {
8590
factory.makeMessageTextView(
8691
for: message,
@@ -127,13 +132,34 @@ public struct MessageTextView<Factory: ViewFactory>: View {
127132
}
128133
}
129134

130-
public struct EmojiTextView: View {
135+
public struct EmojiTextView<Factory: ViewFactory>: View {
136+
var factory: Factory
131137
var message: ChatMessage
138+
@Binding var scrolledId: String?
139+
var isFirst: Bool
132140

133141
@Injected(\.fonts) private var fonts
142+
@Injected(\.utils) private var utils
134143

135144
public var body: some View {
136-
Text(message.text)
137-
.font(fonts.emoji)
145+
ZStack {
146+
if let quotedMessage = utils.messageCachingUtils.quotedMessage(for: message) {
147+
VStack(spacing: 0) {
148+
QuotedMessageViewContainer(
149+
factory: factory,
150+
quotedMessage: quotedMessage,
151+
fillAvailableSpace: !message.attachmentCounts.isEmpty,
152+
scrolledId: $scrolledId
153+
)
154+
155+
Text(message.text)
156+
.font(fonts.emoji)
157+
}
158+
.messageBubble(for: message, isFirst: isFirst)
159+
} else {
160+
Text(message.text)
161+
.font(fonts.emoji)
162+
}
163+
}
138164
}
139165
}

StreamChatSwiftUITests/Tests/ChatChannel/MessageView_Tests.swift

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,4 +128,27 @@ class MessageView_Tests: StreamChatTestCase {
128128
// Then
129129
assertSnapshot(matching: view, as: .image)
130130
}
131+
132+
func test_messageViewJumboEmoji_snapshot() {
133+
// Given
134+
let emojiMessage = ChatMessage.mock(
135+
id: .unique,
136+
cid: .unique,
137+
text: "😀",
138+
author: .mock(id: .unique)
139+
)
140+
141+
// When
142+
let view = MessageView(
143+
factory: DefaultViewFactory.shared,
144+
message: emojiMessage,
145+
contentWidth: defaultScreenSize.width,
146+
isFirst: true,
147+
scrolledId: .constant(nil)
148+
)
149+
.frame(width: defaultScreenSize.width, height: defaultScreenSize.height)
150+
151+
// Then
152+
assertSnapshot(matching: view, as: .image)
153+
}
131154
}
82.3 KB
Loading

0 commit comments

Comments
 (0)