Login required for access
In order to watch this lesson, you'll need to login to the website.
Show All Users for Creating Message
SwiftUI Firebase Real Time Chat
CreateNewMessageView.swift
class CreateNewMessageViewModel: ObservableObject {        @Published var users = [ChatUser]()    @Published var errorMessage = ""        init() {        fetchAllUsers()    }        private func fetchAllUsers() {        FirebaseManager.shared.firestore.collection("users")            .getDocuments { documentsSnapshot, error in                if let error = error {                    self.errorMessage = "Failed to fetch users: \(error)"                    print("Failed to fetch users: \(error)")                    return                }                                documentsSnapshot?.documents.forEach({ snapshot in                    let data = snapshot.data()                    let user = ChatUser(data: data)                    if user.uid != FirebaseManager.shared.auth.currentUser?.uid {                        self.users.append(.init(data: data))                    }                                    })            }    }}struct CreateNewMessageView: View {        @Environment(\.presentationMode) var presentationMode        @ObservedObject var vm = CreateNewMessageViewModel()        var body: some View {        NavigationView {            ScrollView {                Text(vm.errorMessage)                                ForEach(vm.users) { user in                    Button {                        presentationMode.wrappedValue.dismiss()                    } label: {                        HStack(spacing: 16) {                            WebImage(url: URL(string: user.profileImageUrl))                                .resizable()                                .scaledToFill()                                .frame(width: 50, height: 50)                                .clipped()                                .cornerRadius(50)                                .overlay(RoundedRectangle(cornerRadius: 50)                                            .stroke(Color(.label), lineWidth: 2)                                )                            Text(user.email)                                .foregroundColor(Color(.label))                            Spacer()                        }.padding(.horizontal)                    }                    Divider()                        .padding(.vertical, 8)                                                        }            }.navigationTitle("New Message")                .toolbar {                    ToolbarItemGroup(placement: .navigationBarLeading) {                        Button {                            presentationMode.wrappedValue.dismiss()                        } label: {                            Text("Cancel")                        }                    }                }        }    }}

Comments (0)
HELP & SUPPORT