Skip to content

Commit c06f87e

Browse files
authored
Use channel's preview message for displaying subtitle in the channel list (#669)
Channel preview message ignores giphy by default
1 parent f3b8730 commit c06f87e

File tree

5 files changed

+22
-14
lines changed

5 files changed

+22
-14
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
33

44
# Upcoming
55

6-
### 🔄 Changed
6+
### 🐞 Fixed
7+
- Fix showing giphy message in the channel list [#669](https://github.com/GetStream/stream-chat-swiftui/pull/669)
78

89
# [4.67.0](https://github.com/GetStream/stream-chat-swiftui/releases/tag/4.67.0)
910
_November 25, 2024_

Sources/StreamChatSwiftUI/ChatChannelList/ChatChannelListItem.swift

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,12 @@ public struct InjectedChannelInfo {
269269

270270
extension ChatChannel {
271271

272+
public var previewMessageText: String? {
273+
guard let previewMessage else { return nil }
274+
let messageFormatter = InjectedValues[\.utils].messagePreviewFormatter
275+
return messageFormatter.format(previewMessage)
276+
}
277+
272278
public var lastMessageText: String? {
273279
guard let latestMessage = latestMessages.first else { return nil }
274280
let messageFormatter = InjectedValues[\.utils].messagePreviewFormatter
@@ -293,8 +299,8 @@ extension ChatChannel {
293299
return L10n.Channel.Item.muted
294300
} else if shouldShowTypingIndicator {
295301
return typingIndicatorString(currentUserId: InjectedValues[\.chatClient].currentUserId)
296-
} else if let lastMessageText = lastMessageText {
297-
return lastMessageText
302+
} else if let previewMessageText {
303+
return previewMessageText
298304
} else {
299305
return L10n.Channel.Item.emptyMessages
300306
}

StreamChatSwiftUITests/Tests/ChatChannelList/ChatChannelListItemView_Tests.swift

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ final class ChatChannelListItemView_Tests: StreamChatTestCase {
2323
func test_channelListItem_audioMessage() throws {
2424
// Given
2525
let message = try mockAudioMessage(text: "Audio", isSentByCurrentUser: true)
26-
let channel = ChatChannel.mock(cid: .unique, latestMessages: [message])
26+
let channel = ChatChannel.mock(cid: .unique, latestMessages: [message], previewMessage: message)
2727

2828
// When
2929
let view = ChatChannelListItem(
@@ -42,7 +42,7 @@ final class ChatChannelListItemView_Tests: StreamChatTestCase {
4242
func test_channelListItem_imageMessage() throws {
4343
// Given
4444
let message = try mockImageMessage(text: "Image", isSentByCurrentUser: true)
45-
let channel = ChatChannel.mock(cid: .unique, latestMessages: [message])
45+
let channel = ChatChannel.mock(cid: .unique, latestMessages: [message], previewMessage: message)
4646

4747
// When
4848
let view = ChatChannelListItem(
@@ -61,7 +61,7 @@ final class ChatChannelListItemView_Tests: StreamChatTestCase {
6161
func test_channelListItem_videoMessage() throws {
6262
// Given
6363
let message = try mockVideoMessage(text: "Video", isSentByCurrentUser: true)
64-
let channel = ChatChannel.mock(cid: .unique, latestMessages: [message])
64+
let channel = ChatChannel.mock(cid: .unique, latestMessages: [message], previewMessage: message)
6565

6666
// When
6767
let view = ChatChannelListItem(
@@ -80,7 +80,7 @@ final class ChatChannelListItemView_Tests: StreamChatTestCase {
8080
func test_channelListItem_fileMessage() throws {
8181
// Given
8282
let message = try mockFileMessage(title: "Filename", text: "File", isSentByCurrentUser: true)
83-
let channel = ChatChannel.mock(cid: .unique, latestMessages: [message])
83+
let channel = ChatChannel.mock(cid: .unique, latestMessages: [message], previewMessage: message)
8484

8585
// When
8686
let view = ChatChannelListItem(
@@ -96,10 +96,11 @@ final class ChatChannelListItemView_Tests: StreamChatTestCase {
9696
assertSnapshot(matching: view, as: .image(perceptualPrecision: precision))
9797
}
9898

99-
func test_channelListItem_giphyMessage() throws {
99+
func test_channelListItem_giphyMessageLatestButPreviewIsAnotherMessage() throws {
100100
// Given
101-
let message = try mockGiphyMessage(text: "Giphy", isSentByCurrentUser: true)
102-
let channel = ChatChannel.mock(cid: .unique, latestMessages: [message])
101+
let previewMessage = try mockImageMessage(text: "Hi!", isSentByCurrentUser: true)
102+
let latestMessage = try mockGiphyMessage(text: "Giphy", isSentByCurrentUser: true)
103+
let channel = ChatChannel.mock(cid: .unique, latestMessages: [latestMessage], previewMessage: previewMessage)
103104

104105
// When
105106
let view = ChatChannelListItem(
@@ -118,7 +119,7 @@ final class ChatChannelListItemView_Tests: StreamChatTestCase {
118119
func test_channelListItem_pollMessage_youCreated() throws {
119120
// Given
120121
let message = try mockPollMessage(isSentByCurrentUser: true)
121-
let channel = ChatChannel.mock(cid: .unique, latestMessages: [message])
122+
let channel = ChatChannel.mock(cid: .unique, latestMessages: [message], previewMessage: message)
122123

123124
// When
124125
let view = ChatChannelListItem(
@@ -137,7 +138,7 @@ final class ChatChannelListItemView_Tests: StreamChatTestCase {
137138
func test_channelListItem_pollMessage_someoneCreated() throws {
138139
// Given
139140
let message = try mockPollMessage(isSentByCurrentUser: false)
140-
let channel = ChatChannel.mock(cid: .unique, latestMessages: [message])
141+
let channel = ChatChannel.mock(cid: .unique, latestMessages: [message], previewMessage: message)
141142

142143
// When
143144
let view = ChatChannelListItem(
@@ -161,7 +162,7 @@ final class ChatChannelListItemView_Tests: StreamChatTestCase {
161162
.unique,
162163
.unique
163164
])
164-
let channel = ChatChannel.mock(cid: .unique, membership: .mock(id: currentUserId), latestMessages: [message])
165+
let channel = ChatChannel.mock(cid: .unique, membership: .mock(id: currentUserId), previewMessage: message)
165166

166167
// When
167168
let view = ChatChannelListItem(
@@ -185,7 +186,7 @@ final class ChatChannelListItemView_Tests: StreamChatTestCase {
185186
.unique,
186187
.mock(pollId: .unique, optionId: .unique, user: .mock(id: currentUserId))
187188
])
188-
let channel = ChatChannel.mock(cid: .unique, membership: .mock(id: currentUserId), latestMessages: [message])
189+
let channel = ChatChannel.mock(cid: .unique, membership: .mock(id: currentUserId), previewMessage: message)
189190

190191
// When
191192
let view = ChatChannelListItem(

0 commit comments

Comments
 (0)