diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate
index c9a1b27..9018e3c 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 4c822ea..9ecd442 100644
--- a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+++ b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -6,16 +6,16 @@
@@ -25,358 +25,43 @@
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
- filePath = "Vendoo/ListingPreviewViewController.swift"
- timestampString = "493861794.122107"
+ filePath = "Vendoo/ServiceNotificationManager.swift"
+ timestampString = "494388607.180284"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "98"
- endingLineNumber = "98"
- landmarkName = "prepareForSegue(_:sender:)"
- landmarkType = "5">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ startingLineNumber = "71"
+ endingLineNumber = "71"
+ offsetFromSymbolStart = "4017">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -388,61 +73,13 @@
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
- filePath = "Vendoo/ListingPreviewViewController.swift"
- timestampString = "493930954.132313"
+ filePath = "Vendoo/ServiceNotificationManager.swift"
+ timestampString = "494388796.589441"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "507"
- endingLineNumber = "507"
- landmarkName = "publishItem(_:)"
- landmarkType = "5">
-
-
-
-
-
-
-
-
-
-
-
-
@@ -453,133 +90,11 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/EbayWebServiceManager.swift"
- timestampString = "494033422.080596"
+ timestampString = "494685275.012942"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "576"
- endingLineNumber = "576">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ startingLineNumber = "573"
+ endingLineNumber = "573">
-
-
-
-
+ startingLineNumber = "571"
+ endingLineNumber = "571">
@@ -636,29 +133,13 @@
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
- filePath = "Vendoo/SignUpViewController.swift"
- timestampString = "494088185.778354"
+ filePath = "Vendoo/NetworksTableViewController.swift"
+ timestampString = "494630189.759007"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "46"
- endingLineNumber = "46"
- landmarkName = "signUpUser(_:)"
- landmarkType = "5">
-
-
-
-
@@ -668,29 +149,13 @@
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
- filePath = "Vendoo/SignUpViewController.swift"
- timestampString = "494088196.172254"
+ filePath = "Vendoo/CategoriesTableViewController.swift"
+ timestampString = "494631326.508326"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "89"
- endingLineNumber = "89"
- landmarkName = "signUpUser(_:)"
- landmarkType = "5">
-
-
-
-
@@ -700,44 +165,60 @@
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
- filePath = "Vendoo/MenuPanelViewController.swift"
- timestampString = "494210317.414309"
+ filePath = "Vendoo/CategoriesTableViewController.swift"
+ timestampString = "494631326.508326"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "137"
- endingLineNumber = "137"
- landmarkName = "logoutUser(_:)"
+ startingLineNumber = "695"
+ endingLineNumber = "695"
+ landmarkName = "tableView(_:didSelectRowAtIndexPath:)"
+ landmarkType = "5">
+
+
+
+
+ startingLineNumber = "788"
+ endingLineNumber = "788"
+ offsetFromSymbolStart = "1462">
+ startingLineNumber = "325"
+ endingLineNumber = "325"
+ offsetFromSymbolStart = "44">
@@ -748,13 +229,141 @@
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
- filePath = "Vendoo/MenuPanelViewController.swift"
- timestampString = "494210917.083247"
+ filePath = "Vendoo/NetworksTableViewController.swift"
+ timestampString = "494636143.418834"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "161"
- endingLineNumber = "161"
- landmarkName = "logoutUser(_:)"
+ startingLineNumber = "791"
+ endingLineNumber = "791"
+ landmarkName = "toggleAuth(_:)"
+ landmarkType = "5">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Vendoo/.DS_Store b/Vendoo/.DS_Store
index 9782e70..661de9b 100644
Binary files a/Vendoo/.DS_Store and b/Vendoo/.DS_Store differ
diff --git a/Vendoo/CategoriesTableViewController.swift b/Vendoo/CategoriesTableViewController.swift
index c8e14c9..14f1738 100644
--- a/Vendoo/CategoriesTableViewController.swift
+++ b/Vendoo/CategoriesTableViewController.swift
@@ -17,7 +17,10 @@ class CategoriesTableViewController: UIViewController, UITableViewDelegate, UITa
private var ebayManager: EbayWebServiceManager! = EbayWebServiceManager()
private var selectedCategory: String!
private var selectedSub: String!
-
+ private var potentialEbay = false
+ private var potentialEtsy = false
+ private var potentialAmazon = false
+
private var categories = ["Accessories",
"Antiques",
"Art",
@@ -124,9 +127,16 @@ class CategoriesTableViewController: UIViewController, UITableViewDelegate, UITa
// Configure the cell...
+
dispatch_async(dispatch_get_main_queue(), {
cell.categoryName.text = self.categories[indexPath.row]
+ cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))?.hidden = true //facebook
+ cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 2, inSection: 0))?.hidden = true //etsy
+ cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 1, inSection: 0))?.hidden = true //amazon
+ cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))?.hidden = true //ebay
+ //leaving this in for category debugging purposes
+ /*
switch (cell.categoryName.text!) {
case ("Accessories") :
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))?.hidden = false //facebook
@@ -514,7 +524,7 @@ class CategoriesTableViewController: UIViewController, UITableViewDelegate, UITa
break
default:
break
- }
+ }*/
/*//ebay
if(true){
@@ -569,22 +579,123 @@ class CategoriesTableViewController: UIViewController, UITableViewDelegate, UITa
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
- self.selectedCategory = self.categories[indexPath.row]
+
+ switch self.categories[indexPath.row] {
+ case "Antiques":
+ self.selectedCategory = "Antiques"
+ break
+ case "Art":
+ self.selectedCategory = "Art"
+ self.potentialEtsy = true
+ break
+ case "Baby":
+ self.selectedCategory = "Baby"
+ break
+ case "Bath, Beauty & Health":
+ self.selectedCategory = "Health and Beauty"
+ self.potentialEtsy = true
+ break
+ case "Books":
+ self.selectedCategory = "Books"
+ self.potentialEtsy = true
+ break
+ case "Business & Industrial":
+ self.selectedCategory = "Business and Industrial"
+ break
+ case "Cameras & Photo":
+ self.selectedCategory = "Cameras and Photo"
+ break
+ case "Cell Phones & Accessories":
+ self.selectedCategory = "Cell Phones and Accessories"
+ break
+ case "Clothing & Shoes":
+ self.selectedCategory = "Clothing, Shoes and Accessories"
+ self.potentialEtsy = true
+ break
+ case "Coins & Paper Money":
+ self.selectedCategory = "Coins and Paper Money"
+ break
+ case "Collectibles":
+ self.selectedCategory = "Collectibles"
+ break
+ case "Computers/Tablets and Networking":
+ self.selectedCategory = "Computers/Tablets and Networking"
+ break
+ case "Consumer Electronics":
+ self.selectedCategory = "Consumer Electronics"
+ break
+ case "Crafts":
+ self.selectedCategory = "Crafts"
+ break
+ case "Dolls & Miniatures":
+ self.selectedCategory = "Dolls and Bears"
+ self.potentialEtsy = true
+ break
+ case "DVDs & Movies":
+ self.selectedCategory = "DVDs & Movies"
+ break
+ case "Entertainment Memorabilia":
+ self.selectedCategory = "Entertainment Memorabilia"
+ break
+ case "Everything Else":
+ self.selectedCategory = "Everything Else"
+ self.potentialEtsy = true
+ break
+ case "Gift Cards & Coupons":
+ self.selectedCategory = "Gift Cards and Coupons"
+ break
+ case "Home/Houseware & Garden":
+ self.selectedCategory = "Home and Garden"
+ self.potentialEtsy = true
+ break
+ case "Jewelry & Watches":
+ self.selectedCategory = "Jewelry and Watches"
+ self.potentialEtsy = true
+ break
+ case "Musical Instruments & Gear":
+ self.selectedCategory = "Musical Instruments and Gear"
+ break
+ case "Pet Supplies":
+ self.selectedCategory = "Pet Supplies"
+ break
+ case "Pottery & Glass":
+ self.selectedCategory = "Pottery and Glass"
+ break
+ case "Real Estate":
+ self.selectedCategory = "Real Estate"
+ break
+ case "Specialty Services":
+ self.selectedCategory = "Specialty Services"
+ break
+ case "Sporting Goods":
+ self.selectedCategory = "Sporting Goods"
+ break
+ case "Sports Memorabilia & Fan Shop":
+ self.selectedCategory = "Sports Mem, Cards and Fan Shop"
+ break
+ case "Tickets & Experiences":
+ self.selectedCategory = "Tickets and Experiences"
+ break
+ case "Toys & Hobbies":
+ self.selectedCategory = "Toys and Hobbies"
+ self.potentialEtsy = true
+ break
+ case "Travel":
+ self.selectedCategory = "Travel"
+ break
+ case "Video Games & Consoles":
+ self.selectedCategory = "Video Games and Consoles"
+ break
+ default:
+ self.selectedCategory = self.categories[indexPath.row]
+ self.potentialEtsy = true
+ break
+ }
+
let cell: CategoryCell! = tableView.cellForRowAtIndexPath(indexPath) as! CategoryCell//tableView.dequeueReusableCellWithIdentifier("CategoryCell", forIndexPath: indexPath) as? CategoryCell
- if(cell.shouldAskAboutLeafCategories){
- var alert = UIAlertController(title: "Explore Subcategories", message: "Would you like to see the subcategories for \(self.selectedCategory). NOTE: Only Required If Posting to Ebay", preferredStyle: .Alert)
-
- alert.addAction(UIAlertAction(title: "Yes", style: .Default, handler: {(action: UIAlertAction!) in
- self.navigateCategories()
- }))
-
- alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: {(action: UIAlertAction!) in
- }))
- alert.addAction(UIAlertAction(title: "No", style: .Default, handler: {(action: UIAlertAction!) in
- self.performSegueWithIdentifier("NetworkSelectionSegue", sender: self)
- }))
- self.presentViewController(alert, animated: true, completion: nil)
-
+ if(self.ebayManager.isAuthorized && cell.shouldAskAboutLeafCategories){
+ self.potentialEbay = true
+ self.navigateCategories()
}
else {
self.performSegueWithIdentifier("NetworkSelectionSegue", sender: self)
@@ -642,6 +753,20 @@ class CategoriesTableViewController: UIViewController, UITableViewDelegate, UITa
fireManager: self.firManager, ebayManager: self.ebayManager, etsyManager: self.etsyManager )
(segue.destinationViewController as! NetworksTableViewController).setNetworkSelectFunctionality(true)
+
+ //check what networks to load in network selection view
+ if self.graphManager.isAuthorized {
+ (segue.destinationViewController as! NetworksTableViewController).toggleMarketPlaceVisibitlity("facebook")
+ }
+ if self.potentialEbay && self.ebayManager.isAuthorized {
+ (segue.destinationViewController as! NetworksTableViewController).toggleMarketPlaceVisibitlity("ebay")
+ }
+ if self.potentialEtsy && self.etsyManager.isAuthorized {
+ (segue.destinationViewController as! NetworksTableViewController).toggleMarketPlaceVisibitlity("etsy")
+ }
+ if self.potentialAmazon {
+ (segue.destinationViewController as! NetworksTableViewController).toggleMarketPlaceVisibitlity("amazon")
+ }
//print(self.categoryPicker.selectedRowInComponent(0))
}
}
diff --git a/Vendoo/CategoryPopUpController.swift b/Vendoo/CategoryPopUpController.swift
index 8807fc1..8e85e20 100644
--- a/Vendoo/CategoryPopUpController.swift
+++ b/Vendoo/CategoryPopUpController.swift
@@ -59,6 +59,7 @@ class CategoryPopUpController: UIViewController {
}
}
+ self.categoryList = Dictionary()
self.ebayManager.getSubCategories(selectedCategory, detailLevel: self.parentCategory.count + 1, catCode: catCode, onCompletion: {
(dict, error) -> Void in
var index = 0
diff --git a/Vendoo/EbayWebServiceManager.swift b/Vendoo/EbayWebServiceManager.swift
index 59d8111..f68ac25 100644
--- a/Vendoo/EbayWebServiceManager.swift
+++ b/Vendoo/EbayWebServiceManager.swift
@@ -40,6 +40,7 @@ class EbayWebServiceManager: NSObject {
private var completion: ServiceResponse!
private var isGettingSubCategories: Bool = false
private var isRevisingListing: Bool = false
+ private var requestGroup: dispatch_group_t = dispatch_group_create()
//---------------------------------------------//
@@ -123,7 +124,7 @@ extension EbayWebServiceManager {
}
}
- func authorizeApp(){
+ func authorizeApp(onComplete: ServiceResponse){
let soapMessage = "" +
"" +
@@ -133,18 +134,21 @@ extension EbayWebServiceManager {
let url = NSURL(string: self.baseURL)
let theRequest = NSMutableURLRequest(URL: url!)
theRequest.addValue("GetSessionID", forHTTPHeaderField: "X-EBAY-API-CALL-NAME")
-
+ self.completion = onComplete
self.requestMaker(soapMessage, theRequest: theRequest)
}
func deauthorizeApp(){
- let soapMessage = "" +
+ //@TODO: Add an alert to let user know if their account has not been deauthorized and keep them logged in.
+ var soapMessage = "" +
"" +
"" +
- "\(self.xmlResponseDictionary["eBayAuthToken"])" +
- ""
+ "\(self.xmlResponseDictionary["eBayAuthToken"]!)" +
+ ""
+ soapMessage = soapMessage + "en_US" +
+ "High"
let url = NSURL(string: self.baseURL)
let theRequest = NSMutableURLRequest(URL: url!)
@@ -303,7 +307,7 @@ extension EbayWebServiceManager {
let url = NSURL(string: self.baseURL)
let theRequest = NSMutableURLRequest(URL: url!)
theRequest.addValue("FetchToken", forHTTPHeaderField: "X-EBAY-API-CALL-NAME")
-
+ //dispatch_group_enter(self.requestGroup)
self.requestMaker(soapMessage, theRequest: theRequest)
}
@@ -404,6 +408,7 @@ extension EbayWebServiceManager: NSXMLParserDelegate {
print("account credentials saved")
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "ebayAuthorized")
self.isAuthorized = true
+ //self.completion(nil, nil)
//Test authentication
let soapmessage = "" +
@@ -465,7 +470,7 @@ extension EbayWebServiceManager: NSXMLParserDelegate {
let url = NSURL(string: self.baseURL)
let theRequest = NSMutableURLRequest(URL: url!)
theRequest.addValue("GetCategories", forHTTPHeaderField: "X-EBAY-API-CALL-NAME")
-
+ self.completion(nil, nil)
self.requestMaker(soapmessage, theRequest: theRequest)
break
/*
diff --git a/Vendoo/EtsyRESTAPIManager.swift b/Vendoo/EtsyRESTAPIManager.swift
index d24a554..b464c31 100644
--- a/Vendoo/EtsyRESTAPIManager.swift
+++ b/Vendoo/EtsyRESTAPIManager.swift
@@ -52,8 +52,6 @@ class EtsyRESTAPIManager: NSObject {
"accessTokenUrl": "https://openapi.etsy.com/v2/oauth/access_token?",
"responseType": "token"])
-
- //FIXME: something is wrong when here when logging back in with a diff user
if(self.isAuthorized){
let dictionary = Locksmith.loadDataForUserAccount(self.userEmail, inService: "vendoo_oauth_etsy")
let oauthDictionary = dictionary?["etsy_oauth"] as? Dictionary
diff --git a/Vendoo/FirebaseManager.swift b/Vendoo/FirebaseManager.swift
index 82fdc63..c217f7d 100644
--- a/Vendoo/FirebaseManager.swift
+++ b/Vendoo/FirebaseManager.swift
@@ -18,14 +18,13 @@ class FirebaseManager: NSObject {
let ref = FIRDatabase.database().reference()
let user_email = ((NSUserDefaults.standardUserDefaults().objectForKey("email") as? String)!).stringByReplacingOccurrencesOfString(".", withString: "_")
let storage = FIRStorage.storage()
- let indicator = TYMActivityIndicatorView.init(activityIndicatorStyle: (TYMActivityIndicatorViewStyle.Normal))
+ var indicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
+
//let key: String!
override init(){
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
diff --git a/Vendoo/HomeViewController.swift b/Vendoo/HomeViewController.swift
index 9c3e36f..05d5b51 100644
--- a/Vendoo/HomeViewController.swift
+++ b/Vendoo/HomeViewController.swift
@@ -111,8 +111,10 @@ class HomeViewController: UITabBarController {
})
+ }else {
+ NSNotificationCenter.defaultCenter().postNotificationName("finished_fetching_listings", object: nil)
}
-
+
})
})
diff --git a/Vendoo/ItemImagePickerViewController.swift b/Vendoo/ItemImagePickerViewController.swift
index 64d2ec7..7a0f36e 100644
--- a/Vendoo/ItemImagePickerViewController.swift
+++ b/Vendoo/ItemImagePickerViewController.swift
@@ -37,6 +37,8 @@ class ItemImagePickerViewController: UIViewController {
private var currImageSelected: UIImageView!
private var currUILabel: UILabel!
private var imageIndex: Int!
+ private var isEditing: Bool = false
+ private var currentInformation: Dictionary!
override func viewDidLoad() {
super.viewDidLoad()
@@ -52,19 +54,49 @@ class ItemImagePickerViewController: UIViewController {
self.itemPrice.delegate = self
self.picker.delegate = self
- // Input data into the Array:
- pickerData = ["Category 1", "Category 2", "Category 3", "Category 4", "Category 5", "Category 6"]
-
let tapGestureMain = UITapGestureRecognizer(target: self, action: #selector(ItemImagePickerViewController.takePicture))
- let tapGesture2 = UITapGestureRecognizer(target: self, action: #selector(ItemImagePickerViewController.takePicture))
- //tapGesture.cancelsTouchesInView = true
self.view.addGestureRecognizer(tapGestureMain)
- //self.possibleItemImageMain.addGestureRecognizer(tapGestureMain)
- //self.possibleItemImage2.addGestureRecognizer(tapGesture2)
- //self.possibleItemImage3.addGestureRecognizer(tapGesture)
- //self.possibleItemImage4.addGestureRecognizer(tapGesture)
- //self.possibleItemImage5.addGestureRecognizer(tapGesture)
-
+
+ if(self.isEditing) {
+ self.itemName.text = self.currentInformation["title"] as? String
+ self.itemDescription.text = self.currentInformation["description"] as? String
+ self.itemQuantity.text = self.currentInformation["quantity"] as? String
+ self.itemPrice.text = self.currentInformation["price"] as? String
+
+ //@FIXME: Cancel button not changing to Back button label
+ dispatch_async(dispatch_get_main_queue(), {
+ self.cancelButton.titleLabel?.text = "Back"
+ })
+
+ var images = (self.currentInformation["images"] as? [UIImage])!
+ for i in 0...(images.count - 1) {
+ switch i {
+ case 0:
+ self.possibleItemImageMain.image = images[i]
+ self.itemImagesSelections[i] = true
+ break
+ case 1:
+ self.possibleItemImage2.image = images[i]
+ self.itemImagesSelections[i] = true
+ break
+ case 2:
+ self.possibleItemImage3.image = images[i]
+ self.itemImagesSelections[i] = true
+ break
+ case 3:
+ self.possibleItemImage4.image = images[i]
+ self.itemImagesSelections[i] = true
+ break
+ case 4:
+ self.possibleItemImage5.image = images[i]
+ self.itemImagesSelections[i] = true
+ break
+ default:
+ break
+ }
+ }
+
+ }
}
@@ -79,7 +111,12 @@ class ItemImagePickerViewController: UIViewController {
self.tabBarController?.tabBar.hidden = true
}
-
+ func toggleEditingMode(dictionary: Dictionary?){
+ if(!self.isEditing) {
+ self.currentInformation = dictionary!
+ }
+ self.isEditing = !self.isEditing
+ }
}
@@ -126,12 +163,15 @@ extension ItemImagePickerViewController {
dict["pictures"] = images
(segue.destinationViewController as! CategoriesTableViewController).setListingDictionary(dict)
- (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)!)
- //(segue.destinationViewController as! NetworksTableViewController).setNetworkSelectFunctionality(true)
- //print(self.categoryPicker.selectedRowInComponent(0))
+ 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)!)
+ }
}
@@ -185,7 +225,6 @@ extension ItemImagePickerViewController: UIImagePickerControllerDelegate, UINavi
case 2:
if(self.itemImagesSelections[0] && self.itemImagesSelections[1]) {
- //self.itemImagesSelections[2] = true
viewsWereSaved[0] = true
self.imageIndex = 2
@@ -201,7 +240,6 @@ extension ItemImagePickerViewController: UIImagePickerControllerDelegate, UINavi
case 3:
if(self.itemImagesSelections[0] && self.itemImagesSelections[1]
&& self.itemImagesSelections[2]) {
- //self.itemImagesSelections[3] = true
viewsWereSaved[0] = true
self.imageIndex = 3
@@ -217,7 +255,6 @@ extension ItemImagePickerViewController: UIImagePickerControllerDelegate, UINavi
case 4:
if(self.itemImagesSelections[0] && self.itemImagesSelections[1]
&& self.itemImagesSelections[2] && self.itemImagesSelections[3]) {
- //self.itemImagesSelections[4] = true
viewsWereSaved[0] = true
self.imageIndex = 4
@@ -244,20 +281,6 @@ extension ItemImagePickerViewController: UIImagePickerControllerDelegate, UINavi
viewsWereSaved[1] = true
}
}
- /*
- for (UIView *view in self.view.subviews)
- {
- if ([view isKindOfClass:[UIImageView class]] && CGRectContainsPoint(view.frame, location))
- {
- UIImageView *image = (UIImageView *) view;
-
- // ok, now you know which image you received your long press for
- // do whatever you wanted on it at this point
-
- return;
- }
- }
- */
}
@@ -492,9 +515,13 @@ extension ItemImagePickerViewController {
}
@IBAction func cancelNewListing(sender: AnyObject) {
- //nil out all data user may have entered so that when they reopen new listing page
- //it initialized to a fresh screen.
- self.tabBarController?.selectedIndex = 0
+ //@FIXME: nil out all data user may have entered so that when they reopen new listing page it initialized to a fresh screen.
+
+ if(!self.isEditing) {
+ self.tabBarController?.selectedIndex = 0
+ }else{
+ self.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
+ }
}
diff --git a/Vendoo/ItemTableViewController.swift b/Vendoo/ItemTableViewController.swift
index bbe667d..1689642 100644
--- a/Vendoo/ItemTableViewController.swift
+++ b/Vendoo/ItemTableViewController.swift
@@ -10,6 +10,7 @@
This class will be used to retrieve and manipulate data seen by the end user for he/she's item listings
*/
import UIKit
+import TYMActivityIndicatorView
class ItemTableViewController: UIViewController {
@@ -19,6 +20,7 @@ class ItemTableViewController: UIViewController {
@IBOutlet weak var menuButton: UIBarButtonItem!
+ var loadingView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
@@ -39,10 +41,18 @@ class ItemTableViewController: UIViewController {
menuButton.action = "revealToggle:"
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
- (self.tabBarController as? HomeViewController)?.firebaseManager.indicator.hidesWhenStopped = 1
- //self.view.addSubview(((self.tabBarController as? HomeViewController)?.firebaseManager.indicator)!)
+
+ self.loadingView = UIView(frame: self.view.frame)
+ self.loadingView.backgroundColor = UIColor.grayColor()
+ self.loadingView.alpha = 0.4
+ ((self.tabBarController as? HomeViewController)?.firebaseManager.indicator)!.center = self.view.center
+
+
+ self.loadingView.addSubview(((self.tabBarController as? HomeViewController)?.firebaseManager.indicator)!)
+ self.view.addSubview(loadingView)
(self.tabBarController as? HomeViewController)?.firebaseManager.indicator.startAnimating()
+
}
@@ -58,6 +68,7 @@ class ItemTableViewController: UIViewController {
func stopIndicator(){
(self.tabBarController as? HomeViewController)?.firebaseManager.indicator.stopAnimating()
+ self.loadingView.removeFromSuperview()
self.itemTable.reloadData()
}
diff --git a/Vendoo/ListingPreviewViewController.swift b/Vendoo/ListingPreviewViewController.swift
index a402872..3d26171 100644
--- a/Vendoo/ListingPreviewViewController.swift
+++ b/Vendoo/ListingPreviewViewController.swift
@@ -14,6 +14,8 @@
*/
import UIKit
+import SWRevealViewController
+
//@TODO: Need to make multiple images work for etsy and facebook and need to implement multiple images saving to firebase
class ListingPreviewViewController: UIViewController {
@@ -37,6 +39,7 @@ class ListingPreviewViewController: UIViewController {
private var alert = UIAlertController(title: "Listing Published", message: "Your listing has been published", preferredStyle: .Alert)
private var lastListingKey: String!
private var newInProgressListing: Dictionary = Dictionary()
+ var loadingView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
@@ -92,12 +95,23 @@ class ListingPreviewViewController: UIViewController {
// Pass the selected object to the new view controller.
if(segue.identifier == "EditListingSegue"){
+ var imageData: [UIImage] = []
+ for imageView in (self.itemListingDictionary["pictures"] as? [UIImageView])! {
+ imageData.append(imageView.image!)
+ }
+
+ let dict: Dictionary = ["title": self.itemTitle.text,
+ "description": self.itemDescription.text,
+ "price": self.itemPrice.text,
+ "quantity": self.itemQuantity.text,
+ "images": imageData,
+ "category": self.itemCategory.text,
+ "fbManager": self.graphManager,
+ "ebayManager": self.ebayManager,
+ "etsyManager": self.etsyManager,
+ "firebaseManager": self.firManager]
let vc = (segue.destinationViewController as? ItemImagePickerViewController)!
- vc.itemName.text? = self.itemTitle.text
- vc.itemPrice.text? = self.itemPrice.text
- vc.itemDescription.text? = self.itemDescription.text
- vc.possibleItemImageMain = self.itemPicture
- vc.itemQuantity.text? = self.itemQuantity.text
+ vc.toggleEditingMode(dict)
}
}
@@ -127,9 +141,22 @@ extension Dictionary {
//MARK: - IBActions
extension ListingPreviewViewController {
-
+ @IBAction func cancel(sender: AnyObject) {
+ let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
+ let vc = storyboard.instantiateViewControllerWithIdentifier("Reveal View Controller") as! SWRevealViewController
+ self.presentViewController(vc, animated: true, completion: nil)
+ }
@IBAction func publishItem(sender: AnyObject) {
+ self.loadingView = UIView(frame: self.view.frame)
+ self.loadingView.backgroundColor = UIColor.grayColor()
+ self.loadingView.alpha = 0.4
+
+ self.firManager.indicator.center = self.view.center
+
+ self.loadingView.addSubview(self.firManager.indicator)
+ self.view.addSubview(loadingView)
+ self.firManager.indicator.startAnimating()
if(self.itemPicture.image == nil){
let alert = UIAlertController(title: "Image Needed", message: "To proceed to choose networks, you must supply at least one picture for your listing", preferredStyle: .Alert)
@@ -147,108 +174,6 @@ extension ListingPreviewViewController {
//post to ebay
if(self.networksDictionary["ebay"]!){
dispatch_group_enter(postingGroup)
- var categoryCode: String!
- var dict = EbayWebServiceManager.settingsDictionary["categories"]!
- switch self.itemCategory.text {
- case "Antiques":
- categoryCode = (dict["Antiques"] as! Dictionary)["cat_id"] as! String
- break
- case "Art":
- categoryCode = (dict["Art"] as! Dictionary)["cat_id"] as! String
- break
- case "Baby":
- categoryCode = (dict["Baby"] as! Dictionary)["cat_id"] as! String
- break
- case "Bath, Beauty & Health":
- categoryCode = (dict["Health and Beauty"] as! Dictionary)["cat_id"] as! String
- break
- case "Books":
- categoryCode = (dict["Books"] as! Dictionary)["cat_id"] as! String
- break
- case "Business & Industrial":
- categoryCode = (dict["Business and Industrial"] as! Dictionary)["cat_id"] as! String
- break
- case "Cameras & Photo":
- categoryCode = (dict["Cameras and Photo"] as! Dictionary)["cat_id"] as! String
- break
- case "Cell Phones & Accessories":
- categoryCode = (dict["Cell Phones and Accessories"] as! Dictionary)["cat_id"] as! String
- break
- case "Clothing & Shoes":
- categoryCode = (dict["Clothing, Shoes and Accessories"] as! Dictionary)["cat_id"] as! String
- break
- case "Coins & Paper Money":
- categoryCode = (dict["Coins and Paper Money"] as! Dictionary)["cat_id"] as! String
- break
- case "Collectibles":
- categoryCode = (dict["Collectibles"] as! Dictionary)["cat_id"] as! String
- break
- case "Computers/Tablets and Networking":
- categoryCode = (dict["Computers/Tablets and Networking"] as! Dictionary)["cat_id"] as! String
- break
- case "Consumer Electronics":
- categoryCode = (dict["Consumer Electronics"] as! Dictionary)["cat_id"] as! String
- break
- case "Crafts":
- categoryCode = (dict["Crafts"] as! Dictionary)["cat_id"] as! String
- break
- case "Dolls & Miniatures":
- categoryCode = (dict["Dolls and Bears"] as! Dictionary)["cat_id"] as! String
- break
- case "DVDs & Movies":
- categoryCode = (dict["DVDs & Movies"] as! Dictionary)["cat_id"] as! String
- break
- case "Entertainment Memorabilia":
- categoryCode = (dict["Entertainment Memorabilia"] as! Dictionary)["cat_id"] as! String
- break
- case "Everything Else":
- categoryCode = (dict["Everything Else"] as! Dictionary)["cat_id"] as! String
- break
- case "Gift Cards & Coupons":
- categoryCode = (dict["Gift Cards and Coupons"] as! Dictionary)["cat_id"] as! String
- break
- case "Home/Houseware & Garden":
- categoryCode = (dict["Coins and Paper Money"] as! Dictionary)["cat_id"] as! String
- break
- case "Jewelry & Watches":
- categoryCode = (dict["Jewelry and Watches"] as! Dictionary)["cat_id"] as! String
- break
- case "Musical Instruments & Gear":
- categoryCode = (dict["Musical Instruments and Gear"] as! Dictionary)["cat_id"] as! String
- break
- case "Pet Supplies":
- categoryCode = (dict["Pet Supplies"] as! Dictionary)["cat_id"] as! String
- break
- case "Pottery & Glass":
- categoryCode = (dict["Pottery and Glass"] as! Dictionary)["cat_id"] as! String
- break
- case "Real Estate":
- categoryCode = (dict["Real Estate"] as! Dictionary)["cat_id"] as! String
- break
- case "Specialty Services":
- categoryCode = (dict["Specialty Services"] as! Dictionary)["cat_id"] as! String
- break
- case "Sporting Goods":
- categoryCode = (dict["Sporting Goods"] as! Dictionary)["cat_id"] as! String
- break
- case "Sports Memorabilia & Fan Shop":
- categoryCode = (dict["Sports Mem, Cards and Fan Shop"] as! Dictionary)["cat_id"] as! String
- break
- case "Tickets & Experiences":
- categoryCode = (dict["Tickets and Experiences"] as! Dictionary)["cat_id"] as! String
- break
- case "Toys & Hobbies":
- categoryCode = (dict["Toys and Hobbies"] as! Dictionary)["cat_id"] as! String
- break
- case "Travel":
- categoryCode = (dict["Travel"] as! Dictionary)["cat_id"] as! String
- break
- case "Video Games & Consoles":
- categoryCode = (dict["Video Games and Consoles"] as! Dictionary)["cat_id"] as! String
- break
- default:
- break
- }
let body: [String: String] = [ "title": self.itemTitle.text,
"quantity":self.itemQuantity.text,
@@ -516,6 +441,17 @@ extension ListingPreviewViewController {
//register new listing id in global path of firebase root'
self.firManager.ref.child("Global_listings").child(newListingRef.key).setValue(newListingRef.key)
+ self.firManager.indicator.stopAnimating()
+
+ let alert = UIAlertController(title: "Listing Posted Successfully", message: "Your listing was submitted to all networks successfully", preferredStyle: .Alert)
+
+ alert.addAction(UIAlertAction(title: "OK", style: .Default, handler:{(action: UIAlertAction!) in
+
+ self.cancel(self)
+ alert.dismissViewControllerAnimated(true, completion: nil)
+ }))
+
+ self.presentViewController(alert, animated: true, completion: nil)
})
diff --git a/Vendoo/Main.storyboard b/Vendoo/Main.storyboard
index cab292d..de3c82e 100755
--- a/Vendoo/Main.storyboard
+++ b/Vendoo/Main.storyboard
@@ -1016,6 +1016,17 @@
+
@@ -1597,7 +1608,7 @@
-
+
@@ -1614,7 +1625,7 @@
-
+
@@ -1675,7 +1686,7 @@
-
+
@@ -1692,7 +1703,7 @@
-
+
@@ -2452,9 +2463,9 @@
-
-
+
+
diff --git a/Vendoo/NetworksTableViewController.swift b/Vendoo/NetworksTableViewController.swift
index 9139c15..268deb5 100644
--- a/Vendoo/NetworksTableViewController.swift
+++ b/Vendoo/NetworksTableViewController.swift
@@ -33,6 +33,8 @@ class NetworksTableViewController: UIViewController {
private var firManager: FirebaseManager! = nil
private var etsyManager: EtsyRESTAPIManager! = nil
private var ebayManager: EbayWebServiceManager! = EbayWebServiceManager()
+ private var shouldShowDictionary: Dictionary = ["ebay":false, "amazon":false,"etsy":false,"facebook":false]
+ private var networkOrderSelection: [String] = []
@@ -71,6 +73,23 @@ class NetworksTableViewController: UIViewController {
self.networkToggleOrSelect = bool
}
+ func toggleMarketPlaceVisibitlity (market: String) {
+ self.shouldShowDictionary[market] = !self.shouldShowDictionary[market]!
+ }
+
+ private func checkVisibility () -> String? {
+ var string = ""
+ for (market, visibility) in self.shouldShowDictionary {
+ if visibility {
+ self.shouldShowDictionary[market] = !self.shouldShowDictionary[market]!
+ string = market
+ self.networkOrderSelection.append(market)
+ break
+ }
+ }
+ return string
+ }
+
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
if(!networkToggleOrSelect) {
@@ -129,8 +148,20 @@ extension NetworksTableViewController: UITableViewDataSource {
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- // #warning Incomplete implementation, return the number of rows
- return 4
+ if(self.networkToggleOrSelect) {
+ var count = 0
+ // #warning Incomplete implementation, return the number of rows
+ for (_, visibility) in self.shouldShowDictionary {
+ if visibility {
+ count += 1
+ }
+ }
+ return count
+ }
+ else {
+ return 4
+ }
+
}
@@ -142,7 +173,27 @@ extension NetworksTableViewController: UITableViewDataSource {
//may hide future networks that don't apply to a listing
if(self.networkToggleOrSelect){
- switch (indexPath.row){
+ let market = self.checkVisibility()!
+ switch (market) {
+ case "facebook":
+ cell = (self.tableView.dequeueReusableCellWithIdentifier("facebook", forIndexPath: indexPath) as! FBTableViewCell)
+ break
+ case "ebay":
+ cell = (self.tableView.dequeueReusableCellWithIdentifier("ebay", forIndexPath: indexPath) as! EbayTableViewCell)
+ break
+ case "etsy":
+ cell = (self.tableView.dequeueReusableCellWithIdentifier("etsy", forIndexPath: indexPath) as! EtsyTableViewCell)
+ break
+ case "amazon":
+ cell = (self.tableView.dequeueReusableCellWithIdentifier("amazon", forIndexPath: indexPath) as! AmazonTableViewCell)
+ break
+ default:
+ cell = UITableViewCell()
+ break
+ }
+
+
+ /*switch (indexPath.row){
case 0:
@@ -162,7 +213,7 @@ extension NetworksTableViewController: UITableViewDataSource {
cell = (self.tableView.dequeueReusableCellWithIdentifier("facebook", forIndexPath: indexPath) as! FBTableViewCell)
break
- }
+ }*/
}
else{
@@ -353,8 +404,8 @@ extension NetworksTableViewController: UITableViewDelegate {
//case where class is being used in new item posting workflow to select which network to sell on
if(self.networkToggleOrSelect){
- switch (indexPath.row){
- case 0:
+ switch (self.networkOrderSelection[indexPath.row]){
+ case "ebay":
let cell: EbayTableViewCell!
cell = (self.tableView.dequeueReusableCellWithIdentifier("ebay", forIndexPath: indexPath) as! EbayTableViewCell)
cell.setSelected(false, animated: false)
@@ -383,7 +434,7 @@ extension NetworksTableViewController: UITableViewDelegate {
}
break
- case 1:
+ case "amazon":
let cell: AmazonTableViewCell!
cell = (self.tableView.dequeueReusableCellWithIdentifier("amazon", forIndexPath: indexPath) as! AmazonTableViewCell)
cell.setSelected(false, animated: false)
@@ -413,7 +464,7 @@ extension NetworksTableViewController: UITableViewDelegate {
break
- case 2:
+ case "etsy":
let cell: EtsyTableViewCell!
cell = (self.tableView.dequeueReusableCellWithIdentifier("etsy", forIndexPath: indexPath) as! EtsyTableViewCell)
@@ -451,7 +502,7 @@ extension NetworksTableViewController: UITableViewDelegate {
break
- default:
+ case "facebook":
let cell: FBTableViewCell!
@@ -477,16 +528,9 @@ extension NetworksTableViewController: UITableViewDelegate {
//code to select network
self.networksDictionary["facebook"] = true
- //this is the type of code desired to access the REST management classes
- /*
- let tabBar = self.tabBarController
- (tabBar as? HomeViewController)?.fbGraphManager.authorizeApp(self)
- */
-
-
}
-
-
+ break
+ default:
break
}
@@ -682,10 +726,19 @@ extension NetworksTableViewController: UITableViewDelegate {
extension NetworksTableViewController: EbayWebServiceManagerDelegate {
func signInUser(signInString : String!) {
- let myWebView:UIWebView = UIWebView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height))
+ let mywebViewController = UIViewController()
+
+ //let myWebView:UIWebView = UIWebView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height))
+ let myWebView = UIWebView(frame: mywebViewController.view.bounds)
myWebView.delegate = self
myWebView.loadRequest(NSURLRequest(URL: NSURL(string: signInString)!))
- self.view.addSubview(myWebView)
+ mywebViewController.view = myWebView
+
+ let navController = UINavigationController(rootViewController: mywebViewController)
+ mywebViewController.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: Selector("dismiss"))
+
+ self.presentViewController(navController, animated: true, completion: nil)
+ //self.view.addSubview(myWebView)
}
}
@@ -712,24 +765,15 @@ extension NetworksTableViewController: UIWebViewDelegate {
NSLog("Oauth successful")
((self.tabBarController as? HomeViewController)?.ebayGraphManager)!.fetchToken()
}
-
- /*var data : NSData? = NSData(contentsOfURL: NSURL(string: responseString as! String)!)!
- if (data != nil){
- let jsonObject: AnyObject?
- do {
- try jsonObject = NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves)
- print(jsonObject)
-
- }
- catch {
-
- }
- }*/
}
}
+ func dismiss() {
+ self.dismissViewControllerAnimated(true, completion: nil)
+ }
+
}
extension NetworksTableViewController {
@@ -741,12 +785,16 @@ extension NetworksTableViewController {
switch (sender.superview?.superview?.classForCoder){
case is EbayTableViewCell.Type:
let tabBar = self.tabBarController
- ((tabBar as? HomeViewController)?.ebayGraphManager.authorizeApp())!
- dispatch_async(dispatch_get_main_queue(), {
- sender.setTitle("Logout", forState: UIControlState.Normal)
- (sender.superview?.superview as! EbayTableViewCell).settingsBtn.enabled = true
- (sender.superview?.superview as! EbayTableViewCell).settingsBtn.hidden = false
- })
+ ((tabBar as? HomeViewController)?.ebayGraphManager.authorizeApp({
+ something,_ -> Void in
+ // // //
+ dispatch_async(dispatch_get_main_queue(), {
+ sender.setTitle("Logout", forState: UIControlState.Normal)
+ (sender.superview?.superview as! EbayTableViewCell).settingsBtn.enabled = true
+ (sender.superview?.superview as! EbayTableViewCell).settingsBtn.hidden = false
+ })
+ }))!
+
break
case is AmazonTableViewCell.Type:
break