From d90a8d988e1638490b39d66e088e33700ba26601 Mon Sep 17 00:00:00 2001 From: Martin Mitrevski Date: Thu, 20 Mar 2025 09:49:04 +0100 Subject: [PATCH 1/2] Add avatar customization in add users popup --- .../ChannelInfo/AddUsersView.swift | 28 +++++++++++-------- .../ChannelInfo/ChatChannelInfoView.swift | 1 + 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/Sources/StreamChatSwiftUI/ChatChannel/ChannelInfo/AddUsersView.swift b/Sources/StreamChatSwiftUI/ChatChannel/ChannelInfo/AddUsersView.swift index 631fb4877..71bbadc68 100644 --- a/Sources/StreamChatSwiftUI/ChatChannel/ChannelInfo/AddUsersView.swift +++ b/Sources/StreamChatSwiftUI/ChatChannel/ChannelInfo/AddUsersView.swift @@ -6,27 +6,27 @@ import StreamChat import SwiftUI /// View for the add users popup. -struct AddUsersView: View { +struct AddUsersView: View { @Injected(\.fonts) private var fonts @Injected(\.colors) private var colors - private static let columnCount = 4 - private static let itemSize: CGFloat = 64 - private let columns = Array( repeating: GridItem( - .adaptive(minimum: itemSize), + .adaptive(minimum: 64), alignment: .top ), - count: columnCount + count: 4 ) + + private let factory: Factory @StateObject private var viewModel: AddUsersViewModel var onUserTap: (ChatUser) -> Void init( + factory: Factory = DefaultViewFactory.shared, loadedUserIds: [String], onUserTap: @escaping (ChatUser) -> Void ) { @@ -34,9 +34,11 @@ struct AddUsersView: View { wrappedValue: AddUsersViewModel(loadedUserIds: loadedUserIds) ) self.onUserTap = onUserTap + self.factory = factory } init( + factory: Factory = DefaultViewFactory.shared, viewModel: AddUsersViewModel, onUserTap: @escaping (ChatUser) -> Void ) { @@ -44,6 +46,7 @@ struct AddUsersView: View { wrappedValue: viewModel ) self.onUserTap = onUserTap + self.factory = factory } var body: some View { @@ -57,17 +60,20 @@ struct AddUsersView: View { onUserTap(user) } label: { VStack { - MessageAvatarView( - avatarURL: user.imageURL, - size: CGSize(width: Self.itemSize, height: Self.itemSize), - showOnlineIndicator: false + let itemSize: CGFloat = 64 + let userDisplayInfo = UserDisplayInfo( + id: user.id, + name: user.name ?? "", + imageURL: user.imageURL, + size: CGSize(width: itemSize, height: itemSize) ) + factory.makeMessageAvatarView(for: userDisplayInfo) Text(user.name ?? user.id) .multilineTextAlignment(.center) .lineLimit(2) .font(fonts.footnoteBold) - .frame(width: Self.itemSize) + .frame(width: itemSize) .foregroundColor(Color(colors.text)) } .padding(.all, 8) diff --git a/Sources/StreamChatSwiftUI/ChatChannel/ChannelInfo/ChatChannelInfoView.swift b/Sources/StreamChatSwiftUI/ChatChannel/ChannelInfo/ChatChannelInfoView.swift index a80699e5d..45d83c9e2 100644 --- a/Sources/StreamChatSwiftUI/ChatChannel/ChannelInfo/ChatChannelInfoView.swift +++ b/Sources/StreamChatSwiftUI/ChatChannel/ChannelInfo/ChatChannelInfoView.swift @@ -126,6 +126,7 @@ public struct ChatChannelInfoView: View, KeyboardReadable viewModel.addUsersShown = false } AddUsersView( + factory: factory, loadedUserIds: viewModel.participants.map(\.id), onUserTap: viewModel.addUserTapped(_:) ) From a04fb8faa96fc0604dae203e300eb09bc018e55b Mon Sep 17 00:00:00 2001 From: Martin Mitrevski Date: Thu, 20 Mar 2025 09:52:05 +0100 Subject: [PATCH 2/2] Updated CHANGELOG --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4d6474a0..76b308f56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). # Upcoming -### 🔄 Changed +### ✅ Added +- Add avatar customization in add users popup [#787](https://github.com/GetStream/stream-chat-swiftui/pull/787) # [4.74.0](https://github.com/GetStream/stream-chat-swiftui/releases/tag/4.74.0) _March 14, 2025_