vendoo_v1.0/Vendoo/FirebaseManager.swift
Okechi Onyeje 9f85f3fdc3 Bug has been resolved
was due to data race from multiple calls to firbase when a new user is created, had to resolve by making call order sequential
2016-11-26 11:00:49 -05:00

57 lines
1.9 KiB
Swift

//
// FirebaseService.swift
// Vendoo
//
// This class is responsible for initializing a new user, as well as managing web request to both firebase database and data storage
// Created by Okechi Onyeje on 6/2/16.
// Copyright © 2016 Okechi Onyeje. All rights reserved.
//
import Foundation
import Firebase
import Locksmith
import FirebaseStorage
import TYMActivityIndicatorView
class FirebaseManager: NSObject {
let ref = FIRDatabase.database().reference()
let user_email = ((NSUserDefaults.standardUserDefaults().objectForKey("email") as? String)!).stringByReplacingOccurrencesOfString(".", withString: "_")
let storage = FIRStorage.storage()
var indicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
var firGroup = dispatch_group_create()
//let key: String!
override init(){
super.init()
indicator.color = UIColor.blueColor()
//check if user has been created
dispatch_group_enter(self.firGroup)
self.ref.child("Users").observeSingleEventOfType(.Value, withBlock: { snapshot in
// do some stuff once
if(!snapshot.hasChild(self.user_email)){
let user = ["name": (NSUserDefaults.standardUserDefaults().objectForKey("name") as? String)!, "user_Listings": "", "listing_Keys": "", "favorite_listings_keys": ""]
self.ref.child("Users").child(self.user_email).setValue(user, withCompletionBlock: {
(error, reference) -> Void in
dispatch_group_leave(self.firGroup)
})
}
})
}
}
//string adjustment functions
extension FirebaseManager {
func adjustUserEmail(aString: String) -> String {
return aString.stringByReplacingOccurrencesOfString(".", withString: "_")
}
}