Skip to content

Commit 0b70c0a

Browse files
Added indicator when a message was edited (#447)
1 parent 2a02b9b commit 0b70c0a

File tree

13 files changed

+50
-7
lines changed

13 files changed

+50
-7
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
55

66
### ✅ Added
77
- Link detection in the text views
8+
- Indicator when a message was edited
89

910
# [4.49.0](https://github.com/GetStream/stream-chat-swiftui/releases/tag/4.49.0)
1011
_February 28, 2024_

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ let package = Package(
1717
)
1818
],
1919
dependencies: [
20-
.package(url: "https://github.com/GetStream/stream-chat-swift.git", from: "4.49.0"),
20+
.package(url: "https://github.com/GetStream/stream-chat-swift.git", from: "4.50.0"),
2121
],
2222
targets: [
2323
.target(

Sources/StreamChatSwiftUI/ChatChannel/ChatChannelViewModel.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,8 +350,11 @@ open class ChatChannelViewModel: ObservableObject, MessagesDataSource {
350350
}
351351

352352
let delay = previousMessage.createdAt.timeIntervalSince(date)
353+
let showMessageEditedLabel = utils.messageListConfig.isMessageEditedLabelEnabled
354+
&& message.textUpdatedAt != nil
353355

354-
if delay > utils.messageListConfig.maxTimeIntervalBetweenMessagesInGroup {
356+
if delay > utils.messageListConfig.maxTimeIntervalBetweenMessagesInGroup
357+
|| showMessageEditedLabel {
355358
temp[message.id]?.append(firstMessageKey)
356359
var prevInfo = temp[previousMessage.id] ?? []
357360
prevInfo.append(lastMessageKey)

Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageIdBuilder.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ public class DefaultMessageIdBuilder: MessageIdBuilder {
2020
if message.localState != nil {
2121
statesId = message.uploadingStatesId
2222
}
23+
if message.textUpdatedAt != nil {
24+
statesId = "edited"
25+
}
2326
return message.baseId + statesId + message.reactionScoresId
2427
+ message.repliesCountId + "\(message.updatedAt)" + message.pinStateId
2528
}

Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageListConfig.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ public struct MessageListConfig {
2828
handleTabBarVisibility: Bool = true,
2929
messageListAlignment: MessageListAlignment = .standard,
3030
uniqueReactionsEnabled: Bool = false,
31-
localLinkDetectionEnabled: Bool = true
31+
localLinkDetectionEnabled: Bool = true,
32+
isMessageEditedLabelEnabled: Bool = true
3233
) {
3334
self.messageListType = messageListType
3435
self.typingIndicatorPlacement = typingIndicatorPlacement
@@ -50,6 +51,7 @@ public struct MessageListConfig {
5051
self.messageListAlignment = messageListAlignment
5152
self.uniqueReactionsEnabled = uniqueReactionsEnabled
5253
self.localLinkDetectionEnabled = localLinkDetectionEnabled
54+
self.isMessageEditedLabelEnabled = isMessageEditedLabelEnabled
5355
}
5456

5557
public let messageListType: MessageListType
@@ -72,6 +74,7 @@ public struct MessageListConfig {
7274
public let messageListAlignment: MessageListAlignment
7375
public let uniqueReactionsEnabled: Bool
7476
public let localLinkDetectionEnabled: Bool
77+
public let isMessageEditedLabelEnabled: Bool
7578
}
7679

7780
/// Contains information about the message paddings.

Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageListHelperViews.swift

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,19 @@ struct MessageDateView: View {
6464

6565
var message: ChatMessage
6666

67+
var text: String {
68+
var text = dateFormatter.string(from: message.createdAt)
69+
let showMessageEditedLabel = utils.messageListConfig.isMessageEditedLabelEnabled
70+
&& message.textUpdatedAt != nil
71+
&& !message.isDeleted
72+
if showMessageEditedLabel {
73+
text = text + "" + L10n.Message.Cell.edited
74+
}
75+
return text
76+
}
77+
6778
var body: some View {
68-
Text(dateFormatter.string(from: message.createdAt))
79+
Text(text)
6980
.font(fonts.footnote)
7081
.foregroundColor(Color(colors.textLowEmphasis))
7182
.animation(nil)

Sources/StreamChatSwiftUI/Generated/L10n.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,8 @@ internal enum L10n {
315315
internal static var title: String { L10n.tr("Localizable", "message.bounce.title") }
316316
}
317317
internal enum Cell {
318+
/// Edited
319+
internal static var edited: String { L10n.tr("Localizable", "message.cell.edited") }
318320
/// Pinned by
319321
internal static var pinnedBy: String { L10n.tr("Localizable", "message.cell.pinnedBy") }
320322
/// unknown

Sources/StreamChatSwiftUI/Resources/en.lproj/Localizable.strings

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
"message.gallery.photos" = "Photos";
4848
"message.cell.pinnedBy" = "Pinned by";
4949
"message.cell.unknownPin" = "unknown";
50+
"message.cell.edited" = "Edited";
5051
"message.reactions.currentUser" = "You";
5152

5253
"alert.actions.cancel" = "Cancel";

StreamChatSwiftUI-XCFramework.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Pod::Spec.new do |spec|
1919

2020
spec.framework = "Foundation", "UIKit", "SwiftUI"
2121

22-
spec.dependency "StreamChat-XCFramework", "~> 4.49.0"
22+
spec.dependency "StreamChat-XCFramework", "~> 4.50.0"
2323

2424
spec.cocoapods_version = ">= 1.11.0"
2525
end

StreamChatSwiftUI.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ Pod::Spec.new do |spec|
1919

2020
spec.framework = "Foundation", "UIKit", "SwiftUI"
2121

22-
spec.dependency "StreamChat", "~> 4.49.0"
22+
spec.dependency "StreamChat", "~> 4.50.0"
2323
end
2424

0 commit comments

Comments
 (0)