mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Adopt the new latest event API. (#4779)
This commit is contained in:
@@ -16,15 +16,19 @@ struct RoomEventStringBuilder {
|
||||
let shouldPrefixSenderName: Bool
|
||||
|
||||
func buildAttributedString(for eventItemProxy: EventTimelineItemProxy) -> AttributedString? {
|
||||
let sender = eventItemProxy.sender
|
||||
let isOutgoing = eventItemProxy.isOwn
|
||||
buildAttributedString(for: eventItemProxy.content,
|
||||
sender: eventItemProxy.sender,
|
||||
isOutgoing: eventItemProxy.isOwn)
|
||||
}
|
||||
|
||||
func buildAttributedString(for content: TimelineItemContent, sender: TimelineItemSender, isOutgoing: Bool) -> AttributedString? {
|
||||
let displayName = if shouldDisambiguateDisplayNames {
|
||||
sender.disambiguatedDisplayName ?? sender.id
|
||||
} else {
|
||||
sender.displayName ?? sender.id
|
||||
}
|
||||
|
||||
switch eventItemProxy.content {
|
||||
switch content {
|
||||
case .msgLike(let messageLikeContent):
|
||||
switch messageLikeContent.kind {
|
||||
case .message(let messageContent):
|
||||
|
||||
@@ -230,10 +230,10 @@ class RoomSummaryProvider: RoomSummaryProviderProtocol {
|
||||
return updatedItems
|
||||
}
|
||||
|
||||
private func fetchRoomDetails(from room: Room) -> (roomInfo: RoomInfo?, latestEvent: EventTimelineItem?) {
|
||||
private func fetchRoomDetails(from room: Room) -> (roomInfo: RoomInfo?, latestEvent: LatestEventValue?) {
|
||||
class FetchResult {
|
||||
var roomInfo: RoomInfo?
|
||||
var latestEvent: EventTimelineItem?
|
||||
var latestEvent: LatestEventValue?
|
||||
}
|
||||
|
||||
let semaphore = DispatchSemaphore(value: 0)
|
||||
@@ -241,7 +241,7 @@ class RoomSummaryProvider: RoomSummaryProviderProtocol {
|
||||
|
||||
Task {
|
||||
do {
|
||||
result.latestEvent = await room.latestEvent()
|
||||
result.latestEvent = await room.newLatestEvent()
|
||||
result.roomInfo = try await room.roomInfo()
|
||||
} catch {
|
||||
MXLog.error("Failed fetching room info with error: \(error)")
|
||||
@@ -263,9 +263,18 @@ class RoomSummaryProvider: RoomSummaryProviderProtocol {
|
||||
var lastMessageDate: Date?
|
||||
|
||||
if let latestRoomMessage = roomDetails.latestEvent {
|
||||
let lastMessage = EventTimelineItemProxy(item: latestRoomMessage, uniqueID: .init("0"))
|
||||
lastMessageDate = lastMessage.timestamp
|
||||
attributedLastMessage = eventStringBuilder.buildAttributedString(for: lastMessage)
|
||||
switch latestRoomMessage {
|
||||
case .local(let timestamp, let senderID, let profile, let content, _):
|
||||
let sender = TimelineItemSender(senderID: senderID, senderProfile: profile)
|
||||
attributedLastMessage = eventStringBuilder.buildAttributedString(for: content, sender: sender, isOutgoing: true)
|
||||
lastMessageDate = Date(timeIntervalSince1970: TimeInterval(timestamp / 1000))
|
||||
case .remote(let timestamp, let senderID, let isOwn, let profile, let content):
|
||||
let sender = TimelineItemSender(senderID: senderID, senderProfile: profile)
|
||||
attributedLastMessage = eventStringBuilder.buildAttributedString(for: content, sender: sender, isOutgoing: isOwn)
|
||||
lastMessageDate = Date(timeIntervalSince1970: TimeInterval(timestamp / 1000))
|
||||
case .none:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
var inviterProxy: RoomMemberProxyProtocol?
|
||||
|
||||
Reference in New Issue
Block a user