Skip to content

Commit cc0133b

Browse files
Exposed a way to customise text message before sending and reading
1 parent ccf540a commit cc0133b

File tree

15 files changed

+105
-15
lines changed

15 files changed

+105
-15
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
33

44
# Upcoming
55

6+
### ✅ Added
7+
- Exposed a way to customise text message before sending and reading
8+
69
### 🐞 Fixed
710
- Fixed a bug with channel list refreshing after deeplinking
811

Sources/StreamChatSwiftUI/ChatChannel/ChannelInfo/PinnedMessagesView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ struct PinnedMessageView: View {
6363
.foregroundColor(Color(colors.text))
6464

6565
HStack {
66-
Text(message.text)
66+
Text(message.adjustedText)
6767
.font(fonts.footnote)
6868
.foregroundColor(Color(colors.textLowEmphasis))
6969

Sources/StreamChatSwiftUI/ChatChannel/Composer/ComposerConfig.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,18 @@ public struct ComposerConfig {
99

1010
public var inputViewMinHeight: CGFloat
1111
public var inputFont: UIFont
12+
public var adjustMessageOnSend: (String) -> (String)
13+
public var adjustMessageOnRead: (String) -> (String)
1214

1315
public init(
1416
inputViewMinHeight: CGFloat = 38,
15-
inputFont: UIFont = UIFont.preferredFont(forTextStyle: .body)
17+
inputFont: UIFont = UIFont.preferredFont(forTextStyle: .body),
18+
adjustMessageOnSend: @escaping (String) -> (String) = { $0 },
19+
adjustMessageOnRead: @escaping (String) -> (String) = { $0 }
1620
) {
1721
self.inputViewMinHeight = inputViewMinHeight
1822
self.inputFont = inputFont
23+
self.adjustMessageOnSend = adjustMessageOnSend
24+
self.adjustMessageOnRead = adjustMessageOnRead
1925
}
2026
}

Sources/StreamChatSwiftUI/ChatChannel/Composer/MessageComposerViewModel.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,10 +146,14 @@ open class MessageComposerViewModel: ObservableObject {
146146
displayInfo.isInstant == true {
147147
return "\(composerCommand.id) \(text)"
148148
} else {
149-
return text
149+
return adjustedText
150150
}
151151
}
152152

153+
var adjustedText: String {
154+
utils.composerConfig.adjustMessageOnSend(text)
155+
}
156+
153157
private var totalAttachmentsCount: Int {
154158
addedAssets.count +
155159
addedCustomAttachments.count +
@@ -459,7 +463,7 @@ open class MessageComposerViewModel: ObservableObject {
459463
messageId: message.id
460464
)
461465

462-
messageController.editMessage(text: text) { [weak self] error in
466+
messageController.editMessage(text: adjustedText) { [weak self] error in
463467
if error != nil {
464468
self?.errorShown = true
465469
} else {

Sources/StreamChatSwiftUI/ChatChannel/MessageList/FileAttachmentView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public struct FileAttachmentsContainer<Factory: ViewFactory>: View {
5757
)
5858

5959
HStack {
60-
Text(message.text)
60+
Text(message.adjustedText)
6161
.foregroundColor(textColor(for: message))
6262
.standardPadding()
6363
Spacer()

Sources/StreamChatSwiftUI/ChatChannel/MessageList/ImageAttachmentView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ struct AttachmentTextView: View {
8383

8484
var body: some View {
8585
HStack {
86-
Text(message.text)
86+
Text(message.adjustedText)
8787
.standardPadding()
8888
.foregroundColor(textColor(for: message))
8989
.fixedSize(horizontal: false, vertical: true)

Sources/StreamChatSwiftUI/ChatChannel/MessageList/LinkAttachmentView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public struct LinkAttachmentContainer<Factory: ViewFactory>: View {
3636
}
3737

3838
let availableWidth = width - 4 * padding
39-
let size = message.text.frameSize(maxWidth: availableWidth)
39+
let size = message.adjustedText.frameSize(maxWidth: availableWidth)
4040
LinkTextView(
4141
message: message,
4242
width: availableWidth,

Sources/StreamChatSwiftUI/ChatChannel/MessageList/LinkTextView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ struct LinkTextView: UIViewRepresentable {
4444
}
4545

4646
private var text: String {
47-
message.text
47+
message.adjustedText
4848
}
4949
}
5050

Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageView.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public struct MessageTextView<Factory: ViewFactory>: View {
154154
)
155155
}
156156

157-
Text(message.text)
157+
Text(message.adjustedText)
158158
.padding(.leading, leadingPadding)
159159
.padding(.trailing, trailingPadding)
160160
.padding(.top, topPadding)
@@ -195,7 +195,7 @@ public struct EmojiTextView<Factory: ViewFactory>: View {
195195
scrolledId: $scrolledId
196196
)
197197

198-
Text(message.text)
198+
Text(message.adjustedText)
199199
.font(fonts.emoji)
200200
}
201201
.modifier(
@@ -207,7 +207,7 @@ public struct EmojiTextView<Factory: ViewFactory>: View {
207207
)
208208
)
209209
} else {
210-
Text(message.text)
210+
Text(message.adjustedText)
211211
.font(fonts.emoji)
212212
}
213213
}

Sources/StreamChatSwiftUI/ChatChannel/MessageList/QuotedMessageView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ public struct QuotedMessageView<Factory: ViewFactory>: View {
168168

169169
private var textForMessage: String {
170170
if !quotedMessage.text.isEmpty {
171-
return quotedMessage.text
171+
return quotedMessage.adjustedText
172172
}
173173

174174
if !quotedMessage.imageAttachments.isEmpty {

0 commit comments

Comments
 (0)