diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate index 9018e3c..ad9865f 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 9ecd442..9359d05 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/ServiceNotificationManager.swift" - timestampString = "494388533.467001" + timestampString = "494778762.798972" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "70" - endingLineNumber = "70" + startingLineNumber = "79" + endingLineNumber = "79" landmarkName = "pollServices()" landmarkType = "5"> @@ -26,43 +26,217 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "Vendoo/ServiceNotificationManager.swift" - timestampString = "494388607.180284" + timestampString = "494778870.382513" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "71" - endingLineNumber = "71" + startingLineNumber = "75" + endingLineNumber = "75" landmarkName = "pollServices()" landmarkType = "5"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + startingLineNumber = "87" + endingLineNumber = "87" + offsetFromSymbolStart = "507"> + startingLineNumber = "87" + endingLineNumber = "87" + offsetFromSymbolStart = "7119"> @@ -70,16 +244,32 @@ + + + + @@ -89,12 +279,28 @@ shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" - filePath = "Vendoo/EbayWebServiceManager.swift" - timestampString = "494685275.012942" + filePath = "Vendoo/ListingPreviewViewController.swift" + timestampString = "494935556.474664" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "573" - endingLineNumber = "573"> + startingLineNumber = "167" + endingLineNumber = "167"> + + + + + startingLineNumber = "314" + endingLineNumber = "314" + landmarkName = "listItem(_:imageUrls:completion:)" + landmarkType = "5"> + + + + + + + + + + + + + + + + + + + + + + + + @@ -134,11 +438,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "Vendoo/NetworksTableViewController.swift" - timestampString = "494630189.759007" + timestampString = "494941355.780817" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "178" - endingLineNumber = "178" + startingLineNumber = "177" + endingLineNumber = "177" landmarkName = "tableView(_:cellForRowAtIndexPath:)" landmarkType = "5"> @@ -149,13 +453,13 @@ shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" - filePath = "Vendoo/CategoriesTableViewController.swift" - timestampString = "494631326.508326" + filePath = "Vendoo/ListingPreviewViewController.swift" + timestampString = "494941872.191463" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "583" - endingLineNumber = "583" - landmarkName = "tableView(_:didSelectRowAtIndexPath:)" + startingLineNumber = "384" + endingLineNumber = "384" + landmarkName = "publishItem(_:)" landmarkType = "5"> @@ -165,13 +469,13 @@ shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" - filePath = "Vendoo/CategoriesTableViewController.swift" - timestampString = "494631326.508326" + filePath = "Vendoo/ListingPreviewViewController.swift" + timestampString = "494941981.555508" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "695" - endingLineNumber = "695" - landmarkName = "tableView(_:didSelectRowAtIndexPath:)" + startingLineNumber = "402" + endingLineNumber = "402" + landmarkName = "publishItem(_:)" landmarkType = "5"> @@ -181,125 +485,13 @@ shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" - filePath = "Vendoo/NetworksTableViewController.swift" - timestampString = "494635088.267954" + filePath = "Vendoo/ListingPreviewViewController.swift" + timestampString = "494942021.796377" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "788" - endingLineNumber = "788" - landmarkName = "toggleAuth(_:)" - landmarkType = "5"> - - - - - - - - - - - - - - - - - - - - - - - - @@ -309,13 +501,13 @@ shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" - filePath = "Vendoo/EbayWebServiceManager.swift" - timestampString = "494685275.012942" + filePath = "Vendoo/ListingPreviewViewController.swift" + timestampString = "494942034.726609" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "309" - endingLineNumber = "309" - landmarkName = "fetchToken()" + startingLineNumber = "407" + endingLineNumber = "407" + landmarkName = "publishItem(_:)" landmarkType = "5"> @@ -325,45 +517,13 @@ shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" - filePath = "Vendoo/NetworksTableViewController.swift" - timestampString = "494636370.565199" + filePath = "Vendoo/ListingPreviewViewController.swift" + timestampString = "494942036.742589" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "793" - endingLineNumber = "793" - landmarkName = "toggleAuth(_:)" - landmarkType = "5"> - - - - - - - - diff --git a/Vendoo/CategoriesTableViewController.swift b/Vendoo/CategoriesTableViewController.swift index 14f1738..027d126 100644 --- a/Vendoo/CategoriesTableViewController.swift +++ b/Vendoo/CategoriesTableViewController.swift @@ -129,6 +129,7 @@ class CategoriesTableViewController: UIViewController, UITableViewDelegate, UITa 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 @@ -693,9 +694,14 @@ class CategoriesTableViewController: UIViewController, UITableViewDelegate, UITa } let cell: CategoryCell! = tableView.cellForRowAtIndexPath(indexPath) as! CategoryCell//tableView.dequeueReusableCellWithIdentifier("CategoryCell", forIndexPath: indexPath) as? CategoryCell - if(self.ebayManager.isAuthorized && cell.shouldAskAboutLeafCategories){ - self.potentialEbay = true - self.navigateCategories() + + if(self.ebayManager.isAuthorized ) { + var dict: Dictionary> = (EbayWebServiceManager.settingsDictionary["categories"]!) as! Dictionary> + let catDict = dict[self.selectedCategory] + if (!(catDict!["isLeaf"] as! Bool)){ + self.potentialEbay = true + self.navigateCategories() + } } else { self.performSegueWithIdentifier("NetworkSelectionSegue", sender: self) diff --git a/Vendoo/EbayWebServiceManager.swift b/Vendoo/EbayWebServiceManager.swift index f68ac25..a9f0979 100644 --- a/Vendoo/EbayWebServiceManager.swift +++ b/Vendoo/EbayWebServiceManager.swift @@ -211,8 +211,10 @@ extension EbayWebServiceManager { self.requestMaker(soapMessage, theRequest: theRequest) } - func addImagesToListing(listingID: String, imageURL: String, onCompletion: ServiceResponse) { + func addImagesToListing(listingID: String, imageURLs: [String], listingOnCompletion: ServiceResponse, body: [String:String],onCompletion: ServiceResponse) { + listItem(body, imageUrls: imageURLs, completion: listingOnCompletion) + /* var soapMessage = "" + "" + "" + @@ -221,21 +223,26 @@ extension EbayWebServiceManager { soapMessage = soapMessage + "en_US" + "" + - "\(listingID)" + - "" + - "\(imageURL.stringByReplacingOccurrencesOfString("&", withString: "&"))" + - "" + - "" + "\(listingID)" + + for i in 0...(imageURLs.count - 1) { + soapMessage = soapMessage + "" + + "\(imageURLs[i].stringByReplacingOccurrencesOfString("&", withString: "&"))" + + "" + } + + + soapMessage = soapMessage + "" let url = NSURL(string: self.baseURL) let theRequest = NSMutableURLRequest(URL: url!) theRequest.addValue("ReviseItem", forHTTPHeaderField: "X-EBAY-API-CALL-NAME") self.completion = onCompletion self.requestMaker(soapMessage, theRequest: theRequest) - + */ } - func listItem(params: [String: String], completion: ServiceResponse?){ + func listItem(params: [String: String], imageUrls: [String], completion: ServiceResponse?){ var dict = EbayWebServiceManager.settingsDictionary var emailRetrievalGroup = dispatch_group_create() var soapMessage = "" + @@ -272,8 +279,15 @@ extension EbayWebServiceManager { "\(dict["listingDuration"] as! String!)" + "\(dict["listingType"] as! String!)" + "\(dict["payment"] as! String!)" + - "\(dict["paypal_email"] as! String!)" + - "\(dict["postalCode"] as! String!)" + + "\(dict["paypal_email"] as! String!)" + + for i in 0...(imageUrls.count - 1) { + soapMessage = soapMessage + + "\(imageUrls[i].stringByReplacingOccurrencesOfString("&", withString: "&"))" + + } + + soapMessage = soapMessage + "\(dict["postalCode"] as! String!)" + "\(params["quantity"] as String!)" + "" + "\(dict["return"] as! String!)" + @@ -289,7 +303,7 @@ extension EbayWebServiceManager { "" + "US" + "" - + print(soapMessage) let url = NSURL(string: self.baseURL) let theRequest = NSMutableURLRequest(URL: url!) theRequest.addValue("AddItem", forHTTPHeaderField: "X-EBAY-API-CALL-NAME") @@ -492,6 +506,7 @@ extension EbayWebServiceManager: NSXMLParserDelegate { dict[string] = ["cat_id": self.catID, "isLeaf": false, "level": self.catLevel] EbayWebServiceManager.settingsDictionary["categories"] = dict NSUserDefaults.standardUserDefaults().setObject(EbayWebServiceManager.settingsDictionary, forKey: "ebaySettings") + } else { if "\(self.catDetailLevel)" == self.catLevel { diff --git a/Vendoo/FacebookGraphAPIManager.swift b/Vendoo/FacebookGraphAPIManager.swift index 1355b78..d86b931 100644 --- a/Vendoo/FacebookGraphAPIManager.swift +++ b/Vendoo/FacebookGraphAPIManager.swift @@ -90,6 +90,7 @@ extension FacebookGraphAPIManager { print(result.token) print(result.grantedPermissions) NSUserDefaults.standardUserDefaults().setBool(true, forKey:"fbAuthorized") + self.isAuthorized = true FBSDKAccessToken.setCurrentAccessToken(result.token) @@ -103,6 +104,10 @@ extension FacebookGraphAPIManager { (result, error) -> Void in NSLog("Logged in with publish permisions") + NSUserDefaults.standardUserDefaults().setBool(true, forKey:"fbAuthorized") + self.isAuthorized = true + + }) }) diff --git a/Vendoo/HomeViewController.swift b/Vendoo/HomeViewController.swift index 05d5b51..8325875 100644 --- a/Vendoo/HomeViewController.swift +++ b/Vendoo/HomeViewController.swift @@ -60,13 +60,13 @@ class HomeViewController: UITabBarController { var listingImages: [UIImage] = [mainImage!] var count = 0 //Get supporting images - for i in 2...5 { + for i in 1...4 { let supportListingImg1 = storageRef.child("images/\(key)/\(i).jpg") supportListingImg1.dataWithMaxSize(10 * 1024 * 1024, completion: { (data1, error) -> Void in if(error != nil){ - print("support image \(i - 1) for key, \(key), does not exist") + print("support image \(i) for key, \(key), does not exist") }else{ listingImages.append(UIImage(data: data1!)!) } diff --git a/Vendoo/ListingPreviewViewController.swift b/Vendoo/ListingPreviewViewController.swift index 3d26171..e366f3e 100644 --- a/Vendoo/ListingPreviewViewController.swift +++ b/Vendoo/ListingPreviewViewController.swift @@ -14,6 +14,7 @@ */ import UIKit +import FirebaseStorage import SWRevealViewController //@TODO: Need to make multiple images work for etsy and facebook and need to implement multiple images saving to firebase @@ -22,7 +23,11 @@ class ListingPreviewViewController: UIViewController { //IBOutlets @IBOutlet weak var containerScrollView: UIScrollView! @IBOutlet weak var itemQuantity: UITextView! - @IBOutlet weak var itemPicture: UIImageView! + @IBOutlet weak var itemPictureMain: UIImageView! + @IBOutlet weak var itemPictureSup1: UIImageView! + @IBOutlet weak var itemPictureSup2: UIImageView! + @IBOutlet weak var itemPictureSup3: UIImageView! + @IBOutlet weak var itemPictureSup4: UIImageView! @IBOutlet weak var itemTitle: UITextView! @IBOutlet weak var itemDescription: UITextView! @IBOutlet weak var itemPrice: UITextView! @@ -65,7 +70,27 @@ class ListingPreviewViewController: UIViewController { func setListing(){ - self.itemPicture.image = (self.itemListingDictionary["pictures"] as? [UIImageView])![0].image + for i in 0...((self.itemListingDictionary["pictures"] as! [UIImageView]).count - 1) { + switch i { + case 0: + self.itemPictureMain.image = (self.itemListingDictionary["pictures"] as? [UIImageView])![i].image + break + case 1: + self.itemPictureSup1.image = (self.itemListingDictionary["pictures"] as? [UIImageView])![i].image + break + case 2: + self.itemPictureSup2.image = (self.itemListingDictionary["pictures"] as? [UIImageView])![i].image + break + case 3: + self.itemPictureSup3.image = (self.itemListingDictionary["pictures"] as? [UIImageView])![i].image + break + case 4: + self.itemPictureSup4.image = (self.itemListingDictionary["pictures"] as? [UIImageView])![i].image + break + default: + break + } + } self.itemTitle.text = self.itemListingDictionary["title"] as! String self.itemDescription.text = self.itemListingDictionary["description"] as! String self.itemPrice.text = self.itemListingDictionary["price"] as! String @@ -85,7 +110,14 @@ class ListingPreviewViewController: UIViewController { self.etsyManager = etsyManager } - + func saveToFirebase(listingImageRef: FIRStorageReference, completion: ServiceResponse! ) { + + listingImageRef.putData(UIImageJPEGRepresentation(self.itemPictureMain.image!, 0.8)!, metadata: nil,completion: { + (metadata, error) -> Void in + completion(metadata, error) + }) + + } // MARK: - Navigation @@ -158,7 +190,7 @@ extension ListingPreviewViewController { self.view.addSubview(loadingView) self.firManager.indicator.startAnimating() - if(self.itemPicture.image == nil){ + if(self.itemPictureMain.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) alert.addAction(UIAlertAction(title: "OK", style: .Default, handler:{(action: UIAlertAction!) in alert.dismissViewControllerAnimated(true, completion: nil)})) @@ -169,10 +201,14 @@ extension ListingPreviewViewController { //save listing to private user path in firebase let newListingRef = self.firManager.ref.child("Users").child("\(self.firManager.user_email)").child("user_Listings").childByAutoId() let postingGroup: dispatch_group_t = dispatch_group_create() + + /*if(!(self.networksDictionary["ebay"]!)&&(!(self.networksDictionary["etsy"]!))&&(!(self.networksDictionary["amazon"]!))&&(!(self.networksDictionary["facebook"]!))) { - + }else { + dispatch_g + }*/ //post to ebay - if(self.networksDictionary["ebay"]!){ + /*if(self.networksDictionary["ebay"]!){ dispatch_group_enter(postingGroup) let body: [String: String] = [ "title": self.itemTitle.text, @@ -192,7 +228,7 @@ extension ListingPreviewViewController { self.newInProgressListing["networkIDs"] = networkIDs dispatch_group_leave(postingGroup) }) - } + }*/ //post to amazon @@ -329,7 +365,7 @@ extension ListingPreviewViewController { let imageBody = ["listing_id": networkIDs["etsy"] as! Int, //"type":"image/jpg", - "image": UIImageJPEGRepresentation(self.itemPicture.image!, 0.45)!] + "image": UIImageJPEGRepresentation(self.itemPictureMain.image!, 0.45)!] self.etsyManager.sendPOSTRequest(("listings/\(networkIDs["etsy"] as! Int)/images"), body: imageBody, onCompletion: { (dict, error) -> Void in @@ -346,26 +382,93 @@ extension ListingPreviewViewController { //post to facebook if(self.networksDictionary["facebook"]!){ dispatch_group_enter(postingGroup) - + let fb_group: dispatch_group_t = dispatch_group_create() + let tmpDirURL = NSURL.fileURLWithPath(NSTemporaryDirectory(), isDirectory: true) let fileURL = tmpDirURL.URLByAppendingPathComponent("main").URLByAppendingPathExtension("jpg") print("FilePath: \(fileURL.path!)") do { - try UIImageJPEGRepresentation(self.itemPicture.image!, 0.45)!.writeToFile(fileURL.path!, options: NSDataWritingOptions.AtomicWrite) + try UIImageJPEGRepresentation(self.itemPictureMain.image!, 0.45)!.writeToFile(fileURL.path!, options: NSDataWritingOptions.AtomicWrite) }catch{ (error) print(error) } - - //let parameters: Dictionary = ["message":("**"+self.itemTitle.text!+"**\n\n"+"Price: "+self.itemPrice.text! + "\n\n"+self.itemDescription.text!)] - - let parameters: Dictionary = ["Source": UIImageJPEGRepresentation(self.itemPicture.image!, 0.45)!, "published":false] - self.lastListingKey = newListingRef.key - self.graphManager.makePOSTResquest("me/photos", params: parameters, onComplete: { - (imageId, error) -> Void in + + var imageIDs: [String] = [] + + + //post multiple images to fb + for i in 0...(self.itemListingDictionary["pictures"] as! [UIImageView]).count - 1 { + var parameters: Dictionary = Dictionary() + switch (i) { + + case 0: + dispatch_group_enter(fb_group) + parameters["Source"] = UIImageJPEGRepresentation(self.itemPictureMain.image!,0.45)! + parameters["published"] = false + self.graphManager.makePOSTResquest("me/photos", params: parameters, onComplete: { + (imageId, error) -> Void in + imageIDs.append(imageId as! String) + dispatch_group_leave(fb_group) + }) + break + case 1: + dispatch_group_enter(fb_group) + parameters["Source"] = UIImageJPEGRepresentation(self.itemPictureSup1.image!,0.45)! + parameters["published"] = false + self.graphManager.makePOSTResquest("me/photos", params: parameters, onComplete: { + (imageId, error) -> Void in + imageIDs.append(imageId as! String) + dispatch_group_leave(fb_group) + }) + break + case 2: + dispatch_group_enter(fb_group) + parameters["Source"] = UIImageJPEGRepresentation(self.itemPictureSup2.image!,0.45)! + parameters["published"] = false + self.graphManager.makePOSTResquest("me/photos", params: parameters, onComplete: { + (imageId, error) -> Void in + imageIDs.append(imageId as! String) + dispatch_group_leave(fb_group) + }) + break + case 3: + dispatch_group_enter(fb_group) + parameters["Source"] = UIImageJPEGRepresentation(self.itemPictureSup3.image!,0.45)! + parameters["published"] = false + self.graphManager.makePOSTResquest("me/photos", params: parameters, onComplete: { + (imageId, error) -> Void in + imageIDs.append(imageId as! String) + dispatch_group_leave(fb_group) + }) + break + case 4: + dispatch_group_enter(fb_group) + parameters["Source"] = UIImageJPEGRepresentation(self.itemPictureSup4.image!,0.45)! + parameters["published"] = false + self.graphManager.makePOSTResquest("me/photos", params: parameters, onComplete: { + (imageId, error) -> Void in + imageIDs.append(imageId as! String) + dispatch_group_leave(fb_group) + }) + break + default: + break + } + } + + + //notifies that all images are ready to be attached to new listing on facebook + dispatch_group_notify(fb_group, dispatch_get_main_queue(), { + + var listingParams: Dictionary = ["message":("**"+self.itemTitle.text!+"**\n\n"+"Price: "+self.itemPrice.text! + "\n\n"+self.itemDescription.text!)] + + for i in 0...(self.itemListingDictionary["pictures"] as! [UIImageView]).count - 1 { + listingParams["attached_media[\(i)]"] = "{\"media_fbid\":\"\(imageIDs[i])\"}" + } + - var listingParams: Dictionary = ["message":("**"+self.itemTitle.text!+"**\n\n"+"Price: "+self.itemPrice.text! + "\n\n"+self.itemDescription.text!), "attached_media[0]":"{\"media_fbid\":\"\(imageId as! String)\"}"] self.graphManager.makePOSTResquest("me/feed", params: listingParams, onComplete: { (listingId, error) -> Void in @@ -376,19 +479,16 @@ extension ListingPreviewViewController { networkIDs["facebook"] = listingId as! String self.newInProgressListing["networkIDs"] = networkIDs dispatch_group_leave(postingGroup) - - + + }) - /* - - */ + }) - //let parameters: Dictionary = ["":""] - - } + + //notifies once all selected networks have been posted to dispatch_group_notify(postingGroup, dispatch_get_main_queue(), { self.newInProgressListing.update(["listingID": newListingRef.key, "seller email": (NSUserDefaults.standardUserDefaults().objectForKey("email") as? String)!, @@ -407,30 +507,102 @@ extension ListingPreviewViewController { let storageRef = self.firManager.storage.referenceForURL((databaseDict["image_storage"] as? String)!) + var imageURLs: [String] = [] + let completion: ServiceResponse = {(metadata, error) -> Void in + + //for ebay due to its unique posting flow, will use firbase image storage url to add pictures + if (self.networksDictionary["ebay"]!){ + imageURLs.append((metadata?.downloadURL()?.absoluteString)!) + dispatch_group_leave(postingGroup) + }else{ + dispatch_group_leave(postingGroup) + } + + + + + } + //change code to new multi-image saving - - - - let listingImageRef = storageRef.child("images/\(newListingRef.key)"+".jpg") - listingImageRef.putData(UIImageJPEGRepresentation(self.itemPicture.image!, 0.8)!, metadata: nil,completion: - {(metadata, error) -> Void in + for i in 0...(self.itemListingDictionary["pictures"] as! [UIImageView]).count - 1 { + switch (i) { - //for ebay due to its unique posting flow, will use firbase image storage url to add pictures + case 0: dispatch_group_enter(postingGroup) - if (self.networksDictionary["ebay"]!){ - var networkIDs = self.newInProgressListing["networkIDs"] as! Dictionary - - self.ebayManager.addImagesToListing(networkIDs["ebay"] as! String, imageURL: (metadata?.downloadURL()?.absoluteString)!, onCompletion: { - (_, _) -> Void in - dispatch_group_leave(postingGroup) - }) - }else{ + let listingImageRef = storageRef.child("images/\(newListingRef.key)/main"+".jpg") + self.saveToFirebase(listingImageRef, completion: completion) + break + case 1: + dispatch_group_enter(postingGroup) + let listingImageRef = storageRef.child("images/\(newListingRef.key)/1"+".jpg") + self.saveToFirebase(listingImageRef, completion: completion) + break + case 2: + dispatch_group_enter(postingGroup) + let listingImageRef = storageRef.child("images/\(newListingRef.key)/2"+".jpg") + self.saveToFirebase(listingImageRef, completion: completion) + break + case 3: + dispatch_group_enter(postingGroup) + let listingImageRef = storageRef.child("images/\(newListingRef.key)/3"+".jpg") + self.saveToFirebase(listingImageRef, completion: completion) + break + case 4: + dispatch_group_enter(postingGroup) + let listingImageRef = storageRef.child("images/\(newListingRef.key)/4"+".jpg") + self.saveToFirebase(listingImageRef, completion: completion) + break + default: + break + } + } + + //notify to upload multiple ebay photos + dispatch_group_notify(postingGroup, dispatch_get_main_queue(), { + dispatch_group_enter(postingGroup) + if (self.networksDictionary["ebay"]!){ + + let body: [String: String] = [ "title": self.itemTitle.text, + "quantity":self.itemQuantity.text, + "description":self.itemDescription.text, + "price":self.itemPrice.text, + "category_id":self.itemListingDictionary["ebaySubCategoryID"] as! String + ] + let listingCompletion: ServiceResponse = { + (listingID, error) -> Void in + if((self.newInProgressListing["networkIDs"] == nil)){ + self.newInProgressListing["networkIDs"] = Dictionary() + } + var networkIDs = (self.newInProgressListing["networkIDs"] as! Dictionary) + networkIDs["ebay"] = listingID as! String + self.newInProgressListing["networkIDs"] = networkIDs dispatch_group_leave(postingGroup) } - - dispatch_group_notify(postingGroup, dispatch_get_main_queue(), { - newListingRef.setValue(self.newInProgressListing) + /*self.ebayManager.listItem(body, completion: { + (listingID, error) -> Void in + if((self.newInProgressListing["networkIDs"] == nil)){ + self.newInProgressListing["networkIDs"] = Dictionary() + } + var networkIDs = (self.newInProgressListing["networkIDs"] as! Dictionary) + networkIDs["ebay"] = listingID as! String + self.newInProgressListing["networkIDs"] = networkIDs + dispatch_group_leave(postingGroup) + })*/ + self.ebayManager.listItem(body, imageUrls: imageURLs, completion: listingCompletion) + //self.ebayManager.addImagesToListing(networkIDs["ebay"] as! String, imageURLs: imageURLs, listingOnCompletion: listingCompletion, body: body, onCompletion: { + //(_, _) -> Void in + //dispatch_group_leave(postingGroup) + //}) + + } + else { + dispatch_group_leave(postingGroup) + } + + //notify to save final listing to firebase + dispatch_group_notify(postingGroup, dispatch_get_main_queue(), { + newListingRef.setValue(self.newInProgressListing) // self.alert.title = "Listing saved with error" // self.alert.message = "Your listing has been saved but something went wrong when trying to publish to facebook" @@ -454,29 +626,28 @@ extension ListingPreviewViewController { self.presentViewController(alert, animated: true, completion: nil) }) + // self.alert.title = "Listing saved with error" + // self.alert.message = "Your listing has been saved but something went wrong when trying to publish to facebook" + + //let alert = UIAlertController(title: "Listing Published", message: "Your listing has been published", preferredStyle: .Alert) + + // self.alert.addAction(UIAlertAction(title: "OK", style: .Default, handler:{(action: UIAlertAction!) in self.alert.dismissViewControllerAnimated(true, completion: nil)})) + + }) + }) - - - - }) - }) - } - + } } @IBAction func editListing(sender: AnyObject) { self.performSegueWithIdentifier("EditListingSegue", sender: self) } - - - } - extension ListingPreviewViewController: UICollectionViewDelegate { /* diff --git a/Vendoo/Main.storyboard b/Vendoo/Main.storyboard index de3c82e..2d1dc77 100755 --- a/Vendoo/Main.storyboard +++ b/Vendoo/Main.storyboard @@ -1038,7 +1038,11 @@ - + + + + + diff --git a/Vendoo/NetworksTableViewController.swift b/Vendoo/NetworksTableViewController.swift index 268deb5..4303e3d 100644 --- a/Vendoo/NetworksTableViewController.swift +++ b/Vendoo/NetworksTableViewController.swift @@ -209,7 +209,7 @@ extension NetworksTableViewController: UITableViewDataSource { cell = (self.tableView.dequeueReusableCellWithIdentifier("etsy", forIndexPath: indexPath) as! EtsyTableViewCell) break default: - //loads network cell for ebay + //loads network cell for facebook cell = (self.tableView.dequeueReusableCellWithIdentifier("facebook", forIndexPath: indexPath) as! FBTableViewCell) break