fixing updating current user log in: but not completely done

This commit is contained in:
talksik
2021-12-19 17:38:33 -08:00
parent 98e43dfde0
commit 4dc7b422e9
4 changed files with 30 additions and 27 deletions
@@ -18,20 +18,18 @@ class FirestoreService {
private var db = Firestore.firestore() private var db = Firestore.firestore()
func getUser(userId: String) -> User? { func getUser(userId: String, completion: @escaping((_ user: User?) -> ())) {
let docRef = db.collection(Collection.users.rawValue).document(userId) let docRef = db.collection(Collection.users.rawValue).document(userId)
var user:User? = nil
docRef.getDocument { (document, error) in docRef.getDocument { (document, error) in
if let document = document, document.exists { if let document = document, document.exists {
user = try? document.data(as: User.self) let returnedUser = try? document.data(as: User.self)
completion(returnedUser)
} else { } else {
user = nil print("user doesn't exist")
completion(nil)
} }
} }
return user
} }
func createUser(user: User) { func createUser(user: User) {
+7 -7
View File
@@ -143,13 +143,13 @@ final class AuthSessionStore: ObservableObject, SessionStore {
} }
private func getAndSetEnvironmentUserDetails(userId: String) { private func getAndSetEnvironmentUserDetails(userId: String) {
let firestoreUser: User? = self.firestoreService.getUser(userId: userId) self.firestoreService.getUser(userId: userId) {firestoreUser in
// if we get a user back, then set this to our instance to allow UI to get published with all user details
// if we get a user back, then set this to our instance to allow UI to get published with all user details if firestoreUser != nil {
if firestoreUser != nil { // TODO: prolly useless since we never set up a background thread for the rest of this code before
// TODO: prolly useless since we never set up a background thread for the rest of this code before DispatchQueue.main.async {
DispatchQueue.main.async { self.user = firestoreUser
self.user = firestoreUser }
} }
} }
} }
@@ -14,7 +14,7 @@ struct OnboardingTrioView: View {
var body: some View { var body: some View {
VStack { VStack {
TabView { TabView {
OnboardingTemplateView(imgName: "undraw_through_the_park_lxnl", mainLeadingActText: "Be", mainHighlightedActText: "yourself", mainTrailingActText: "again.", subActText: "No more consuming endless feeds, media, fomo, anxiety...focus on you and be more present.") OnboardingTemplateView(imgName: "undraw_through_the_park_lxnl", mainLeadingActText: "Be", mainHighlightedActText: "yourself", mainTrailingActText: "again.", subActText: "No more endless feeds, media, fomo, anxiety...focus on you and be more present.")
OnboardingTemplateView(imgName: "undraw_connection_b-38-q", mainLeadingActText: "Be picky about your ", mainHighlightedActText: "inner circle.", mainTrailingActText: "", subActText: "You are who you hang out with. We kept things minimal because less is more...and we care.") OnboardingTemplateView(imgName: "undraw_connection_b-38-q", mainLeadingActText: "Be picky about your ", mainHighlightedActText: "inner circle.", mainTrailingActText: "", subActText: "You are who you hang out with. We kept things minimal because less is more...and we care.")
@@ -24,19 +24,24 @@ final class PhoneVerificationViewModel : ObservableObject {
// TODO: set all in a transaction or batch write // TODO: set all in a transaction or batch write
// get user - 1 result set cost // get user - 1 result set cost
var user = firestoreService.getUser(userId: userId) self.firestoreService.getUser(userId: userId) {[weak self] resultingUser in
print("user that was received from get: \(user?.id)") print("user that was received from get: \(resultingUser?.id)")
if user == nil {// if empty, create user - 1 result set cost..prolly higher cost
print("creating new user with id: \(userId)")
let newUser = User(id: userId, phoneNumber: phoneNumber)
print("verify the id stayed the same: \(newUser.id)")
firestoreService.createUser(user: newUser)
} else { // if not, change last logged in value
// assign to nil so that server can fill it in
user!.lastLoggedInTimestamp = nil
let _ = firestoreService.updateUser(user: user!) if resultingUser == nil {// if empty, create user - 1 result set cost..prolly higher cost
print("creating new user with id: \(userId)")
let newUser = User(id: userId, phoneNumber: phoneNumber)
print("verify the id stayed the same: \(newUser.id)")
self?.firestoreService.createUser(user: newUser)
} else { // if not, change last logged in value
var user = resultingUser
// assign to nil so that server can fill it in
user!.lastLoggedInTimestamp = nil
let res = self?.firestoreService.updateUser(user: user!)
print(res)
}
} }
} }
} }