mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
Load member profiles through the timeline (#522)
This commit is contained in:
@@ -97,15 +97,7 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
|
||||
}
|
||||
}
|
||||
|
||||
func processItemAppearance(_ itemID: String) async {
|
||||
guard let timelineItem = timelineItems.first(where: { $0.id == itemID }) else {
|
||||
return
|
||||
}
|
||||
|
||||
if let item = timelineItem as? EventBasedTimelineItemProtocol {
|
||||
await loadUserDisplayNameForTimelineItem(item)
|
||||
}
|
||||
}
|
||||
func processItemAppearance(_ itemID: String) async { }
|
||||
|
||||
func processItemDisappearance(_ itemID: String) { }
|
||||
|
||||
@@ -435,26 +427,4 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
#warning("This is here because sender profiles aren't working properly. Remove it entirely later")
|
||||
private func loadUserDisplayNameForTimelineItem(_ timelineItem: EventBasedTimelineItemProtocol) async {
|
||||
if timelineItem.shouldShowSenderDetails == false || timelineItem.sender.displayName != nil {
|
||||
return
|
||||
}
|
||||
|
||||
switch await roomProxy.loadDisplayNameForUserId(timelineItem.sender.id) {
|
||||
case .success(let displayName):
|
||||
guard let displayName,
|
||||
let index = timelineItems.firstIndex(where: { $0.id == timelineItem.id }),
|
||||
var item = timelineItems[index] as? EventBasedTimelineItemProtocol else {
|
||||
return
|
||||
}
|
||||
|
||||
item.sender.displayName = displayName
|
||||
timelineItems[index] = item
|
||||
callbacks.send(.updatedTimelineItem(timelineItem.id))
|
||||
case .failure:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,9 +106,17 @@ struct EventTimelineItemProxy: CustomDebugStringConvertible {
|
||||
|
||||
var sender: TimelineItemSender {
|
||||
let profile = item.senderProfile()
|
||||
return .init(id: item.sender(),
|
||||
displayName: profile.displayName,
|
||||
avatarURL: profile.avatarUrl.flatMap(URL.init(string:)))
|
||||
|
||||
switch profile {
|
||||
case let .ready(displayName, _, avatarUrl):
|
||||
return .init(id: item.sender(),
|
||||
displayName: displayName,
|
||||
avatarURL: avatarUrl.flatMap(URL.init(string:)))
|
||||
default:
|
||||
return .init(id: item.sender(),
|
||||
displayName: nil,
|
||||
avatarURL: nil)
|
||||
}
|
||||
}
|
||||
|
||||
var reactions: [Reaction] {
|
||||
|
||||
Reference in New Issue
Block a user