diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate
index d2e5d09..31b14f8 100644
Binary files a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate and b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
index 09e2064..23f6fdc 100644
--- a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+++ b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -10,11 +10,11 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/ListingPreviewViewController.swift"
- timestampString = "501292645.293697"
+ timestampString = "501865709.047213"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "617"
- endingLineNumber = "617"
+ startingLineNumber = "629"
+ endingLineNumber = "629"
landmarkName = "publishItem(_:)"
landmarkType = "5">
@@ -186,7 +186,7 @@
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/CategoriesTableViewController.swift"
- timestampString = "501823413.391987"
+ timestampString = "501881724.556734"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "570"
@@ -201,7 +201,7 @@
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/CategoriesTableViewController.swift"
- timestampString = "501823413.392097"
+ timestampString = "501881724.556878"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "572"
@@ -744,7 +744,7 @@
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/SettingsViewController.swift"
- timestampString = "501823413.408374"
+ timestampString = "501881724.576913"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "194"
@@ -759,7 +759,7 @@
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/SettingsViewController.swift"
- timestampString = "501823413.408515"
+ timestampString = "501881724.577081"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "197"
@@ -788,15 +788,15 @@
@@ -840,11 +840,138 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/ItemImagePickerViewController.swift"
- timestampString = "501824288.668123"
+ timestampString = "501879828.267358"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "167"
- endingLineNumber = "167"
+ startingLineNumber = "537"
+ endingLineNumber = "537"
+ landmarkName = "cancelNewListing(_:)"
+ landmarkType = "5">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Vendoo/FirebaseManager.swift b/Vendoo/FirebaseManager.swift
index c217f7d..b1dbc37 100644
--- a/Vendoo/FirebaseManager.swift
+++ b/Vendoo/FirebaseManager.swift
@@ -2,6 +2,7 @@
// 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.
//
@@ -19,6 +20,7 @@ class FirebaseManager: NSObject {
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!
@@ -26,18 +28,22 @@ class FirebaseManager: NSObject {
super.init()
indicator.color = UIColor.blueColor()
//check if user has been created
- 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)
+ 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)
+ })
+
+ }else{
+ dispatch_group_leave(self.firGroup)
+ }
+ })
}
}
diff --git a/Vendoo/HomeViewController.swift b/Vendoo/HomeViewController.swift
index ac3be80..d1ff6b7 100644
--- a/Vendoo/HomeViewController.swift
+++ b/Vendoo/HomeViewController.swift
@@ -27,7 +27,7 @@ class HomeViewController: UITabBarController {
ServiceNotificationManager.delegate = self
self.notificationsManager.setManagers(fbGraphManager, fireManager: firebaseManager, ebayManager: ebayGraphManager, etsyManager: etsyManager)
// Do any additional setup after loading the view.
- dispatch_async(dispatch_get_main_queue(), {
+ dispatch_group_notify(self.firebaseManager.firGroup, dispatch_get_main_queue(), {
//get all listing information for current user
self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)").observeSingleEventOfType( .Value, withBlock: {
diff --git a/Vendoo/ItemImagePickerViewController.swift b/Vendoo/ItemImagePickerViewController.swift
index 0a36a0a..4f2678e 100644
--- a/Vendoo/ItemImagePickerViewController.swift
+++ b/Vendoo/ItemImagePickerViewController.swift
@@ -134,43 +134,60 @@ extension ItemImagePickerViewController {
print(self.itemDescription.text!)
print(self.possibleItemImageMain.image)
print(self.itemPrice.text!)
+ if (
+ self.itemName.text! == "" ||
+ Int(self.itemQuantity.text!) == nil ||
+ Int(self.itemQuantity.text!) < 1 ||
+ self.itemPrice.text! == "" ||
+ Double(self.itemPrice.text!) == nil ||
+ Double(self.itemPrice.text!) < 0.30 ||
+ self.itemDescription.text! == "Description"
+ ){
- var dict: Dictionary = ["title":self.itemName.text!, "description":self.itemDescription.text!, "price":self.itemPrice.text!, "quantity":self.itemQuantity.text!]
- var counter = 0
- var images: [UIImageView] = []
- for bool in self.itemImagesSelections {
- if !bool {
- break
- }
- switch counter {
- case 1:
- images.append(self.possibleItemImage2)
- break
- case 2:
- images.append(self.possibleItemImage3)
- break
- case 3:
- images.append(self.possibleItemImage4)
- break
- case 4:
- images.append(self.possibleItemImage5)
- break
- default:
- images.append(self.possibleItemImageMain)
- }
- counter += 1
- }
-
- dict["pictures"] = images
- (segue.destinationViewController as! CategoriesTableViewController).setListingDictionary(dict)
-
- if(self.isEditing) {
- (segue.destinationViewController as! CategoriesTableViewController).setManagers((self.currentInformation["fbManager"] as? FacebookGraphAPIManager)!, fireManager: (self.currentInformation["firebaseManager"] as? FirebaseManager)!, ebayManager: (self.currentInformation["ebayManager"] as? EbayWebServiceManager)!, etsyManager: (self.currentInformation["etsyManager"] as? EtsyRESTAPIManager)!)
+ let alert = UIAlertController(title: "Required Information Missing", message: "To proceed with your listing, at least one image must be provided. Along with all provided fields including:\n Title\nDescription\nQuantity (must be greater than 0)\nPrice (must be greater than $0.30).", preferredStyle: .Alert)
+ alert.addAction(UIAlertAction(title: "OK", style: .Default, handler:{(action: UIAlertAction!) in alert.dismissViewControllerAnimated(true, completion: nil)}))
- }else {
- (segue.destinationViewController as! CategoriesTableViewController).setManagers(((self.tabBarController as? HomeViewController)?.fbGraphManager)!,
- fireManager: ((self.tabBarController as? HomeViewController)?.firebaseManager)!, ebayManager: ((self.tabBarController as? HomeViewController)?.ebayGraphManager)!,
- etsyManager: ((self.tabBarController as? HomeViewController)?.etsyManager)!)
+ self.presentViewController(alert, animated: true, completion: nil)
+
+ }else{
+ var dict: Dictionary = ["title":self.itemName.text!, "description":self.itemDescription.text!, "price":self.itemPrice.text!, "quantity":self.itemQuantity.text!]
+ var counter = 0
+ var images: [UIImageView] = []
+ for bool in self.itemImagesSelections {
+ if !bool {
+ break
+ }
+ switch counter {
+ case 1:
+ images.append(self.possibleItemImage2)
+ break
+ case 2:
+ images.append(self.possibleItemImage3)
+ break
+ case 3:
+ images.append(self.possibleItemImage4)
+ break
+ case 4:
+ images.append(self.possibleItemImage5)
+ break
+ default:
+ images.append(self.possibleItemImageMain)
+ }
+ counter += 1
+ }
+
+ dict["pictures"] = images
+ (segue.destinationViewController as! CategoriesTableViewController).setListingDictionary(dict)
+
+ if(self.isEditing) {
+ (segue.destinationViewController as! CategoriesTableViewController).setManagers((self.currentInformation["fbManager"] as? FacebookGraphAPIManager)!, fireManager: (self.currentInformation["firebaseManager"] as? FirebaseManager)!, ebayManager: (self.currentInformation["ebayManager"] as? EbayWebServiceManager)!, etsyManager: (self.currentInformation["etsyManager"] as? EtsyRESTAPIManager)!)
+
+ }else {
+ (segue.destinationViewController as! CategoriesTableViewController).setManagers(((self.tabBarController as? HomeViewController)?.fbGraphManager)!,
+ fireManager: ((self.tabBarController as? HomeViewController)?.firebaseManager)!, ebayManager: ((self.tabBarController as? HomeViewController)?.ebayGraphManager)!,
+ etsyManager: ((self.tabBarController as? HomeViewController)?.etsyManager)!)
+ }
+
}
}
diff --git a/Vendoo/ListingPreviewViewController.swift b/Vendoo/ListingPreviewViewController.swift
index 6eef20b..ab47a80 100644
--- a/Vendoo/ListingPreviewViewController.swift
+++ b/Vendoo/ListingPreviewViewController.swift
@@ -68,10 +68,22 @@ class ListingPreviewViewController: UIViewController {
/*if(!self.networksDictionary["areNetworksChosen"]!) {
self.networks.hidden = true
}*/
- /*else if (self.itemViewState == "Editable") {
+ else if (self.itemViewState == "Editible") {
//self.cancel_backBtn.titleLabel?.text = "Back"
-
- }*/
+ if(
+ self.itemTitle.text == "" ||
+ self.itemDescription.text == "" ||
+ self.itemPrice.text == "" ||
+ self.itemCategory.text == "" ||
+ self.itemQuantity == nil ||
+ self.itemPictureMain.image == nil ||
+ self.networks.numberOfItemsInSection(0) == 0
+ ){
+
+ self.publishBtn.hidden = true
+ self.publishBtn.enabled = false
+ }
+ }
// Do any additional setup after loading the view.
// Initialization code
@@ -233,7 +245,7 @@ extension ListingPreviewViewController {
let vc = storyboard.instantiateViewControllerWithIdentifier("Reveal View Controller") as! SWRevealViewController
self.presentViewController(vc, animated: true, completion: nil)
}
- else if self.itemViewState == "Editable" || self.itemViewState == "NonEditable"{
+ else if self.itemViewState == "Editible" || self.itemViewState == "NonEditable"{
self.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
}
diff --git a/Vendoo/NetworksTableViewController.swift b/Vendoo/NetworksTableViewController.swift
index 21e708e..ac55bd2 100644
--- a/Vendoo/NetworksTableViewController.swift
+++ b/Vendoo/NetworksTableViewController.swift
@@ -35,6 +35,7 @@ class NetworksTableViewController: UIViewController {
private var ebayManager: EbayWebServiceManager! = EbayWebServiceManager()
private var shouldShowDictionary: Dictionary = ["ebay":false, "amazon":false,"etsy":false,"facebook":false]
private var networkOrderSelection: [String] = []
+ private var networkCount = 0
@@ -81,6 +82,7 @@ class NetworksTableViewController: UIViewController {
var string = ""
for (market, visibility) in self.shouldShowDictionary {
if visibility {
+ self.networkCount += 1
self.shouldShowDictionary[market] = !self.shouldShowDictionary[market]!
string = market
self.networkOrderSelection.append(market)
@@ -126,9 +128,31 @@ extension NetworksTableViewController {
// Pass the selected object to the new view controller.
if(segue.identifier == "ItemPreviewSegue"){
+ if(networkCount > 0){
+ var count = 0;
+ for (_,v) in self.networksDictionary{
+ if v {
+ count += 1
+ }
+ }
+
+ if(count > 0){
+ (segue.destinationViewController as! ListingPreviewViewController).setDictionary(self.networksDictionary, itemdictionary: self.itemListingDictionary)
+ (segue.destinationViewController as! ListingPreviewViewController).setManagers(self.graphManager, fireManager: self.firManager, ebayManager: self.ebayManager, etsyManager: self.etsyManager)
+ }else{
+ let alert = UIAlertController(title: "No Networks Selected", message: "You have not selected any networks to publish on. At least 1 network must be selected to continue.", preferredStyle: .Alert)
+ alert.addAction(UIAlertAction(title: "OK", style: .Default, handler:{(action: UIAlertAction!) in alert.dismissViewControllerAnimated(true, completion: nil)}))
+
+ self.presentViewController(alert, animated: true, completion: nil)
+ }
+
+ }else{
+ let alert = UIAlertController(title: "No Networks Authorized", message: "You currently have no authorized networks to post on. You will not be able to publish this listing until at least 1 network has been authorized and selected for publishing.", preferredStyle: .Alert)
+ alert.addAction(UIAlertAction(title: "OK", style: .Default, handler:{(action: UIAlertAction!) in alert.dismissViewControllerAnimated(true, completion: nil)}))
+
+ self.presentViewController(alert, animated: true, completion: nil)
+ }
- (segue.destinationViewController as! ListingPreviewViewController).setDictionary(self.networksDictionary, itemdictionary: self.itemListingDictionary)
- (segue.destinationViewController as! ListingPreviewViewController).setManagers(self.graphManager, fireManager: self.firManager, ebayManager: self.ebayManager, etsyManager: self.etsyManager)
}
if(segue.identifier == "EbaySettingsSegue") {
diff --git a/Vendoo/SignUpViewController.swift b/Vendoo/SignUpViewController.swift
index 3de1cc9..1d58474 100644
--- a/Vendoo/SignUpViewController.swift
+++ b/Vendoo/SignUpViewController.swift
@@ -61,13 +61,11 @@ extension SignUpViewController {
return
}
else{
-
//save user account
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "signedIn")
NSUserDefaults.standardUserDefaults().setObject(self.email.text, forKey: "email")
NSUserDefaults.standardUserDefaults().setObject(self.name.text, forKey: "name")
-
//save user credentials in Keychain
do{
try Locksmith.saveData(["pass": self.password.text!], forUserAccount: self.email.text!, inService: "vendoo")