Post

Replies

Boosts

Views

Activity

Reply to Can someone help me fix my xcode.
Here is the complete code: import SwiftUI import FirebaseAuth import FirebaseFirestore import FirebaseSharedSwift struct ProfileView: View { @State private var user: User? @State private var isEditing = false @State private var profilePicture: Image? = Image(systemName: "person.circle.fill") @State private var name: String = "" @State private var email: String = "" @State private var phoneNumber: String = "" @State private var bio: String = "" private var userId: String? { Auth.auth().currentUser?.uid } var body: some View { VStack { if let user = user { VStack { profilePicture? .resizable() .scaledToFill() .frame(width: 100, height: 100) .clipShape(Circle()) .overlay(Circle().stroke(Color.white, lineWidth: 4)) .shadow(radius: 10) .padding() Button(action: { }) { Text("Change Profile Picture") .foregroundColor(.blue) } .padding(.bottom) } Form { Section(header: Text("Profile Information")) { TextField("Name", text: $name) .disabled(!isEditing) TextField("Email", text: $email) .disabled(true) // Email is usually not editable TextField("Phone Number", text: $phoneNumber) .disabled(!isEditing) TextField("Bio", text: $bio) .disabled(!isEditing) } Section { if isEditing { Button("Save Changes") { saveChanges() } Button("Cancel") { isEditing.toggle() loadUserData() } } else { Button("Edit Profile") { isEditing.toggle() } } } } } else { ProgressView("Loading profile...") .progressViewStyle(CircularProgressViewStyle()) } } .onAppear { loadUserData() } } private func loadUserData() { guard let userId = userId else { return } let db = Firestore.firestore() db.collection("users").document(userId).getDocument { snapshot, error in if let error = error { print("Error fetching user data: \(error)") } else if let snapshot = snapshot, snapshot.exists { do { let fetchedUser = try snapshot.data(as: User.self) self.user = fetchedUser self.name = fetchedUser?.name ?? "" self.email = fetchedUser?.email ?? "" self.phoneNumber = fetchedUser?.phoneNumber ?? "" self.bio = fetchedUser?.bio ?? "" if let pictureURL = fetchedUser?.profilePictureURL { loadProfilePicture(from: pictureURL) } } catch { print("Error decoding user data: \(error)") } } } } private func loadProfilePicture(from url: String) { guard let url = URL(string: url) else { return } Task { do { let (data, _) = try await URLSession.shared.data(from: url) if let uiImage = UIImage(data: data) { profilePicture = Image(uiImage: uiImage) } } catch { print("Failed to load image from URL: \(error)") } } } private func saveChanges() { guard let userId = userId else { return } let db = Firestore.firestore() let userRef = db.collection("users").document(userId) let updatedUser = User( coder: <#NSCoder#>, id: userId, name: name, email: email, phoneNumber: phoneNumber, profilePictureURL: nil, bio: bio ) do { try userRef.setData(from: updatedUser) { error in if let error = error { print("Error saving user data: \(error)") } else { print("User data successfully saved!") } } } catch { print("Error serializing user data: \(error)") } } }
Nov ’24
Reply to Can someone help me fix this code.
Thank you I will try this.
Replies
Boosts
Views
Activity
Nov ’24
Reply to Can someone help me fix my xcode.
Can someone please give me a easy way to fix this code.
Replies
Boosts
Views
Activity
Nov ’24
Reply to Can someone help me fix my xcode.
Here is the other
Replies
Boosts
Views
Activity
Nov ’24
Reply to Can someone help me fix my xcode.
Here is one error.
Replies
Boosts
Views
Activity
Nov ’24
Reply to Can someone help me fix my xcode.
Here is the complete code: import SwiftUI import FirebaseAuth import FirebaseFirestore import FirebaseSharedSwift struct ProfileView: View { @State private var user: User? @State private var isEditing = false @State private var profilePicture: Image? = Image(systemName: "person.circle.fill") @State private var name: String = "" @State private var email: String = "" @State private var phoneNumber: String = "" @State private var bio: String = "" private var userId: String? { Auth.auth().currentUser?.uid } var body: some View { VStack { if let user = user { VStack { profilePicture? .resizable() .scaledToFill() .frame(width: 100, height: 100) .clipShape(Circle()) .overlay(Circle().stroke(Color.white, lineWidth: 4)) .shadow(radius: 10) .padding() Button(action: { }) { Text("Change Profile Picture") .foregroundColor(.blue) } .padding(.bottom) } Form { Section(header: Text("Profile Information")) { TextField("Name", text: $name) .disabled(!isEditing) TextField("Email", text: $email) .disabled(true) // Email is usually not editable TextField("Phone Number", text: $phoneNumber) .disabled(!isEditing) TextField("Bio", text: $bio) .disabled(!isEditing) } Section { if isEditing { Button("Save Changes") { saveChanges() } Button("Cancel") { isEditing.toggle() loadUserData() } } else { Button("Edit Profile") { isEditing.toggle() } } } } } else { ProgressView("Loading profile...") .progressViewStyle(CircularProgressViewStyle()) } } .onAppear { loadUserData() } } private func loadUserData() { guard let userId = userId else { return } let db = Firestore.firestore() db.collection("users").document(userId).getDocument { snapshot, error in if let error = error { print("Error fetching user data: \(error)") } else if let snapshot = snapshot, snapshot.exists { do { let fetchedUser = try snapshot.data(as: User.self) self.user = fetchedUser self.name = fetchedUser?.name ?? "" self.email = fetchedUser?.email ?? "" self.phoneNumber = fetchedUser?.phoneNumber ?? "" self.bio = fetchedUser?.bio ?? "" if let pictureURL = fetchedUser?.profilePictureURL { loadProfilePicture(from: pictureURL) } } catch { print("Error decoding user data: \(error)") } } } } private func loadProfilePicture(from url: String) { guard let url = URL(string: url) else { return } Task { do { let (data, _) = try await URLSession.shared.data(from: url) if let uiImage = UIImage(data: data) { profilePicture = Image(uiImage: uiImage) } } catch { print("Failed to load image from URL: \(error)") } } } private func saveChanges() { guard let userId = userId else { return } let db = Firestore.firestore() let userRef = db.collection("users").document(userId) let updatedUser = User( coder: <#NSCoder#>, id: userId, name: name, email: email, phoneNumber: phoneNumber, profilePictureURL: nil, bio: bio ) do { try userRef.setData(from: updatedUser) { error in if let error = error { print("Error saving user data: \(error)") } else { print("User data successfully saved!") } } } catch { print("Error serializing user data: \(error)") } } }
Replies
Boosts
Views
Activity
Nov ’24