Skip to content

Commit

Permalink
Fix message transformer not being applied when editing a message (#3602)
Browse files Browse the repository at this point in the history
* Fix message transformer not being applied when editing a message

* Update CHANGELOG.md
  • Loading branch information
nuno-vieira authored Feb 21, 2025
1 parent 6a329a0 commit e274d6c
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 3 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## StreamChat
### 🐞 Fixed
- Update channel's preview message when coming back to online [#3574](https://github.com/GetStream/stream-chat-swift/pull/3574)
- Fix message transformer not being applied when editing a message [#3602](https://github.com/GetStream/stream-chat-swift/pull/3602)
### 🔄 Changed

# [4.72.0](https://github.com/GetStream/stream-chat-swift/releases/tag/4.72.0)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -259,12 +259,21 @@ public class ChatMessageController: DataController, DelegateCallable, DataStoreP
extraData: [String: RawJSON]? = nil,
completion: ((Error?) -> Void)? = nil
) {
var transformableInfo = NewMessageTransformableInfo(
text: text,
attachments: attachments,
extraData: extraData ?? message?.extraData ?? [:]
)
if let transformer = client.config.modelsTransformer {
transformableInfo = transformer.transform(newMessageInfo: transformableInfo)
}

messageUpdater.editMessage(
messageId: messageId,
text: text,
text: transformableInfo.text,
skipEnrichUrl: skipEnrichUrl,
attachments: attachments,
extraData: extraData
attachments: transformableInfo.attachments,
extraData: transformableInfo.extraData
) { result in
self.callback {
completion?(result.error)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -988,6 +988,46 @@ final class MessageController_Tests: XCTestCase {
XCTAssertEqual(env.messageUpdater.editMessage_extraData, extraData)
}

func test_editMessage_whenMessageTransformerIsProvided_callsUpdaterWithTransformedValues() throws {
class MockTransformer: StreamModelsTransformer {
var mockTransformedMessage = NewMessageTransformableInfo(
text: "transformed",
attachments: [.mockFile],
extraData: ["transformed": true]
)
func transform(newMessageInfo: NewMessageTransformableInfo) -> NewMessageTransformableInfo {
mockTransformedMessage
}
}

let transformer = MockTransformer()
var config = ChatClientConfig(apiKeyString: .unique)
config.modelsTransformer = transformer
client = .mock(config: config)
controller = ChatMessageController(
client: client,
cid: cid,
messageId: messageId,
replyPaginationHandler: replyPaginationHandler,
environment: env.controllerEnvironment
)

let exp = expectation(description: "should complete edit message")

controller.editMessage(
text: .unique
) { _ in
exp.fulfill()
}

env.messageUpdater.editMessage_completion?(.success(.unique))
wait(for: [exp], timeout: defaultTimeout)

XCTAssertEqual(env.messageUpdater.editMessage_text, transformer.mockTransformedMessage.text)
XCTAssertEqual(env.messageUpdater.editMessage_attachments, transformer.mockTransformedMessage.attachments)
XCTAssertEqual(env.messageUpdater.editMessage_extraData, transformer.mockTransformedMessage.extraData)
}

// MARK: - Flag message

func test_flag_propagatesError() {
Expand Down

0 comments on commit e274d6c

Please sign in to comment.