Skip to content

Commit 44302cb

Browse files
committed
Show bubble for quoted message and file or image attachment
1 parent 6afbceb commit 44302cb

10 files changed

Lines changed: 64 additions & 2 deletions

β€ŽSources/StreamChatSwiftUI/ChatMessageList/MessageAttachmentsView.swiftβ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,12 @@ enum MessageAttachmentsBubbleConfiguration {
165165

166166
private extension ChatMessage {
167167
var hasSingleFileOrVoiceAttachmentWithoutCaption: Bool {
168-
guard text.isEmpty else { return false }
168+
guard text.isEmpty, quotedMessage == nil else { return false }
169169
return attachmentCounts.count == 1 && (attachmentCounts[.file] == 1 || attachmentCounts[.voiceRecording] == 1)
170170
}
171171

172172
var hasSingleMediaAttachmentWithoutCaption: Bool {
173-
guard text.isEmpty else { return false }
173+
guard text.isEmpty, quotedMessage == nil else { return false }
174174
return attachmentCounts.count == 1 && (attachmentCounts[.image] == 1 || attachmentCounts[.video] == 1)
175175
}
176176
}

β€ŽStreamChatSwiftUITests/Tests/ChatChannel/MessageView_Tests.swiftβ€Ž

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,68 @@ import XCTest
220220
// Then
221221
assertSnapshot(matching: view, as: .image(perceptualPrecision: precision))
222222
}
223+
224+
func test_messageViewQuoted_singleImageAttachment_snapshot() {
225+
// Given
226+
let quoted = ChatMessage.mock(
227+
id: .unique,
228+
cid: .unique,
229+
text: "This is a quoted message",
230+
author: .mock(id: .unique, name: "John Wick")
231+
)
232+
let message = ChatMessage.mock(
233+
id: .unique,
234+
cid: .unique,
235+
text: "test message",
236+
author: .mock(id: .unique),
237+
quotedMessage: quoted,
238+
attachments: [ChatChannelTestHelpers.imageAttachments[0]]
239+
)
240+
241+
// When
242+
let view = MessageView(
243+
factory: DefaultViewFactory.shared,
244+
message: message,
245+
contentWidth: defaultScreenSize.width,
246+
isFirst: true,
247+
scrolledId: .constant(nil)
248+
)
249+
.applyDefaultSize()
250+
251+
// Then
252+
AssertSnapshot(view)
253+
}
254+
255+
func test_messageViewQuoted_singleFileAttachment_snapshot() {
256+
// Given
257+
let quoted = ChatMessage.mock(
258+
id: .unique,
259+
cid: .unique,
260+
text: "This is a quoted message",
261+
author: .mock(id: .unique, name: "John Wick")
262+
)
263+
let message = ChatMessage.mock(
264+
id: .unique,
265+
cid: .unique,
266+
text: "test message",
267+
author: .mock(id: .unique),
268+
quotedMessage: quoted,
269+
attachments: [ChatChannelTestHelpers.fileAttachments[0]]
270+
)
271+
272+
// When
273+
let view = MessageView(
274+
factory: DefaultViewFactory.shared,
275+
message: message,
276+
contentWidth: defaultScreenSize.width,
277+
isFirst: true,
278+
scrolledId: .constant(nil)
279+
)
280+
.applyDefaultSize()
281+
282+
// Then
283+
AssertSnapshot(view)
284+
}
223285

224286
func test_messageViewGiphy_snapshot() {
225287
// Given
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading

0 commit comments

Comments
Β (0)