Fix: the avatar was incorrect for the pill of a message if the event is not loaded.

This commit is contained in:
Nicolas Mauri 2023-03-21 09:27:48 +01:00
parent 5006ccb333
commit 13ba93ae13
2 changed files with 12 additions and 14 deletions

View file

@ -1059,7 +1059,6 @@ manualChangeMessageForVideo:(NSString*)manualChangeMessageForVideo
NSString *link = [mutableAttributedString.string substringWithRange:matchRange]; NSString *link = [mutableAttributedString.string substringWithRange:matchRange];
// Handle potential permalinks // Handle potential permalinks
if ([permalinkRegex numberOfMatchesInString:link options:0 range:NSMakeRange(0, link.length)]) { if ([permalinkRegex numberOfMatchesInString:link options:0 range:NSMakeRange(0, link.length)]) {
MXLogDebug(@"[MXKTools] Permalink detected: %@", link);
NSURLComponents *url = [[NSURLComponents new] initWithString:link]; NSURLComponents *url = [[NSURLComponents new] initWithString:link];
if (url.URL) if (url.URL)
{ {

View file

@ -226,11 +226,7 @@ struct PillProvider {
} }
func computeDisplayText(withRoomDisplayName displayName: String?) -> String { let displayText = room?.displayName.flatMap { VectorL10n.pillMessageIn($0) } ?? VectorL10n.pillMessage
displayName.flatMap { VectorL10n.pillMessageIn($0) } ?? VectorL10n.pillMessage
}
let displayText = computeDisplayText(withRoomDisplayName: room?.displayName)
let data = PillTextAttachmentData(pillType: .message(roomId: roomId, eventId: messageId), let data = PillTextAttachmentData(pillType: .message(roomId: roomId, eventId: messageId),
items: [ items: [
@ -254,25 +250,28 @@ struct PillProvider {
/// - Returns: a pill attachment /// - Returns: a pill attachment
private func pillTextAttachment(inCurrentRoomForMessageId messageId: String) -> PillAttachmentKind { private func pillTextAttachment(inCurrentRoomForMessageId messageId: String) -> PillAttachmentKind {
var roomMember: MXRoomMember? var roomMember: MXRoomMember?
// Try to get the room member // If we have the event locally, try to get the room member
if let event = session.store.event(withEventId: messageId, inRoom: roomState.roomId) { if let event = session.store.event(withEventId: messageId, inRoom: roomState.roomId) {
roomMember = self.roomMember(withUserId: event.sender) roomMember = self.roomMember(withUserId: event.sender)
} }
let displayText: String let displayText: String
if let userDisplayName = roomMember?.displayname { let avatar: PillTextAttachmentItem
displayText = VectorL10n.pillMessageFrom(userDisplayName) if let roomMember {
displayText = VectorL10n.pillMessageFrom(roomMember.displayname)
avatar = .avatar(url: roomMember.avatarUrl,
string: roomMember.displayname,
matrixId: roomMember.userId)
} else { } else {
displayText = VectorL10n.pillMessage displayText = VectorL10n.pillMessage
avatar = .asset(named: "link_icon",
parameters: .init(backgroundColor: PillAssetColor(uiColor: ThemeService.shared().theme.colors.links),
rawRenderingMode: UIImage.RenderingMode.alwaysTemplate.rawValue))
} }
let avatarUrl = roomMember?.avatarUrl
let data = PillTextAttachmentData(pillType: .message(roomId: roomState.roomId, eventId: messageId), let data = PillTextAttachmentData(pillType: .message(roomId: roomState.roomId, eventId: messageId),
items: [ items: [
.avatar(url: avatarUrl, avatar,
string: roomMember?.displayname,
matrixId: roomMember?.userId ?? ""),
.text(displayText) .text(displayText)
].compactMap { $0 }, ].compactMap { $0 },
isHighlighted: false, isHighlighted: false,