@@ -6,44 +6,47 @@ import StreamChat
66import SwiftUI
77
88/// View for the add users popup.
9- struct AddUsersView : View {
9+ struct AddUsersView < Factory : ViewFactory > : View {
1010
1111 @Injected ( \. fonts) private var fonts
1212 @Injected ( \. colors) private var colors
1313
14- private static let columnCount = 4
15- private static let itemSize : CGFloat = 64
16-
1714 private let columns = Array (
1815 repeating:
1916 GridItem (
20- . adaptive( minimum: itemSize ) ,
17+ . adaptive( minimum: 64 ) ,
2118 alignment: . top
2219 ) ,
23- count: columnCount
20+ count: 4
2421 )
22+
23+ private let factory : Factory
2524
2625 @StateObject private var viewModel : AddUsersViewModel
2726 var onUserTap : ( ChatUser ) -> Void
2827
2928 init (
29+ factory: Factory = DefaultViewFactory . shared,
3030 loadedUserIds: [ String ] ,
3131 onUserTap: @escaping ( ChatUser ) -> Void
3232 ) {
3333 _viewModel = StateObject (
3434 wrappedValue: AddUsersViewModel ( loadedUserIds: loadedUserIds)
3535 )
3636 self . onUserTap = onUserTap
37+ self . factory = factory
3738 }
3839
3940 init (
41+ factory: Factory = DefaultViewFactory . shared,
4042 viewModel: AddUsersViewModel ,
4143 onUserTap: @escaping ( ChatUser ) -> Void
4244 ) {
4345 _viewModel = StateObject (
4446 wrappedValue: viewModel
4547 )
4648 self . onUserTap = onUserTap
49+ self . factory = factory
4750 }
4851
4952 var body : some View {
@@ -57,17 +60,20 @@ struct AddUsersView: View {
5760 onUserTap ( user)
5861 } label: {
5962 VStack {
60- MessageAvatarView (
61- avatarURL: user. imageURL,
62- size: CGSize ( width: Self . itemSize, height: Self . itemSize) ,
63- showOnlineIndicator: false
63+ let itemSize : CGFloat = 64
64+ let userDisplayInfo = UserDisplayInfo (
65+ id: user. id,
66+ name: user. name ?? " " ,
67+ imageURL: user. imageURL,
68+ size: CGSize ( width: itemSize, height: itemSize)
6469 )
70+ factory. makeMessageAvatarView ( for: userDisplayInfo)
6571
6672 Text ( user. name ?? user. id)
6773 . multilineTextAlignment ( . center)
6874 . lineLimit ( 2 )
6975 . font ( fonts. footnoteBold)
70- . frame ( width: Self . itemSize)
76+ . frame ( width: itemSize)
7177 . foregroundColor ( Color ( colors. text) )
7278 }
7379 . padding ( . all, 8 )
0 commit comments