Added user display names and switched to using an avatar url directly in the homeScreen viewModel for the current user.

This commit is contained in:
Stefan Ceriu
2022-03-21 19:35:24 +02:00
parent a9c0a8f334
commit d201ca1ad8
23 changed files with 152 additions and 71 deletions
@@ -58,7 +58,8 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
}
if let item = timelineItem as? EventBasedTimelineItemProtocol {
loadAvatarForTimelineItem(item)
loadUserAvatarForTimelineItem(item)
loadUserDisplayNameForTimelineItem(item)
}
switch timelineItem {
@@ -110,13 +111,11 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
}
private func loadImageForTimelineItem(_ timelineItem: ImageRoomTimelineItem) {
var item = timelineItem
if item.image != nil {
if timelineItem.image != nil {
return
}
guard let url = item.url else {
guard let url = timelineItem.url else {
return
}
@@ -126,7 +125,8 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
}
if case let .success(image) = result {
guard let index = self.timelineItems.firstIndex(where: { $0.id == timelineItem.id }) else {
guard let index = self.timelineItems.firstIndex(where: { $0.id == timelineItem.id }),
var item = self.timelineItems[index] as? ImageRoomTimelineItem else {
return
}
@@ -137,19 +137,18 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
}
}
private func loadAvatarForTimelineItem(_ timelineItem: EventBasedTimelineItemProtocol) {
var item = timelineItem
if item.shouldShowSenderDetails == false {
private func loadUserAvatarForTimelineItem(_ timelineItem: EventBasedTimelineItemProtocol) {
if timelineItem.shouldShowSenderDetails == false {
return
}
memberDetailsProvider.avatarURLForUserId(timelineItem.sender) { result in
memberDetailsProvider.avatarURLForUserId(timelineItem.senderId) { result in
if case let .success(avatarURL) = result,
let avatarURL = avatarURL {
self.mediaProvider.loadImageFromURL(avatarURL) { result in
if case let .success(image) = result {
guard let index = self.timelineItems.firstIndex(where: { $0.id == timelineItem.id }) else {
guard let index = self.timelineItems.firstIndex(where: { $0.id == timelineItem.id }),
var item = self.timelineItems[index] as? EventBasedTimelineItemProtocol else {
return
}
@@ -161,4 +160,24 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
}
}
}
private func loadUserDisplayNameForTimelineItem(_ timelineItem: EventBasedTimelineItemProtocol) {
if timelineItem.shouldShowSenderDetails == false {
return
}
memberDetailsProvider.displayNameForUserId(timelineItem.senderId) { result in
if case let .success(displayName) = result,
let displayName = displayName {
guard let index = self.timelineItems.firstIndex(where: { $0.id == timelineItem.id }),
var item = self.timelineItems[index] as? EventBasedTimelineItemProtocol else {
return
}
item.senderDisplayName = displayName
self.timelineItems[index] = item
self.callbacks.send(.updatedTimelineItem(timelineItem.id))
}
}
}
}