From b709cccb1c214affee842ec41f89937223abf938 Mon Sep 17 00:00:00 2001 From: Mauro Romito <mauro.romito@element.io> Date: Fri, 21 Mar 2025 16:18:28 +0100 Subject: [PATCH] fix: DM invites now correctly render the avatar --- .../HomeScreen/View/HomeScreenInviteCell.swift | 18 ++++++++++++------ .../JoinRoomScreen/JoinRoomScreenModels.swift | 9 +++++---- .../homeScreenInviteCell.iPad-en-GB-0.png | 4 ++-- .../homeScreenInviteCell.iPad-pseudo-0.png | 4 ++-- .../homeScreenInviteCell.iPhone-16-en-GB-0.png | 4 ++-- ...homeScreenInviteCell.iPhone-16-pseudo-0.png | 4 ++-- .../joinRoomScreen.InvitedDM-iPad-en-GB.png | 4 ++-- .../joinRoomScreen.InvitedDM-iPad-pseudo.png | 4 ++-- ...oinRoomScreen.InvitedDM-iPhone-16-en-GB.png | 4 ++-- ...inRoomScreen.InvitedDM-iPhone-16-pseudo.png | 4 ++-- 10 files changed, 33 insertions(+), 26 deletions(-) diff --git a/ElementX/Sources/Screens/HomeScreen/View/HomeScreenInviteCell.swift b/ElementX/Sources/Screens/HomeScreen/View/HomeScreenInviteCell.swift index ee83be2c2..7bea544f5 100644 --- a/ElementX/Sources/Screens/HomeScreen/View/HomeScreenInviteCell.swift +++ b/ElementX/Sources/Screens/HomeScreen/View/HomeScreenInviteCell.swift @@ -18,7 +18,13 @@ struct HomeScreenInviteCell: View { let hideInviteAvatars: Bool private var avatar: RoomAvatar { - hideInviteAvatars ? room.avatar.removingAvatar : room.avatar + // DM invites avatars are broken, this is a workaround + // https://github.com/matrix-org/matrix-rust-sdk/issues/4825 + if room.isDirect, let inviter = room.inviter { + .heroes([.init(userID: inviter.id, displayName: inviter.displayName, avatarURL: hideInviteAvatars ? nil : inviter.avatarURL)]) + } else { + hideInviteAvatars ? room.avatar.removingAvatar : room.avatar + } } var body: some View { @@ -77,7 +83,7 @@ struct HomeScreenInviteCell: View { if let inviter = room.inviter, !room.isDirect { RoomInviterLabel(inviter: inviter, - shouldHideAvatar: context.viewState.hideInviteAvatars, + shouldHideAvatar: hideInviteAvatars, mediaProvider: context.mediaProvider) .font(.compound.bodyMD) .foregroundStyle(.compound.textSecondary) @@ -157,7 +163,7 @@ struct HomeScreenInviteCell_Previews: PreviewProvider, TestablePreview { HomeScreenInviteCell(room: .roomInvite(alias: "#footest:somewhere.org", avatarURL: .mockMXCAvatar), context: viewModel().context, hideInviteAvatars: false) HomeScreenInviteCell(room: .roomInvite(alias: "#footest-hidden-avatars:somewhere.org", avatarURL: .mockMXCAvatar), - context: viewModel(hideInviteAvatars: true).context, hideInviteAvatars: true) + context: viewModel().context, hideInviteAvatars: true) HomeScreenInviteCell(room: .roomInvite(alias: "#footest:somewhere.org"), context: viewModel().context, hideInviteAvatars: false) .dynamicTypeSize(.accessibility1) @@ -166,7 +172,7 @@ struct HomeScreenInviteCell_Previews: PreviewProvider, TestablePreview { .previewLayout(.sizeThatFits) } - static func viewModel(hideInviteAvatars: Bool = false) -> HomeScreenViewModel { + static func viewModel() -> HomeScreenViewModel { let clientProxy = ClientProxyMock(.init()) let userSession = UserSessionMock(.init(clientProxy: clientProxy)) @@ -183,8 +189,8 @@ struct HomeScreenInviteCell_Previews: PreviewProvider, TestablePreview { private extension HomeScreenRoom { static var dmInvite: HomeScreenRoom { let inviter = RoomMemberProxyMock() - inviter.displayName = "Jack" - inviter.userID = "@jack:somewhere.com" + inviter.displayName = "Some Guy" + inviter.userID = "@someone:somewhere.com" let summary = RoomSummary(roomListItem: RoomListItemSDKMock(), id: "@someone:somewhere.com", diff --git a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenModels.swift b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenModels.swift index dca41ca9b..f5c608410 100644 --- a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenModels.swift +++ b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenModels.swift @@ -83,14 +83,15 @@ struct JoinRoomScreenViewState: BindableState { var avatar: RoomAvatar? { // DM invites avatars are broken, this is a workaround + // https://github.com/matrix-org/matrix-rust-sdk/issues/4825 if isDMInvite, let inviter = roomDetails?.inviter { - return .room(id: roomID, name: inviter.displayName, avatarURL: hideInviteAvatars ? nil : inviter.avatarURL) + .heroes([.init(userID: inviter.id, displayName: inviter.displayName, avatarURL: hideInviteAvatars ? nil : inviter.avatarURL)]) } else if let roomDetails, let avatar = roomDetails.avatar { - return shouldHideAvatars ? avatar.removingAvatar : avatar + shouldHideAvatars ? avatar.removingAvatar : avatar } else if let name = roomDetails?.name { - return .room(id: roomID, name: name, avatarURL: nil) + .room(id: roomID, name: name, avatarURL: nil) } else { - return nil + nil } } diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPad-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPad-en-GB-0.png index e3445c409..f0bc3f4e3 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPad-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPad-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a2afcba709e9e534cdd62168d6957db70cef57703a6033c0bdc8bb1ff491e974 -size 317756 +oid sha256:55fd5524f64fc98d602079cf0d508509debd7692665a89fe188c1d811a8e5225 +size 313508 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPad-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPad-pseudo-0.png index 60975ed4e..bf9722a72 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPad-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPad-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d38436f84b344252e929f15075a5219260b5454c223c77fb1f41c88322adda02 -size 337324 +oid sha256:7aadc016d54830518f04138db98d3db6b9cbdd46c781c9d6d3e216fa5f93184c +size 333135 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPhone-16-en-GB-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPhone-16-en-GB-0.png index a40b4d687..74f5e362f 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPhone-16-en-GB-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPhone-16-en-GB-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2994fc2ce1f3a12e0b1fd60c27f7649de7e69027d4c57f941211f6e268344fd3 -size 259148 +oid sha256:1728cf95295698ef622e17f94bdd3051dfb66805c7bfc2bcbbea702e916040ab +size 255180 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPhone-16-pseudo-0.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPhone-16-pseudo-0.png index 72cf9afc3..ba43f3dbd 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPhone-16-pseudo-0.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPhone-16-pseudo-0.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b07fc5ed7e4355332558a45b7117b3825e3d61bf9a6cde9c38e967e0bfd78d1 -size 341431 +oid sha256:38ec032717e91d95123e93db3bafebb98357f75fd82f743a57c051a8e72e166d +size 337264 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-en-GB.png index ed4d03d10..f5eab51e4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7179c2051979af73a92741a035af441763c51c7c8eaa08ab2c6703a30db5f761 -size 107060 +oid sha256:b5fb7a23048bb92aa0b150affa0a85b74a7ddf6e3a283f2e5c382eb2c13d657b +size 106996 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-pseudo.png index 8741d9de2..3a4fd34f8 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPad-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c113c3152efde1b3dd551f2d889d679e0fcbfc548f441cefbc1431206ef334c -size 110563 +oid sha256:8f4e3b3b3c0b5de6fb9ab963df7f4b7d090e9ad82b181ced19326709c54c6f4b +size 110503 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-en-GB.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-en-GB.png index fa11d01f6..7c913b144 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-en-GB.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-en-GB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a2a6408a70b8d67791d156e8bc2dce8504a78a90e0e1408cc3c510845d2b0a9d -size 61876 +oid sha256:4df6b436febeb15d036f0003f1eb782745e8223301f888c39bc41a83ef2acf85 +size 61843 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-pseudo.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-pseudo.png index a958859d6..592456aa4 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-pseudo.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/joinRoomScreen.InvitedDM-iPhone-16-pseudo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:81f85a54ef59dcbbd79c2108c1c243b175d69c4fd00838e79c2c6ed83a518a63 -size 70951 +oid sha256:36820fc8707e26533dcf705b085ef9674823a39c79edf0f091182ff3f1a46efe +size 70922 -- GitLab