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