Rename UserProfileProxy to UserProfile. It's a pure struct and proxies nothing.

Also remove the redundant `userID` property given `id` already exists (for Identifiable conformance).
This commit is contained in:
Doug
2026-07-01 15:18:03 +01:00
committed by Doug
parent bdf53b64a8
commit 3ef66cdd05
55 changed files with 203 additions and 209 deletions
@@ -13,7 +13,7 @@ import SwiftUI
struct AvatarHeaderView<Footer: View>: View {
private enum AvatarInfo {
case room(RoomAvatar)
case user(UserProfileProxy)
case user(UserProfile)
}
private enum Badge: Hashable {
@@ -44,7 +44,7 @@ struct AvatarHeaderView<Footer: View>: View {
if let roomAlias = room.canonicalAlias {
subtitle = roomAlias
} else if room.isDirect, case let .heroes(heroes) = room.avatar, heroes.count == 1 {
subtitle = heroes[0].userID
subtitle = heroes[0].id
} else {
subtitle = nil
}
@@ -70,10 +70,10 @@ struct AvatarHeaderView<Footer: View>: View {
mediaProvider: MediaProviderProtocol? = nil,
onAvatarTap: ((URL) -> Void)? = nil,
@ViewBuilder footer: @escaping () -> Footer) {
let dmRecipientProfile = UserProfileProxy(member: dmRecipient)
avatarInfo = .room(.heroes([dmRecipientProfile, UserProfileProxy(member: accountOwner)]))
title = dmRecipientProfile.displayName ?? dmRecipientProfile.userID
subtitle = dmRecipientProfile.displayName == nil ? nil : dmRecipientProfile.userID
let dmRecipientProfile = UserProfile(member: dmRecipient)
avatarInfo = .room(.heroes([dmRecipientProfile, UserProfile(member: accountOwner)]))
title = dmRecipientProfile.displayName ?? dmRecipientProfile.id
subtitle = dmRecipientProfile.displayName == nil ? nil : dmRecipientProfile.id
avatarSize = .user(on: .dmDetails)
self.mediaProvider = mediaProvider
@@ -89,7 +89,7 @@ struct AvatarHeaderView<Footer: View>: View {
mediaProvider: MediaProviderProtocol? = nil,
onAvatarTap: ((URL) -> Void)? = nil,
@ViewBuilder footer: @escaping () -> Footer) {
let profile = UserProfileProxy(member: member)
let profile = UserProfile(member: member)
self.init(user: profile,
isVerified: isVerified,
@@ -99,15 +99,15 @@ struct AvatarHeaderView<Footer: View>: View {
footer: footer)
}
init(user: UserProfileProxy,
init(user: UserProfile,
isVerified: Bool,
avatarSize: Avatars.Size,
mediaProvider: MediaProviderProtocol? = nil,
onAvatarTap: ((URL) -> Void)? = nil,
@ViewBuilder footer: @escaping () -> Footer) {
avatarInfo = .user(user)
title = user.displayName ?? user.userID
subtitle = user.displayName == nil ? nil : user.userID
title = user.displayName ?? user.id
subtitle = user.displayName == nil ? nil : user.id
self.avatarSize = avatarSize
self.mediaProvider = mediaProvider
@@ -123,7 +123,7 @@ struct AvatarHeaderView<Footer: View>: View {
mediaProvider: MediaProviderProtocol? = nil,
onAvatarTap: ((URL) -> Void)? = nil,
@ViewBuilder footer: @escaping () -> Footer) {
let profile = UserProfileProxy(sender: sender)
let profile = UserProfile(sender: sender)
self.init(user: profile,
isVerified: false,
@@ -180,8 +180,8 @@ struct AvatarHeaderView<Footer: View>: View {
switch avatarInfo {
case .room(let roomAvatar):
return roomAvatar.hasURL ? L10n.a11yViewAvatar : L10n.a11yAvatar
case .user(let userProfileProxy):
return userProfileProxy.avatarURL != nil ? L10n.a11yViewAvatar : L10n.a11yAvatar
case .user(let userProfile):
return userProfile.avatarURL != nil ? L10n.a11yViewAvatar : L10n.a11yAvatar
}
}
@@ -198,7 +198,7 @@ struct AvatarHeaderView<Footer: View>: View {
case .user(let userProfile):
LoadableAvatarImage(url: userProfile.avatarURL,
name: userProfile.displayName,
contentID: userProfile.userID,
contentID: userProfile.id,
avatarSize: avatarSize,
mediaProvider: mediaProvider,
onTap: onAvatarTap)
@@ -10,7 +10,7 @@ import Compound
import SwiftUI
struct JoinedMembersBadgeView: View {
let heroes: [UserProfileProxy]
let heroes: [UserProfile]
var shouldHideAvatars = false
let joinedCount: Int
@@ -46,7 +46,7 @@ struct JoinedMembersBadgeView: View {
ForEach(heroes.prefix(3).reversed()) { hero in
LoadableAvatarImage(url: shouldHideAvatars ? nil : hero.avatarURL,
name: hero.displayName,
contentID: hero.userID,
contentID: hero.id,
avatarSize: .user(on: .spaceHeader),
mediaProvider: mediaProvider)
.mask {
@@ -69,7 +69,7 @@ struct LocationMarkerView: View {
if let userProfile = kind.userProfile {
LoadableAvatarImage(url: userProfile.avatarURL,
name: userProfile.displayName,
contentID: userProfile.userID,
contentID: userProfile.id,
avatarSize: .user(on: .map),
mediaProvider: mediaProvider)
.overlay {
@@ -13,7 +13,7 @@ enum RoomAvatar: Equatable {
/// An avatar generated from a Room's details.
case room(id: String, name: String?, avatarURL: URL?)
/// An avatar generated from a collection of room heroes.
case heroes([UserProfileProxy])
case heroes([UserProfile])
/// An avatar generated from a Space's details.
case space(id: String, name: String?, avatarURL: URL?)
/// A static avatar for a tombstoned room.
@@ -24,7 +24,7 @@ enum RoomAvatar: Equatable {
case let .room(id, name, _):
.room(id: id, name: name, avatarURL: nil)
case let .heroes(users):
.heroes(users.map { .init(userID: $0.userID, displayName: $0.displayName, avatarURL: nil) })
.heroes(users.map { .init(userID: $0.id, displayName: $0.displayName, avatarURL: nil) })
case .space(let id, let name, _):
.space(id: id, name: name, avatarURL: nil)
case .tombstoned:
@@ -76,7 +76,7 @@ struct RoomAvatarImage: View {
ZStack {
LoadableAvatarImage(url: users[0].avatarURL,
name: users[0].displayName,
contentID: users[0].userID,
contentID: users[0].id,
avatarSize: avatarSize,
mediaProvider: mediaProvider,
onTap: onAvatarTap)
@@ -84,7 +84,7 @@ struct RoomAvatarImage: View {
LoadableAvatarImage(url: users[1].avatarURL,
name: users[1].displayName,
contentID: users[1].userID,
contentID: users[1].id,
avatarSize: avatarSize,
mediaProvider: mediaProvider,
onTap: onAvatarTap)
@@ -107,7 +107,7 @@ struct RoomAvatarImage: View {
} else {
LoadableAvatarImage(url: users[0].avatarURL,
name: users[0].displayName,
contentID: users[0].userID,
contentID: users[0].id,
avatarSize: avatarSize,
mediaProvider: mediaProvider,
onTap: onAvatarTap)
@@ -11,7 +11,7 @@ import MatrixRustSDK
import SwiftUI
struct UserProfileListRow: View {
let user: UserProfileProxy
let user: UserProfile
let membership: MembershipState?
let mediaProvider: MediaProviderProtocol?
@@ -27,14 +27,14 @@ struct UserProfileListRow: View {
if let membershipText = membership?.localizedDescription {
return membershipText
} else if user.displayName != nil {
return user.userID
return user.id
} else {
return nil
}
}
var body: some View {
ListRow(label: .avatar(title: user.displayName ?? user.userID,
ListRow(label: .avatar(title: user.displayName ?? user.id,
description: subtitle,
icon: avatar,
role: isUnknownProfile ? .error : nil),
@@ -44,7 +44,7 @@ struct UserProfileListRow: View {
var avatar: LoadableAvatarImage {
LoadableAvatarImage(url: user.avatarURL,
name: user.displayName,
contentID: user.userID,
contentID: user.id,
avatarSize: .user(on: .startChat),
mediaProvider: mediaProvider)
}