diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate
index 938394e..22d8d1d 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 c1c6ba6..895a2d8 100644
--- a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+++ b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -58,12 +58,633 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
- timestampString = "494847768.56364"
+ timestampString = "494906385.49118"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "182"
- endingLineNumber = "182"
- landmarkName = "listingHasEnded(_:ebayInfo:amazonInfo:etsyInfo:)"
+ startingLineNumber = "183"
+ endingLineNumber = "183">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Vendoo/CategoriesTableViewController.swift b/Vendoo/CategoriesTableViewController.swift
index 14f1738..cf4c1d3 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,18 @@ 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 != nil && !(catDict!["isLeaf"] as! Bool)){
+ self.potentialEbay = true
+ self.navigateCategories()
+ }
+ else{
+ self.performSegueWithIdentifier("NetworkSelectionSegue", sender: self)
+ }
}
else {
self.performSegueWithIdentifier("NetworkSelectionSegue", sender: self)
diff --git a/Vendoo/EbayWebServiceManager.swift b/Vendoo/EbayWebServiceManager.swift
index 8c86b5c..31e9faa 100644
--- a/Vendoo/EbayWebServiceManager.swift
+++ b/Vendoo/EbayWebServiceManager.swift
@@ -214,8 +214,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 = "" +
"" +
"" +
@@ -224,21 +226,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 = "" +
@@ -275,8 +282,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...(0/*imageUrls.count - 1*/) { //will replace with actual count once everything is working with images
+ soapMessage = soapMessage +
+ "\(imageUrls[i].stringByReplacingOccurrencesOfString("&", withString: "&"))"
+
+ }
+
+ soapMessage = soapMessage + "\(dict["postalCode"] as! String!)" +
"\(params["quantity"] as String!)" +
"" +
"\(dict["return"] as! String!)" +
@@ -292,7 +306,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")
@@ -520,11 +534,17 @@ extension EbayWebServiceManager: NSXMLParserDelegate {
EbayWebServiceManager.settingsDictionary["categories"] = dict
NSUserDefaults.standardUserDefaults().setObject(EbayWebServiceManager.settingsDictionary, forKey: "ebaySettings")
}
- else {
- if "\(self.catDetailLevel)" == self.catLevel {
- if((self.subCategories[string] == nil )){
- self.subCategories[string] = ["cat_id": self.catID, "isLeaf": false, "level": self.catLevel]
- }
+ var dict: Dictionary> = (EbayWebServiceManager.settingsDictionary["categories"]!) as! Dictionary>
+
+ 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 {
+ if((self.subCategories[string] == nil )){
+ self.subCategories[string] = ["cat_id": self.catID, "isLeaf": false, "level": 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 5242ca6..df1063e 100644
--- a/Vendoo/HomeViewController.swift
+++ b/Vendoo/HomeViewController.swift
@@ -65,13 +65,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!)!)
}
@@ -94,6 +94,7 @@ class HomeViewController: UITabBarController {
self.userListings.append(
Listing(itemTitle: (listingInfo!["listingTitle"] as? String)!,
itemCategory: listingInfo!["listingCategory"] as? String,
+ itemQuantity: (listingInfo!["listingQuantity"] as? String)!,
itemPrice: listingInfo!["listingPrice"] as? String,
itemDescription: listingInfo!["listingDescription"] as? String,
itemImages: listingImages,
diff --git a/Vendoo/ItemImagePickerViewController.swift b/Vendoo/ItemImagePickerViewController.swift
index 55fd698..c810b21 100644
--- a/Vendoo/ItemImagePickerViewController.swift
+++ b/Vendoo/ItemImagePickerViewController.swift
@@ -430,7 +430,6 @@ extension ItemImagePickerViewController {
//save listing to private user path in firebase
let newListingRef = (self.tabBarController as? HomeViewController)?.firebaseManager.ref.child("Users").child("\(((self.tabBarController as? HomeViewController)?.firebaseManager.user_email)!)").child("user_Listings").childByAutoId()
- let category = (self.pickerData[self.categoryPicker.selectedRowInComponent(0)])
var counter = -1
for bool in self.itemImagesSelections {
if bool {
@@ -443,8 +442,8 @@ extension ItemImagePickerViewController {
"seller email": (NSUserDefaults.standardUserDefaults().objectForKey("email") as? String)!,
"listingTitle": self.itemName.text,
"listingPrice": self.itemPrice.text,
- "listingCategory": category,
"listingDescription": self.itemDescription.text,
+ "listingQuantity": self.itemQuantity.text!,
"numberOfSupportingImages" : counter,
"isListingDraft": true,
"networks": ["areNetworksChosen": false]]
diff --git a/Vendoo/ItemTableViewController.swift b/Vendoo/ItemTableViewController.swift
index 1689642..2da8be4 100644
--- a/Vendoo/ItemTableViewController.swift
+++ b/Vendoo/ItemTableViewController.swift
@@ -21,6 +21,7 @@ class ItemTableViewController: UIViewController {
@IBOutlet weak var menuButton: UIBarButtonItem!
var loadingView: UIView!
+ var selectedListing: Listing!
override func viewDidLoad() {
super.viewDidLoad()
@@ -87,6 +88,35 @@ extension ItemTableViewController {
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
+
+ let des = segue.destinationViewController as! ListingPreviewViewController
+ var tempImages: [UIImageView] = []
+ for uiImage in self.selectedListing.images {
+ tempImages.append(UIImageView(image: uiImage))
+ }
+ let dict:[String:AnyObject] = [
+ "pictures": tempImages,
+ "title": self.selectedListing.title != nil ? self.selectedListing.title : "",
+ "description": self.selectedListing.desc != nil ? self.selectedListing.desc: "",
+ "price": self.selectedListing.price != nil ? self.selectedListing.price : "",
+ "category": self.selectedListing.category != nil ? self.selectedListing.category : "",
+ "quantity": self.selectedListing.quantity != nil ? self.selectedListing.quantity: nil
+ ]
+
+ des.setDictionary(self.selectedListing.networks, itemdictionary: dict)
+ des.setManagers(
+ ((self.tabBarController as? HomeViewController)?.fbGraphManager)!,
+ fireManager: ((self.tabBarController as? HomeViewController)?.firebaseManager)!,
+ ebayManager: ((self.tabBarController as? HomeViewController)?.ebayGraphManager)!,
+ etsyManager: ((self.tabBarController as? HomeViewController)?.etsyManager)!
+ )
+
+ if self.selectedListing.isDraft! {
+ des.setViewState("Editible")
+ }else {
+ des.setViewState("NonEditable")
+ }
+
}
}
@@ -153,6 +183,11 @@ extension ItemTableViewController: UITableViewDataSource{
}
return cell
}
+
+ func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
+ self.selectedListing = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row]
+ self.performSegueWithIdentifier("ItemDetailSegue", sender: self)
+ }
}
diff --git a/Vendoo/Listing.swift b/Vendoo/Listing.swift
index c9657f9..76ec5cc 100644
--- a/Vendoo/Listing.swift
+++ b/Vendoo/Listing.swift
@@ -15,18 +15,20 @@ class Listing : NSObject {
var category: String!
var price: String!
var desc: String!
+ var quantity: String!
var isDraft: Bool!
var images: [UIImage]!
var key: String!
var networks: Dictionary!
var listingStatus: String!
- init(itemTitle:String, itemCategory: String!, itemPrice: String!, itemDescription: String!, itemImages: [UIImage], isDraftListing: Bool, itemKey: String, networksSellingOn: Dictionary){
+ init(itemTitle:String, itemCategory: String!, itemQuantity: String!, itemPrice: String!, itemDescription: String!, itemImages: [UIImage], isDraftListing: Bool, itemKey: String, networksSellingOn: Dictionary){
self.title = itemTitle
self.category = itemCategory
self.price = itemPrice
self.desc = itemDescription
+ self.quantity = itemQuantity
self.isDraft = isDraftListing
self.images = itemImages
self.key = itemKey
diff --git a/Vendoo/ListingPreviewViewController.swift b/Vendoo/ListingPreviewViewController.swift
index 3d26171..7cff821 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,12 +23,19 @@ 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!
@IBOutlet weak var itemCategory: UITextView!
@IBOutlet weak var networks: UICollectionView!
+ @IBOutlet weak var publishBtn: UIButton!
+ @IBOutlet weak var edit_button: UIButton!
+ @IBOutlet weak var cancel_backBtn: UIButton!
//class variables
private var networksDictionary: Dictionary = Dictionary()
@@ -40,10 +48,29 @@ class ListingPreviewViewController: UIViewController {
private var lastListingKey: String!
private var newInProgressListing: Dictionary = Dictionary()
var loadingView: UIView!
+ private var itemViewState = ""
override func viewDidLoad() {
super.viewDidLoad()
+ if (self.itemViewState == "NonEditable") {
+ dispatch_async(dispatch_get_main_queue(), {
+ //self.cancel_backBtn.titleLabel?.text = "Back"
+ self.edit_button.hidden = true
+ self.edit_button.enabled = false
+
+ self.publishBtn.hidden = true
+ self.publishBtn.enabled = false
+ })
+ }
+
+ /*if(!self.networksDictionary["areNetworksChosen"]!) {
+ self.networks.hidden = true
+ }*/
+ /*else if (self.itemViewState == "Editable") {
+ //self.cancel_backBtn.titleLabel?.text = "Back"
+
+ }*/
// Do any additional setup after loading the view.
// Initialization code
@@ -65,7 +92,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
@@ -73,6 +120,10 @@ class ListingPreviewViewController: UIViewController {
self.itemQuantity.text = self.itemListingDictionary["quantity"] as! String
}
+ func setViewState(state: String) {
+ self.itemViewState = state
+ }
+
func setDictionary(netdictionary:Dictionary, itemdictionary: Dictionary){
self.networksDictionary = netdictionary
self.itemListingDictionary = itemdictionary
@@ -85,7 +136,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
@@ -142,9 +200,15 @@ 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)
+ if self.itemViewState == "" {
+ let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
+ let vc = storyboard.instantiateViewControllerWithIdentifier("Reveal View Controller") as! SWRevealViewController
+ self.presentViewController(vc, animated: true, completion: nil)
+ }
+ else if self.itemViewState == "Editable" || self.itemViewState == "NonEditable"{
+ self.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
+ }
+
}
@IBAction func publishItem(sender: AnyObject) {
@@ -158,7 +222,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 +233,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 +260,7 @@ extension ListingPreviewViewController {
self.newInProgressListing["networkIDs"] = networkIDs
dispatch_group_leave(postingGroup)
})
- }
+ }*/
//post to amazon
@@ -329,7 +397,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 +414,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,25 +511,24 @@ 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.networksDictionary["areNetworksChosen"] = true
self.newInProgressListing.update(["listingID": newListingRef.key,
"seller email": (NSUserDefaults.standardUserDefaults().objectForKey("email") as? String)!,
"listingTitle": self.itemTitle.text,
"listingPrice": self.itemPrice.text,
"listingCategory": self.itemCategory.text,
+ "listingQuantity": self.itemQuantity.text,
"listingDescription": self.itemDescription.text,
"numberOfSupportingImages" : ((self.itemListingDictionary["pictures"] as? [UIImageView])?.count)! - 1,
"isListingDraft": false,
@@ -407,37 +541,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.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)}))
+ /*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)
//register new listing id in global path of firebase root'
self.firManager.ref.child("Global_listings").child(newListingRef.key).setValue(newListingRef.key)
@@ -454,29 +653,20 @@ extension ListingPreviewViewController {
self.presentViewController(alert, animated: 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..69728fa 100755
--- a/Vendoo/Main.storyboard
+++ b/Vendoo/Main.storyboard
@@ -1006,7 +1006,7 @@
-
+