File tree Expand file tree Collapse file tree 3 files changed +53
-4
lines changed
Sources/StreamChatSwiftUI/ChatChannel/MessageList
StreamChatSwiftUITests/Tests/ChatChannel
__Snapshots__/MessageView_Tests Expand file tree Collapse file tree 3 files changed +53
-4
lines changed Original file line number Diff line number Diff line change @@ -80,7 +80,12 @@ struct MessageView<Factory: ViewFactory>: View {
80
80
}
81
81
} else {
82
82
if message. shouldRenderAsJumbomoji {
83
- EmojiTextView ( message: message)
83
+ EmojiTextView (
84
+ factory: factory,
85
+ message: message,
86
+ scrolledId: $scrolledId,
87
+ isFirst: isFirst
88
+ )
84
89
} else if !message. text. isEmpty {
85
90
factory. makeMessageTextView (
86
91
for: message,
@@ -127,13 +132,34 @@ public struct MessageTextView<Factory: ViewFactory>: View {
127
132
}
128
133
}
129
134
130
- public struct EmojiTextView : View {
135
+ public struct EmojiTextView < Factory: ViewFactory > : View {
136
+ var factory : Factory
131
137
var message : ChatMessage
138
+ @Binding var scrolledId : String ?
139
+ var isFirst : Bool
132
140
133
141
@Injected ( \. fonts) private var fonts
142
+ @Injected ( \. utils) private var utils
134
143
135
144
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
+ }
138
164
}
139
165
}
Original file line number Diff line number Diff line change @@ -128,4 +128,27 @@ class MessageView_Tests: StreamChatTestCase {
128
128
// Then
129
129
assertSnapshot ( matching: view, as: . image)
130
130
}
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
+ }
131
154
}
You can’t perform that action at this time.
0 commit comments