Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### 🔄 Changed
- Message composer now uses `.uploadFile` capability when showing attachment picker icon [#646](https://github.com/GetStream/stream-chat-swiftui/pull/646)
- `ChannelInfoView` now uses `.updateChannelMembers` capability to show "Add Users" button [#651](https://github.com/GetStream/stream-chat-swiftui/pull/651)
- Add config to skip edited label for some messages [#660](https://github.com/GetStream/stream-chat-swiftui/pull/660)

# [4.66.0](https://github.com/GetStream/stream-chat-swiftui/releases/tag/4.66.0)
_November 06, 2024_
Expand Down
8 changes: 7 additions & 1 deletion DemoAppSwiftUI/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,13 @@ class AppDelegate: NSObject, UIApplicationDelegate {
#endif

let utils = Utils(
messageListConfig: MessageListConfig(dateIndicatorPlacement: .messageList, userBlockingEnabled: true),
messageListConfig: MessageListConfig(
dateIndicatorPlacement: .messageList,
userBlockingEnabled: true,
skipEditedMessageLabel: { message in
message.extraData["ai_generated"]?.boolValue == true
}
),
composerConfig: ComposerConfig(isVoiceRecordingEnabled: true)
)
streamChat = StreamChat(chatClient: chatClient, utils: utils)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ public struct MessageListConfig {
localLinkDetectionEnabled: Bool = true,
isMessageEditedLabelEnabled: Bool = true,
markdownSupportEnabled: Bool = true,
userBlockingEnabled: Bool = false
userBlockingEnabled: Bool = false,
skipEditedMessageLabel: @escaping (ChatMessage) -> Bool = { _ in false }
) {
self.messageListType = messageListType
self.typingIndicatorPlacement = typingIndicatorPlacement
Expand All @@ -56,6 +57,7 @@ public struct MessageListConfig {
self.isMessageEditedLabelEnabled = isMessageEditedLabelEnabled
self.markdownSupportEnabled = markdownSupportEnabled
self.userBlockingEnabled = userBlockingEnabled
self.skipEditedMessageLabel = skipEditedMessageLabel
}

public let messageListType: MessageListType
Expand All @@ -81,6 +83,7 @@ public struct MessageListConfig {
public let isMessageEditedLabelEnabled: Bool
public let markdownSupportEnabled: Bool
public let userBlockingEnabled: Bool
public let skipEditedMessageLabel: (ChatMessage) -> Bool
}

/// Contains information about the message paddings.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,9 @@ struct MessageDateView: View {

var text: String {
var text = dateFormatter.string(from: message.createdAt)
let showMessageEditedLabel = utils.messageListConfig.isMessageEditedLabelEnabled
let messageListConfig = utils.messageListConfig
let showMessageEditedLabel = messageListConfig.isMessageEditedLabelEnabled
&& !messageListConfig.skipEditedMessageLabel(message)
&& message.textUpdatedAt != nil
&& !message.isDeleted
if showMessageEditedLabel {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,32 @@ class MessageContainerView_Tests: StreamChatTestCase {
assertSnapshot(matching: view, as: .image(perceptualPrecision: precision))
}

func test_messageContainerEditedAIGenerated_snapshot() {
// Given
let key = "ai_generated"
let utils = Utils(
dateFormatter: EmptyDateFormatter(),
messageListConfig: .init(skipEditedMessageLabel: { message in
message.extraData[key]?.boolValue == true
}))
streamChat = StreamChat(chatClient: chatClient, utils: utils)
let message = ChatMessage.mock(
id: .unique,
cid: .unique,
text: "Message sent by current user",
author: .mock(id: Self.currentUserId, name: "Martin"),
extraData: [key: true],
isSentByCurrentUser: true,
textUpdatedAt: Date()
)

// When
let view = testMessageViewContainer(message: message)

// Then
assertSnapshot(matching: view, as: .image(perceptualPrecision: precision))
}

func test_messageContainerCurrentUserColor_snapshot() {
// Given
let utils = Utils(dateFormatter: EmptyDateFormatter())
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading