Bump the SDK and adopt the new MsgLike timeline item types (#4000)

* Bump the RustSDK to v25.04.09

* Adopt new MsgLike based timeline item structure.

* Move the `replyDetails` and `isThreaded` to the `RoomTimelineItemProperties`

* Restructure the TimelineItemFactory

* Fix line length warning

* Rename `msgLikeContent` to `messageLikeContent` wherever possible.

* Move the `EventTimelineItem` mocks to the SDK mocks folder.
This commit is contained in:
Stefan Ceriu
2025-04-10 14:04:16 +03:00
committed by GitHub
parent aaea51e3f1
commit 83136af7c4
49 changed files with 515 additions and 597 deletions
@@ -0,0 +1,55 @@
//
// Copyright 2024 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
// Please see LICENSE files in the repository root for full details.
//
import Foundation
import LoremSwiftum
import MatrixRustSDK
struct EventTimelineItemSDKMockConfiguration {
var eventID: String = UUID().uuidString
var sender = ""
var isOwn = false
var content: TimelineItemContent = .msgLike(content: .init(kind: .redacted, reactions: [], threadRoot: nil, inReplyTo: nil))
}
extension EventTimelineItem {
init(configuration: EventTimelineItemSDKMockConfiguration) {
self.init(isRemote: true,
eventOrTransactionId: .eventId(eventId: configuration.eventID),
sender: configuration.sender,
senderProfile: .pending,
isOwn: configuration.isOwn,
isEditable: false,
content: configuration.content,
timestamp: 0,
localSendState: nil,
localCreatedAt: nil,
readReceipts: [:],
origin: nil,
canBeRepliedTo: false,
lazyProvider: LazyTimelineItemProviderSDKMock())
}
static var mockMessage: EventTimelineItem {
let body = Lorem.sentences(Int.random(in: 1...5))
let messageType = MessageType.text(content: .init(body: body, formatted: nil))
let content = TimelineItemContent.msgLike(content: .init(kind: .message(content: .init(msgType: messageType,
body: body,
isEdited: false,
mentions: nil)),
reactions: [],
threadRoot: nil,
inReplyTo: nil))
return .init(configuration: .init(content: content))
}
static func mockCallInvite(sender: String) -> EventTimelineItem {
.init(configuration: .init(sender: sender, content: .callInvite))
}
}