Merged branch master into Seller-Networks-Settings

This commit is contained in:
Okechi Onyeje 2016-08-01 04:46:40 -04:00
commit b3e38fb0ca
14 changed files with 1817 additions and 849 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -14,6 +14,8 @@
3E1AA4351D0DD173005FCCBB /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1AA4341D0DD173005FCCBB /* SettingsViewController.swift */; }; 3E1AA4351D0DD173005FCCBB /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1AA4341D0DD173005FCCBB /* SettingsViewController.swift */; };
3E1B1F091D24926C00DBCF08 /* EbaySettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1B1F081D24926C00DBCF08 /* EbaySettingsViewController.swift */; }; 3E1B1F091D24926C00DBCF08 /* EbaySettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1B1F081D24926C00DBCF08 /* EbaySettingsViewController.swift */; };
3E1B1F0B1D2493EE00DBCF08 /* EtsySettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1B1F0A1D2493EE00DBCF08 /* EtsySettingsViewController.swift */; }; 3E1B1F0B1D2493EE00DBCF08 /* EtsySettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1B1F0A1D2493EE00DBCF08 /* EtsySettingsViewController.swift */; };
3E1DC3CD1D4232490091BC60 /* CategoriesTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1DC3CC1D4232490091BC60 /* CategoriesTableViewController.swift */; };
3E1DC3CF1D42328C0091BC60 /* CategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1DC3CE1D42328C0091BC60 /* CategoryCell.swift */; };
3E4897D11D0067030069F742 /* FirebaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E4897D01D0067030069F742 /* FirebaseManager.swift */; }; 3E4897D11D0067030069F742 /* FirebaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E4897D01D0067030069F742 /* FirebaseManager.swift */; };
3E6CC3571CF2A94B00E00A70 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC3561CF2A94B00E00A70 /* AppDelegate.swift */; }; 3E6CC3571CF2A94B00E00A70 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC3561CF2A94B00E00A70 /* AppDelegate.swift */; };
3E6CC3591CF2A94B00E00A70 /* SignInViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC3581CF2A94B00E00A70 /* SignInViewController.swift */; }; 3E6CC3591CF2A94B00E00A70 /* SignInViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC3581CF2A94B00E00A70 /* SignInViewController.swift */; };
@ -71,6 +73,8 @@
3E1AA4341D0DD173005FCCBB /* SettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = "<group>"; }; 3E1AA4341D0DD173005FCCBB /* SettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = "<group>"; };
3E1B1F081D24926C00DBCF08 /* EbaySettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EbaySettingsViewController.swift; sourceTree = "<group>"; }; 3E1B1F081D24926C00DBCF08 /* EbaySettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EbaySettingsViewController.swift; sourceTree = "<group>"; };
3E1B1F0A1D2493EE00DBCF08 /* EtsySettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EtsySettingsViewController.swift; sourceTree = "<group>"; }; 3E1B1F0A1D2493EE00DBCF08 /* EtsySettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EtsySettingsViewController.swift; sourceTree = "<group>"; };
3E1DC3CC1D4232490091BC60 /* CategoriesTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoriesTableViewController.swift; sourceTree = "<group>"; };
3E1DC3CE1D42328C0091BC60 /* CategoryCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoryCell.swift; sourceTree = "<group>"; };
3E4897D01D0067030069F742 /* FirebaseManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FirebaseManager.swift; sourceTree = "<group>"; }; 3E4897D01D0067030069F742 /* FirebaseManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FirebaseManager.swift; sourceTree = "<group>"; };
3E6CC3531CF2A94B00E00A70 /* Vendoo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Vendoo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 3E6CC3531CF2A94B00E00A70 /* Vendoo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Vendoo.app; sourceTree = BUILT_PRODUCTS_DIR; };
3E6CC3561CF2A94B00E00A70 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 3E6CC3561CF2A94B00E00A70 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
@ -316,6 +320,8 @@
3EC3252B1CF8944800626C48 /* NewItemPostingSession */ = { 3EC3252B1CF8944800626C48 /* NewItemPostingSession */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
3E1DC3CE1D42328C0091BC60 /* CategoryCell.swift */,
3E1DC3CC1D4232490091BC60 /* CategoriesTableViewController.swift */,
3EC3252C1CF894C400626C48 /* ItemImagePickerViewController.swift */, 3EC3252C1CF894C400626C48 /* ItemImagePickerViewController.swift */,
3ECEDB861CF9C722003566B3 /* ListingPreviewViewController.swift */, 3ECEDB861CF9C722003566B3 /* ListingPreviewViewController.swift */,
); );
@ -634,12 +640,14 @@
3EC325201CF7C3AB00626C48 /* NetworkTableViewCell.swift in Sources */, 3EC325201CF7C3AB00626C48 /* NetworkTableViewCell.swift in Sources */,
3EC325261CF7E90000626C48 /* FacebookGraphAPIManager.swift in Sources */, 3EC325261CF7E90000626C48 /* FacebookGraphAPIManager.swift in Sources */,
3E7CF3FC1CF5FE9400F486B2 /* RecoverPasswordViewController.swift in Sources */, 3E7CF3FC1CF5FE9400F486B2 /* RecoverPasswordViewController.swift in Sources */,
3E1DC3CF1D42328C0091BC60 /* CategoryCell.swift in Sources */,
3EC325111CF703A600626C48 /* ItemCell.swift in Sources */, 3EC325111CF703A600626C48 /* ItemCell.swift in Sources */,
3EA668A11D02836C00EE57A8 /* EbayWebServiceManager.swift in Sources */, 3EA668A11D02836C00EE57A8 /* EbayWebServiceManager.swift in Sources */,
3ECEDB871CF9C722003566B3 /* ListingPreviewViewController.swift in Sources */, 3ECEDB871CF9C722003566B3 /* ListingPreviewViewController.swift in Sources */,
3E1B1F0B1D2493EE00DBCF08 /* EtsySettingsViewController.swift in Sources */, 3E1B1F0B1D2493EE00DBCF08 /* EtsySettingsViewController.swift in Sources */,
3EC325231CF7DA5500626C48 /* HomeViewController.swift in Sources */, 3EC325231CF7DA5500626C48 /* HomeViewController.swift in Sources */,
3EC3252D1CF894C400626C48 /* ItemImagePickerViewController.swift in Sources */, 3EC3252D1CF894C400626C48 /* ItemImagePickerViewController.swift in Sources */,
3E1DC3CD1D4232490091BC60 /* CategoriesTableViewController.swift in Sources */,
3E7CF4011CF6366300F486B2 /* EtsyRESTAPIManager.swift in Sources */, 3E7CF4011CF6366300F486B2 /* EtsyRESTAPIManager.swift in Sources */,
3EC325151CF7104300626C48 /* ItemTableViewController.swift in Sources */, 3EC325151CF7104300626C48 /* ItemTableViewController.swift in Sources */,
3EFB0E331D0B968300A05D7A /* SideMenuView.swift in Sources */, 3EFB0E331D0B968300A05D7A /* SideMenuView.swift in Sources */,

BIN
Vendoo/.DS_Store vendored

Binary file not shown.

View File

@ -0,0 +1,195 @@
//
// CategoriesTableViewController.swift
// Vendoo
//
// Created by Okechi Onyeje on 7/16/16.
// Copyright © 2016 Okechi Onyeje. All rights reserved.
//
import UIKit
class CategoriesTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
private var itemListingDictionary: Dictionary<String, AnyObject>! = Dictionary<String, AnyObject>()
private var graphManager: FacebookGraphAPIManager! = nil
private var firManager: FirebaseManager! = nil
private var etsyManager: EtsyRESTAPIManager! = nil
private var ebayManager: EbayWebServiceManager! = EbayWebServiceManager()
private var selectedCategory: String!
private var categories = ["Accessories",
"Art",
"Bath & Beauty",
"Bags & Purses",
"Books",
"Candles",
"Ceramics & Pottery",
"Children",
"Clothing",
"Crochet",
"Dolls & Miniatures",
"Everything Else",
"Furniture",
"Geekery",
"Glass",
"Holidays",
"Houseware",
"Jewelry",
"Knitting",
"Music",
"Needlecraft",
"Paper Goods",
"Patterns",
"Plants and Edibles",
"Quilts",
"Supplies",
"Toys",
"Vintage",
"Wedding",
"Woodworking"]
@IBOutlet weak var table: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.table.delegate = self
self.table.dataSource = self
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return self.categories.count
}
func setListingDictionary(listingDictionary: Dictionary<String, AnyObject>){
self.itemListingDictionary = listingDictionary
}
func setManagers(fbManager: FacebookGraphAPIManager, fireManager: FirebaseManager, ebayManager: EbayWebServiceManager, etsyManager: EtsyRESTAPIManager){
self.graphManager = fbManager
self.firManager = fireManager
self.ebayManager = ebayManager
self.etsyManager = etsyManager
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: CategoryCell! = tableView.dequeueReusableCellWithIdentifier("CategoryCell", forIndexPath: indexPath) as? CategoryCell
// Configure the cell...
dispatch_async(dispatch_get_main_queue(), {
cell.categoryName.text = self.categories[indexPath.row]
//ebay
if(true){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))?.hidden = true
}
//amazon
if(true){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 1, inSection: 0))?.hidden = true
}
//etsy
if(false){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 2, inSection: 0))?.hidden = true
}
//facebook
if(false){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))?.hidden = true
}
})
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.selectedCategory = self.categories[indexPath.row]
self.performSegueWithIdentifier("NetworkSelectionSegue", sender: self)
}
/*
// Override to support conditional editing of the table view.
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
// Return false if you do not want the specified item to be editable.
return true
}
*/
/*
// Override to support editing the table view.
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
// Delete the row from the data source
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
} else if editingStyle == .Insert {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
*/
/*
// Override to support rearranging the table view.
override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) {
}
*/
/*
// Override to support conditional rearranging of the table view.
override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
// Return false if you do not want the item to be re-orderable.
return true
}
*/
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
if(segue.identifier == "NetworkSelectionSegue") {
self.itemListingDictionary["category"] = self.selectedCategory
(segue.destinationViewController as! NetworksTableViewController).setListingDictionary(self.itemListingDictionary)
(segue.destinationViewController as! NetworksTableViewController).setManagers(self.graphManager,
fireManager: self.firManager, ebayManager: self.ebayManager, etsyManager: self.etsyManager )
(segue.destinationViewController as! NetworksTableViewController).setNetworkSelectFunctionality(true)
//print(self.categoryPicker.selectedRowInComponent(0))
}
}
@IBAction func cancelCategorySelection(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
}

113
Vendoo/CategoryCell.swift Normal file
View File

@ -0,0 +1,113 @@
//
// CategoryCell.swift
// Vendoo
//
// Created by Okechi Onyeje on 7/18/16.
// Copyright © 2016 Okechi Onyeje. All rights reserved.
//
import UIKit
class CategoryCell: UITableViewCell, UICollectionViewDelegate {
@IBOutlet weak var categoryName: UILabel!
@IBOutlet weak var networks: UICollectionView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
self.networks.delegate = self
self.networks.dataSource = self
self.networks.backgroundView?.backgroundColor = UIColor.whiteColor()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
// MARK: UICollectionViewDataSource
extension CategoryCell: UICollectionViewDataSource{
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of items
return 4
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell: UICollectionViewCell!
switch (indexPath.row){
case 0:
cell = collectionView.dequeueReusableCellWithReuseIdentifier("ebay", forIndexPath: indexPath)
break
case 1:
cell = collectionView.dequeueReusableCellWithReuseIdentifier("amazon", forIndexPath: indexPath)
break
case 2:
cell = collectionView.dequeueReusableCellWithReuseIdentifier("etsy", forIndexPath: indexPath)
break
default:
cell = collectionView.dequeueReusableCellWithReuseIdentifier("facebook", forIndexPath: indexPath)
break
}
// Configure the cell (in this case show or hide the cell depending on which network the item is being listed on)
return cell
}
}
// MARK: UICollectionViewDelegate
extension CategoryCell {
/*
// Uncomment this method to specify if the specified item should be highlighted during tracking
override func collectionView(collectionView: UICollectionView, shouldHighlightItemAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}
*/
/*
// Uncomment this method to specify if the specified item should be selected
override func collectionView(collectionView: UICollectionView, shouldSelectItemAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}
*/
/*
// Uncomment these methods to specify if an action menu should be displayed for the specified item, and react to actions performed on the item
override func collectionView(collectionView: UICollectionView, shouldShowMenuForItemAtIndexPath indexPath: NSIndexPath) -> Bool {
return false
}
override func collectionView(collectionView: UICollectionView, canPerformAction action: Selector, forItemAtIndexPath indexPath: NSIndexPath, withSender sender: AnyObject?) -> Bool {
return false
}
override func collectionView(collectionView: UICollectionView, performAction action: Selector, forItemAtIndexPath indexPath: NSIndexPath, withSender sender: AnyObject?) {
}
*/
}

View File

@ -15,7 +15,7 @@ import Locksmith
import AFNetworking import AFNetworking
typealias ServiceResponse = (JSON, NSError?) -> Void typealias ServiceResponse = (AnyObject?, NSError?) -> Void
class EtsyRESTAPIManager: NSObject { class EtsyRESTAPIManager: NSObject {
@ -73,7 +73,7 @@ class EtsyRESTAPIManager: NSObject {
EtsyRESTAPIManager.settingsDictionary = ([ EtsyRESTAPIManager.settingsDictionary = ([
"who_made":"i_did", "who_made":"i_did",
"is_supply":"true", "is_supply":true,
"when_made":"made_to_order" "when_made":"made_to_order"
] as Dictionary<String, AnyObject>) ] as Dictionary<String, AnyObject>)
@ -213,6 +213,13 @@ extension EtsyRESTAPIManager {
EtsyRESTAPIManager.settingsDictionary["userID"] = dict2[0]["login_name"]! EtsyRESTAPIManager.settingsDictionary["userID"] = dict2[0]["login_name"]!
NSUserDefaults.standardUserDefaults().setObject(EtsyRESTAPIManager.settingsDictionary, forKey: "etsySettings") NSUserDefaults.standardUserDefaults().setObject(EtsyRESTAPIManager.settingsDictionary, forKey: "etsySettings")
self.sendGETRequest("/shops/__SELF__/payment_templates", onCompletion: {
(data, error) -> Void in
self.sendGETRequest("/users/__SELF__/shipping/templates", onCompletion: nil)
})
} }
, failure: { error in , failure: { error in
print(error) print(error)
@ -392,48 +399,317 @@ extension EtsyRESTAPIManager {
} }
//sends the pregenerated url as a request to api service //sends the pregenerated url as a request to api service
func sendGETRequest(request: String, onCompletion: ServiceResponse) { func sendGETRequest(request: String, onCompletion: ServiceResponse?) {
let request = NSMutableURLRequest(URL: NSURL(string: request)!) /* let request = NSMutableURLRequest(URL: NSURL(string: request)!)
let session = NSURLSession.sharedSession() let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
if let jsonData = data {
let json:JSON = JSON(data: jsonData)
onCompletion(json, error)
} else {
onCompletion(nil, error)
}
})
task.resume()*/
self.oauthswift.client.get(self.baseURL + request,
success: {
(data, response) -> Void in
let dataString = NSString(data: data, encoding: NSUTF8StringEncoding)
let dict = self.convertStringToDictionary(dataString! as String)
print(dict)
print(response)
switch (request) {
case "/shops/__SELF__/payment_templates" :
if ((dict!["results"]!.isKindOfClass(NSNull.classForCoder()))) {
//@TODO: Put payment template parameters in function call
self.oauthswift.client.post(self.baseURL + "/shops/__SELF__/payment_templates",
parameters: [
"shop_id":"__SELF__",
],
headers: nil,
success: {
(data, response) -> Void in
let dataString = NSString(data: data, encoding: NSUTF8StringEncoding)
let dict = self.convertStringToDictionary(dataString! as String)
print(dict)
print(response)
onCompletion!(nil,nil)
},
failure: {
(error) -> Void in
print(error)
}
)
}
break
case "/users/__SELF__/shipping/templates" :
var dict2 = (dict!["results"] as! [[String : AnyObject]])
if ((dict!["results"]!.isKindOfClass(NSNull.classForCoder()))) {
//@TODO: Put payment template parameters in function call
self.oauthswift.client.post(self.baseURL + "/shipping/templates",
parameters: [
"title":"vendoo_default",
"origin_country_id":209,
"primary_cost":2.00,
"secondary_cost":1.00
],
headers: nil,
success: {
(data, response) -> Void in
let dataString = NSString(data: data, encoding: NSUTF8StringEncoding)
let dict = self.convertStringToDictionary(dataString! as String)
print(dict)
print(response)
},
failure: {
(error) -> Void in
print(error)
}
)
}else {
EtsyRESTAPIManager.settingsDictionary["shipping_template_id"] = dict2[0]["shipping_template_id"]!
NSUserDefaults.standardUserDefaults().setObject(EtsyRESTAPIManager.settingsDictionary, forKey: "etsySettings")
}
break
default:
break
}
},
failure: {
(error) -> Void in
print(error)
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
if let jsonData = data {
let json:JSON = JSON(data: jsonData)
onCompletion(json, error)
} else {
onCompletion(nil, error)
} }
}) )
task.resume()
} }
//sends the pregenerated url as a request to api service //sends the pregenerated url as a request to api service
func sendPOSTRequest(request: String, body: [String: AnyObject], onCompletion: ServiceResponse) { func sendPOSTRequest(request: String, var body: [String: AnyObject], onCompletion: ServiceResponse?) {
let request = NSMutableURLRequest(URL: NSURL(string: request)!)
// Set the method to POST /* let request = NSMutableURLRequest(URL: NSURL(string: request)!)
request.HTTPMethod = "POST"
do { // Set the method to POST
// Set the POST body for the request request.HTTPMethod = "POST"
let jsonBody = try NSJSONSerialization.dataWithJSONObject(body, options: .PrettyPrinted)
request.HTTPBody = jsonBody
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in do {
if let jsonData = data { // Set the POST body for the request
let json:JSON = JSON(data: jsonData) let jsonBody = try NSJSONSerialization.dataWithJSONObject(body, options: .PrettyPrinted)
onCompletion(json, nil) request.HTTPBody = jsonBody
} else { let session = NSURLSession.sharedSession()
onCompletion(nil, error)
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
if let jsonData = data {
let json:JSON = JSON(data: jsonData)
onCompletion(json, nil)
} else {
onCompletion(nil, error)
}
})
task.resume()
} catch {
// Create your personal error
onCompletion(nil, nil)
}*/
if(request.containsString("listings/") && request.containsString("/images")){
let url = NSURL(string: self.baseURL + request)!
let requested = NSMutableURLRequest(URL: url)
requested.HTTPMethod = "POST"
let boundary = "Boundary-\(NSUUID().UUIDString)"
/*var headers = oauthswift.client.credential.makeHeaders(url, method: OAuthSwiftHTTPRequest.Method.POST, parameters: ["Content-Type":"multipart/form-dataheader"]) // here with create the authentification headers
requested.addValue(self.apiKey, forHTTPHeaderField: "Authorization" )
//define the multipart request type
requested.addValue("\((body["image"] as! NSData).length)", forHTTPHeaderField: "Content-Length")
requested.addValue("bytes", forHTTPHeaderField: "Content-Transfer-Encoding")
requested.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
//requested.addValue(self.apiKey, forHTTPHeaderField: "API-KEY")
requested.HTTPBody = self.oauthswift.client.multiPartBodyFromParams(body, boundary: boundary)
/*let body1 = NSMutableData()
let fname = "main.jpg"
let mimetype = "image/jpg"
//define the data post parameter
body1.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body1.appendData("Content-Disposition:form-data; name=\"listing_id\"\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body1.appendData("\(body["listing_id"] as! Int)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body1.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body1.appendData("Content-Disposition:form-data; name=\"image\"; filename=\"\(fname)\"\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body1.appendData("Content-Type: \(mimetype)\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body1.appendData((body["image"] as! NSData))
body1.appendData("\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body1.appendData("--\(boundary)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
requested.HTTPBody = body1*/
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(requested) { data, response, error in
if nil != error {
// something went wrong
print(error)
onCompletion!(nil,nil)
switch (request) {
default:
break
}
}
else {
let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding)
let dict = self.convertStringToDictionary(dataString! as String)
print(dict)
print(response)
onCompletion!(nil, nil)
switch (request) {
default:
break
}
}
}
task.resume()*/
/*
//var headers = oauthswift.client.credential.makeHeaders(url, method: OAuthSwiftHTTPRequest.Method.POST, parameters: ["Content-Type":"multipart/form-dataheader"]) // here with create the authentification headers
// here add additional headers "Content-type", etc..
requested.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
requested.addValue("\((body["image"] as! NSData).length)", forHTTPHeaderField: "Content-Length")
requested.addValue("bytes", forHTTPHeaderField: "Content-Transfer-Encoding")
//requested.addValue("form-data; name='Main Image'; filename='mainImage.jpg'", forHTTPHeaderField: "Content-Disposition")
requested.HTTPBody = self.oauthswift.client.multiPartBodyFromParams(body, boundary: "-XXX--")
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(requested) { data, response, error in
if nil != error {
// something went wrong
print(error)
onCompletion!(nil,nil)
switch (request) {
default:
break
}
}
else {
let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding)
let dict = self.convertStringToDictionary(dataString! as String)
print(dict)
print(response)
onCompletion!(nil, nil)
switch (request) {
default:
break
}
}
}
task.resume()
*/
//body["oauth_verifier"] = (self.oauthswift.client.credential.oauth_verifier)
//@FIXME: multipart post request is returning with oauth signature invalid for uploading image in etsy
self.oauthswift.client.postMultiPartRequest(self.baseURL + request, method: OAuthSwiftHTTPRequest.Method.POST, parameters: body, success: {
(data, response) -> Void in
let dataString = NSString(data: data, encoding: NSUTF8StringEncoding)
let dict = self.convertStringToDictionary(dataString! as String)
print(dict)
print(response)
onCompletion!(nil, nil)
switch (request) {
default:
break
} }
})
task.resume()
} catch { },
// Create your personal error failure: {
onCompletion(nil, nil) (error) -> Void in
print(error)
onCompletion!(nil,nil)
switch (request) {
default:
break
}
}
)
}else {
self.oauthswift.client.post(self.baseURL + request, parameters: body, headers: nil,
success: {
(data, response) -> Void in
let dataString = NSString(data: data, encoding: NSUTF8StringEncoding)
let dict = self.convertStringToDictionary(dataString! as String)
print(dict)
print(response)
switch (request) {
case "/shipping/templates":
break
case "/listings":
var dict2 = (dict!["results"] as! [[String : AnyObject]])
print(((dict2[0]["listing_id"])!))
onCompletion!(dict2, nil)
break
default:
break
}
},
failure: {
(error) -> Void in
print(error)
switch (request) {
case "/shipping/templates":
break
case "/listings":
print(error.userInfo["Response-Body"])
if((error.userInfo["Response-Body"]!.isEqualToString("price is below listing fee."))) {
//@TODO: add alert to let user know that the price they have given is too low for etsy
}
break
default:
break
}
}
)
} }
} }
} }

View File

@ -21,7 +21,7 @@ protocol FacebookGraphAPIManagerDelegate {
} }
/* /*
NOTES: NOTE:
I am able to authorize application for use with facebook and deauthorize it while showing the toggle button switching back and forth, but during the last step of the process, for some reason NSUserDefault key for fbauthorized is not being called, in response handler, may need to run in a different thread I am able to authorize application for use with facebook and deauthorize it while showing the toggle button switching back and forth, but during the last step of the process, for some reason NSUserDefault key for fbauthorized is not being called, in response handler, may need to run in a different thread
NEED to figure out how to post picture and text as the same timeline post current can only upload item title, price and description. NEED to figure out how to post picture and text as the same timeline post current can only upload item title, price and description.
@ -158,27 +158,28 @@ extension FacebookGraphAPIManager {
var boolResult: Bool = false var boolResult: Bool = false
dispatch_async(dispatch_get_main_queue(), { dispatch_async(dispatch_get_main_queue(), {
graphRequest.startWithCompletionHandler({ graphRequest.startWithCompletionHandler({
(id, result, error) -> Void in (id, result, error) -> Void in
print(result) print(result)
}) })
}) })
return boolResult return boolResult
} }
//used to post to users timeline, path must start with '/' //used to post to users timeline, path must start with '/'
func makePOSTResquest(requestPath: String!, params: [NSObject: AnyObject]!){ func makePOSTResquest(requestPath: String!, var params: [NSObject: AnyObject]!, onComplete: ServiceResponse){
/*if(FBSDKAccessToken.currentAccessToken() != nil && FBSDKAccessToken.currentAccessToken().hasGranted("pubish_actions")){*/ if(FBSDKAccessToken.currentAccessToken() != nil && FBSDKAccessToken.currentAccessToken().hasGranted("publish_actions")){
params["access_token"] = self.apiKey + "|" + self.apiSecret
let graphRequest: FBSDKGraphRequest = FBSDKGraphRequest(graphPath: requestPath, parameters: params, HTTPMethod: "POST") let graphRequest: FBSDKGraphRequest = FBSDKGraphRequest(graphPath: requestPath + "?access_token=" + FBSDKAccessToken.currentAccessToken().tokenString, parameters: params, HTTPMethod: "POST")
graphRequest.startWithCompletionHandler({ graphRequest.startWithCompletionHandler({
(id, result, error) -> Void in (id, result, error) -> Void in
@ -186,21 +187,22 @@ extension FacebookGraphAPIManager {
if(error == nil){ if(error == nil){
print(result["id"]) print(result["id"])
self.delegate?.listingUploadedFB((result["id"] as? String)!) //self.delegate?.listingUploadedFB((result["id"] as? String)!)
print(result) print(result)
onComplete((result["id"] as? String)!, nil)
} }
else{ else{
print(error)
} }
//save id in firebase so retrieval can be done later //save id in firebase so retrieval can be done later
}) })
//} }
/*else{ /*else{
print("must reauthenticate facebook") print("must reauthenticate facebook")
}*/ }
} */}
//used to delete permissions and listings from users timeline, path must start with '/' //used to delete permissions and listings from users timeline, path must start with '/'
func makeDELETIONResquest(requestPath: String!, params: [NSObject: AnyObject]!) -> Bool{ func makeDELETIONResquest(requestPath: String!, params: [NSObject: AnyObject]!) -> Bool{

View File

@ -34,16 +34,6 @@ class HomeViewController: UITabBarController {
for (key, values) in listingDict! { for (key, values) in listingDict! {
let serviceGroup: dispatch_group_t = dispatch_group_create() let serviceGroup: dispatch_group_t = dispatch_group_create()
//@TODO: this is now getting all images but it is only displaying the last retrieved listings's set of images
/*dispatch_group_notify(countGroup, dispatch_get_main_queue(), {
print(HomeViewController.completionCount)
HomeViewController.completionCount += 1
if(HomeViewController.completionCount == 4){
HomeViewController.completionCount = 0
dispatch_group_leave(serviceGroup)
}
})*/
self.firebaseManager.ref.observeSingleEventOfType(.Value, withBlock: { snapshot in self.firebaseManager.ref.observeSingleEventOfType(.Value, withBlock: { snapshot in
let databaseDict = snapshot.value as! [String : AnyObject] let databaseDict = snapshot.value as! [String : AnyObject]
@ -52,7 +42,6 @@ class HomeViewController: UITabBarController {
let mainListingImage = storageRef.child("images/\(key)/main.jpg") let mainListingImage = storageRef.child("images/\(key)/main.jpg")
//@TODO: add in logic to programmatically retrieve each stored image and store in listing object as a way to display each image
dispatch_group_enter(serviceGroup) dispatch_group_enter(serviceGroup)
mainListingImage.dataWithMaxSize(10 * 1024 * 1024, completion: { mainListingImage.dataWithMaxSize(10 * 1024 * 1024, completion: {
(dataMain, error) -> Void in (dataMain, error) -> Void in

View File

@ -23,7 +23,7 @@ class ItemImagePickerViewController: UIViewController {
@IBOutlet weak var possibleItemImage3: UIImageView! @IBOutlet weak var possibleItemImage3: UIImageView!
@IBOutlet weak var possibleItemImage4: UIImageView! @IBOutlet weak var possibleItemImage4: UIImageView!
@IBOutlet weak var possibleItemImage5: UIImageView! @IBOutlet weak var possibleItemImage5: UIImageView!
@IBOutlet weak var itemQuantity: UITextField!
@IBOutlet weak var itemName: UITextField! @IBOutlet weak var itemName: UITextField!
@IBOutlet weak var itemDescription: UITextView! @IBOutlet weak var itemDescription: UITextView!
@IBOutlet weak var itemPrice: UITextField! @IBOutlet weak var itemPrice: UITextField!
@ -48,6 +48,7 @@ class ItemImagePickerViewController: UIViewController {
self.categoryPicker.dataSource = self self.categoryPicker.dataSource = self
self.itemDescription.delegate = self self.itemDescription.delegate = self
self.itemName.delegate = self self.itemName.delegate = self
self.itemQuantity.delegate = self
self.itemPrice.delegate = self self.itemPrice.delegate = self
self.picker.delegate = self self.picker.delegate = self
@ -91,13 +92,13 @@ extension ItemImagePickerViewController {
// Get the new view controller using segue.destinationViewController. // Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller. // Pass the selected object to the new view controller.
if(segue.identifier == "SelectNetworkSegue"){ if(segue.identifier == "CategoriesSegue"){
print(self.itemName.text!) print(self.itemName.text!)
print(self.itemDescription.text!) print(self.itemDescription.text!)
print(self.possibleItemImageMain.image) print(self.possibleItemImageMain.image)
print(self.itemPrice.text!) print(self.itemPrice.text!)
var dict: Dictionary<String, AnyObject!> = ["title":self.itemName.text!, "description":self.itemDescription.text!, "price":self.itemPrice.text!, "category":self.pickerData[self.categoryPicker.selectedRowInComponent(0)]] var dict: Dictionary<String, AnyObject!> = ["title":self.itemName.text!, "description":self.itemDescription.text!, "price":self.itemPrice.text!, "quantity":self.itemQuantity.text!]
var counter = 0 var counter = 0
var images: [UIImageView] = [] var images: [UIImageView] = []
for bool in self.itemImagesSelections { for bool in self.itemImagesSelections {
@ -124,12 +125,13 @@ extension ItemImagePickerViewController {
} }
dict["pictures"] = images dict["pictures"] = images
(segue.destinationViewController as! NetworksTableViewController).setListingDictionary(dict) (segue.destinationViewController as! CategoriesTableViewController).setListingDictionary(dict)
(segue.destinationViewController as! NetworksTableViewController).setManagers(((self.tabBarController as? HomeViewController)?.fbGraphManager)!, (segue.destinationViewController as! CategoriesTableViewController).setManagers(((self.tabBarController as? HomeViewController)?.fbGraphManager)!,
fireManager: ((self.tabBarController as? HomeViewController)?.firebaseManager)!, ebayManager: ((self.tabBarController as? HomeViewController)?.ebayGraphManager)! ) fireManager: ((self.tabBarController as? HomeViewController)?.firebaseManager)!, ebayManager: ((self.tabBarController as? HomeViewController)?.ebayGraphManager)!,
etsyManager: ((self.tabBarController as? HomeViewController)?.etsyManager)!)
(segue.destinationViewController as! NetworksTableViewController).setNetworkSelectFunctionality(true) //(segue.destinationViewController as! NetworksTableViewController).setNetworkSelectFunctionality(true)
print(self.categoryPicker.selectedRowInComponent(0)) //print(self.categoryPicker.selectedRowInComponent(0))
} }

View File

@ -14,11 +14,12 @@
*/ */
import UIKit import UIKit
//@TODO: Need to make multiple images work for etsy and facebook and need to implement multiple images saving to firebase
class ListingPreviewViewController: UIViewController { class ListingPreviewViewController: UIViewController {
//IBOutlets //IBOutlets
@IBOutlet weak var containerScrollView: UIScrollView! @IBOutlet weak var containerScrollView: UIScrollView!
@IBOutlet weak var itemQuantity: UITextView!
@IBOutlet weak var itemPicture: UIImageView! @IBOutlet weak var itemPicture: UIImageView!
@IBOutlet weak var itemTitle: UITextView! @IBOutlet weak var itemTitle: UITextView!
@IBOutlet weak var itemDescription: UITextView! @IBOutlet weak var itemDescription: UITextView!
@ -31,9 +32,11 @@ class ListingPreviewViewController: UIViewController {
private var graphManager: FacebookGraphAPIManager! = nil private var graphManager: FacebookGraphAPIManager! = nil
private var firManager: FirebaseManager! = nil private var firManager: FirebaseManager! = nil
private var ebayManager: EbayWebServiceManager! = nil private var ebayManager: EbayWebServiceManager! = nil
private var etsyManager: EtsyRESTAPIManager! = nil
private var itemListingDictionary: Dictionary<String, AnyObject>! = Dictionary<String, AnyObject>() private var itemListingDictionary: Dictionary<String, AnyObject>! = Dictionary<String, AnyObject>()
private var alert = UIAlertController(title: "Listing Published", message: "Your listing has been published", preferredStyle: .Alert) private var alert = UIAlertController(title: "Listing Published", message: "Your listing has been published", preferredStyle: .Alert)
private var lastListingKey: String! private var lastListingKey: String!
private var newInProgressListing: Dictionary<String,AnyObject> = Dictionary<String, AnyObject>()
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
@ -44,7 +47,7 @@ class ListingPreviewViewController: UIViewController {
self.networks.delegate = self self.networks.delegate = self
self.networks.dataSource = self self.networks.dataSource = self
self.networks.backgroundView?.backgroundColor = UIColor.whiteColor() self.networks.backgroundView?.backgroundColor = UIColor.whiteColor()
self.graphManager.delegate = self //self.graphManager.delegate = self
} }
override func viewDidAppear(animated: Bool) { override func viewDidAppear(animated: Bool) {
@ -64,6 +67,7 @@ class ListingPreviewViewController: UIViewController {
self.itemDescription.text = self.itemListingDictionary["description"] as! String self.itemDescription.text = self.itemListingDictionary["description"] as! String
self.itemPrice.text = self.itemListingDictionary["price"] as! String self.itemPrice.text = self.itemListingDictionary["price"] as! String
self.itemCategory.text = self.itemListingDictionary["category"] as! String self.itemCategory.text = self.itemListingDictionary["category"] as! String
self.itemQuantity.text = self.itemListingDictionary["quantity"] as! String
} }
func setDictionary(netdictionary:Dictionary<String, Bool>, itemdictionary: Dictionary<String, AnyObject!>){ func setDictionary(netdictionary:Dictionary<String, Bool>, itemdictionary: Dictionary<String, AnyObject!>){
@ -71,10 +75,11 @@ class ListingPreviewViewController: UIViewController {
self.itemListingDictionary = itemdictionary self.itemListingDictionary = itemdictionary
} }
func setManagers(fbManager: FacebookGraphAPIManager, fireManager: FirebaseManager, ebayManager: EbayWebServiceManager){ func setManagers(fbManager: FacebookGraphAPIManager, fireManager: FirebaseManager, ebayManager: EbayWebServiceManager, etsyManager: EtsyRESTAPIManager){
self.graphManager = fbManager self.graphManager = fbManager
self.firManager = fireManager self.firManager = fireManager
self.ebayManager = ebayManager self.ebayManager = ebayManager
self.etsyManager = etsyManager
} }
@ -92,26 +97,33 @@ class ListingPreviewViewController: UIViewController {
vc.itemPrice.text? = self.itemPrice.text vc.itemPrice.text? = self.itemPrice.text
vc.itemDescription.text? = self.itemDescription.text vc.itemDescription.text? = self.itemDescription.text
vc.possibleItemImageMain = self.itemPicture vc.possibleItemImageMain = self.itemPicture
vc.itemQuantity.text? = self.itemQuantity.text
} }
} }
} }
extension Dictionary {
//MARK: - FacebookGraphAPIManagerDelegate methods mutating func update(other:Dictionary) {
extension ListingPreviewViewController: FacebookGraphAPIManagerDelegate { for (key,value) in other {
func listingUploadedFB(fbID: String) { self.updateValue(value, forKey:key)
}
self.firManager.ref.child("Users").child("\(self.firManager.user_email)").child("user_Listings").child(self.lastListingKey).updateChildValues(["network_listing_IDs":["fbID":fbID]])
self.alert.title = "Listing Published"
self.alert.message = "Your listing has been published to facebook"
self.presentViewController(self.alert, animated: true, completion: nil)
} }
} }
/*
//MARK: - FacebookGraphAPIManagerDelegate methods
extension ListingPreviewViewController: FacebookGraphAPIManagerDelegate {
func listingUploadedFB(fbID: String) {
self.firManager.ref.child("Users").child("\(self.firManager.user_email)").child("user_Listings").child(self.lastListingKey).updateChildValues(["network_listing_IDs":["fbID":fbID]])
self.alert.title = "Listing Published"
self.alert.message = "Your listing has been published to facebook"
self.presentViewController(self.alert, animated: true, completion: nil)
}
}
*/
//MARK: - IBActions //MARK: - IBActions
extension ListingPreviewViewController { extension ListingPreviewViewController {
@ -125,6 +137,11 @@ extension ListingPreviewViewController {
self.presentViewController(alert, animated: true, completion: nil) self.presentViewController(alert, animated: true, completion: nil)
}else{ }else{
self.networksDictionary["areNetworksChosen"] = true
//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()
//post to ebay //post to ebay
if(self.networksDictionary["ebay"]!){ if(self.networksDictionary["ebay"]!){
@ -138,82 +155,241 @@ extension ListingPreviewViewController {
} }
//post to etsy //post to etsy
if(self.networksDictionary["etsy"]!){ if(self.networksDictionary["etsy"]!){
dispatch_group_enter(postingGroup)
var categoryCode: Int!
switch self.itemCategory.text {
case "Accessories":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["accessories"] as! Int
break
case "Art":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["art"] as! Int
break
case "Bath & Beauty":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["bath_and_beauty"] as! Int
break
case "Bags & Purses":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["bags_and_purses"] as! Int
break
case "Books":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["books_and_zines"] as! Int
break
case "Candles":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["candles"] as! Int
break
case "Ceramics & Pottery":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["ceramics_and_pottery"] as! Int
break
case "Children":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["children"] as! Int
break
case "Clothing":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["clothing"] as! Int
break
case "Crochet":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["crochet"] as! Int
break
case "Dolls & Miniatures":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["dolls_and_miniatures"] as! Int
break
case "Everything Else":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["everything_else"] as! Int
break
case "Furniture":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["furniture"] as! Int
break
case "Geekery":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["geekery"] as! Int
break
case "Glass":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["glass"] as! Int
break
case "Holidays":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["holidays"] as! Int
break
case "Houseware":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["housewares"] as! Int
break
case "Jewelry":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["jewelry"] as! Int
break
case "Knitting":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["knitting"] as! Int
break
case "Music":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["music"] as! Int
break
case "Needlecraft":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["needlecraft"] as! Int
break
case "Paper Goods":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["paper_goods"] as! Int
break
case "Patterns":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["patterns"] as! Int
break
case "Plants and Edibles":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["plants_and_edibles"] as! Int
break
case "Quilts":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["quilts"] as! Int
break
case "Supplies":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["supplies"] as! Int
break
case "Toys":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["toys"] as! Int
break
case "Vintage":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["vintage"] as! Int
break
case "Wedding":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["weddings"] as! Int
break
case "Woodworking":
categoryCode = EtsyRESTAPIManager.settingsDictionary["categories"]!["woodworking"] as! Int
break
default:
break
}
let body: [String: AnyObject] = [ "title": self.itemTitle.text,
"quantity":self.itemQuantity.text,
"description":self.itemDescription.text,
"price":self.itemPrice.text,
"category_id":categoryCode,
"who_made": EtsyRESTAPIManager.settingsDictionary["who_made"] as! String,
"is_supply": EtsyRESTAPIManager.settingsDictionary["is_supply"]!,
"when_made": EtsyRESTAPIManager.settingsDictionary["when_made"] as! String,
"shipping_template_id": EtsyRESTAPIManager.settingsDictionary["shipping_template_id"] as! Int,
"state":"draft"
]
self.etsyManager.sendPOSTRequest("/listings", body: body, onCompletion: {
(dict, error) -> Void in
var results = (dict as! [[String : AnyObject]])[0]
if((self.newInProgressListing["networkIDs"] == nil)){
self.newInProgressListing["networkIDs"] = Dictionary<String, AnyObject>()
}
var networkIDs = (self.newInProgressListing["networkIDs"] as! Dictionary<String, AnyObject>)
networkIDs["etsy"] = results["listing_id"] as? Int
self.newInProgressListing["networkIDs"] = networkIDs
let imageBody = ["listing_id": networkIDs["etsy"] as! Int,
//"type":"image/jpg",
"image": UIImageJPEGRepresentation(self.itemPicture.image!, 0.45)!]
self.etsyManager.sendPOSTRequest(("listings/\(networkIDs["etsy"] as! Int)/images"), body: imageBody, onCompletion: {
(dict, error) -> Void in
dispatch_group_leave(postingGroup)
})
})
} }
//post to facebook
if(self.networksDictionary["facebook"]!){
dispatch_group_enter(postingGroup)
//save listing to private user path in firebase let tmpDirURL = NSURL.fileURLWithPath(NSTemporaryDirectory(), isDirectory: true)
let newListingRef = self.firManager.ref.child("Users").child("\(self.firManager.user_email)").child("user_Listings").childByAutoId() let fileURL = tmpDirURL.URLByAppendingPathComponent("main").URLByAppendingPathExtension("jpg")
self.networksDictionary["areNetworksChosen"] = true print("FilePath: \(fileURL.path!)")
let listing: Dictionary<String,AnyObject> = ["listingID": newListingRef.key, do {
"seller email": (NSUserDefaults.standardUserDefaults().objectForKey("email") as? String)!, try UIImageJPEGRepresentation(self.itemPicture.image!, 0.45)!.writeToFile(fileURL.path!, options: NSDataWritingOptions.AtomicWrite)
"listingTitle": self.itemTitle.text, }catch{
"listingPrice": self.itemPrice.text, (error)
"listingCategory": self.itemCategory.text, print(error)
"listingDescription": self.itemDescription.text, }
"numberOfSupportingImages" : ((self.itemListingDictionary["pictures"] as? [UIImageView])?.count)! - 1,
"isListingDraft": false,
"networks": self.networksDictionary]
self.firManager.ref.observeSingleEventOfType(.Value, withBlock: { snapshot in //let parameters: Dictionary<String, AnyObject> = ["message":("**"+self.itemTitle.text!+"**\n\n"+"Price: "+self.itemPrice.text! + "\n\n"+self.itemDescription.text!)]
let databaseDict = snapshot.value as! [String : AnyObject] let parameters: Dictionary<String, AnyObject> = ["Source": UIImageJPEGRepresentation(self.itemPicture.image!, 0.45)!, "published":false]
let storageRef = self.firManager.storage.referenceForURL((databaseDict["image_storage"] as? String)!) self.lastListingKey = newListingRef.key
self.graphManager.makePOSTResquest("me/photos", params: parameters, onComplete: {
//change code to new multi-image saving (imageId, error) -> Void in
let listingImageRef = storageRef.child("images/\(newListingRef.key)"+".jpg")
listingImageRef.putData(UIImageJPEGRepresentation(self.itemPicture.image!, 0.8)!, metadata: nil,completion:
{(metadata, error) -> Void in
newListingRef.setValue(listing)
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)}))
let parameters: Dictionary<String, AnyObject> = ["message":("**"+self.itemTitle.text!+"**\n\n"+"Price: "+self.itemPrice.text! + "\n\n"+self.itemDescription.text!)]
//post to facebook
if(self.networksDictionary["facebook"]!){
//need to reverse process and upload to firebase last so that all network listing id's can be saved to firebase for notification access.
self.lastListingKey = newListingRef.key
self.graphManager.makePOSTResquest("me/feed", params: parameters)
//let parameters: Dictionary<String, AnyObject> = ["":""]
var listingParams: Dictionary<String, AnyObject> = ["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
if((self.newInProgressListing["networkIDs"] == nil)){
self.newInProgressListing["networkIDs"] = Dictionary<String, AnyObject>()
} }
var networkIDs = (self.newInProgressListing["networkIDs"] as! Dictionary<String, AnyObject>)
networkIDs["facebook"] = listingId as! String
self.newInProgressListing["networkIDs"] = networkIDs
dispatch_group_leave(postingGroup)
})
/*
*/
//register new listing id in global path of firebase root'
self.firManager.ref.child("Global_listings").child(newListingRef.key).setValue(newListingRef.key)
}) })
//let parameters: Dictionary<String, AnyObject> = ["":""]
}
dispatch_group_notify(postingGroup, dispatch_get_main_queue(), {
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,
"listingDescription": self.itemDescription.text,
"numberOfSupportingImages" : ((self.itemListingDictionary["pictures"] as? [UIImageView])?.count)! - 1,
"isListingDraft": false,
"networks": self.networksDictionary])
self.firManager.ref.observeSingleEventOfType(.Value, withBlock: { snapshot in
let databaseDict = snapshot.value as! [String : AnyObject]
let storageRef = self.firManager.storage.referenceForURL((databaseDict["image_storage"] as? String)!)
//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
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)}))
//register new listing id in global path of firebase root'
self.firManager.ref.child("Global_listings").child(newListingRef.key).setValue(newListingRef.key)
})
})
}) })
} }

View File

@ -377,7 +377,7 @@
<color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/> <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="1" minimumFontSize="17" id="otX-Vg-NmH" userLabel="price"> <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="1" minimumFontSize="17" id="otX-Vg-NmH" userLabel="quantity">
<rect key="frame" x="136" y="81" width="88" height="21"/> <rect key="frame" x="136" y="81" width="88" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/> <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/>
@ -418,6 +418,9 @@
<state key="normal" title="Choose Category"> <state key="normal" title="Choose Category">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state> </state>
<connections>
<segue destination="dll-3G-IQL" kind="modal" identifier="CategoriesSegue" id="IJp-Zc-nNh"/>
</connections>
</button> </button>
</subviews> </subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
@ -437,6 +440,7 @@
<outlet property="itemDescription" destination="osz-kc-aer" id="qN7-31-UDs"/> <outlet property="itemDescription" destination="osz-kc-aer" id="qN7-31-UDs"/>
<outlet property="itemName" destination="QIK-Tn-AHX" id="YsY-i0-9oR"/> <outlet property="itemName" destination="QIK-Tn-AHX" id="YsY-i0-9oR"/>
<outlet property="itemPrice" destination="PQC-e5-VHo" id="2Xi-s1-i8r"/> <outlet property="itemPrice" destination="PQC-e5-VHo" id="2Xi-s1-i8r"/>
<outlet property="itemQuantity" destination="otX-Vg-NmH" id="NAV-nK-usy"/>
<outlet property="possibleItemImage2" destination="smo-O2-fSf" id="3sX-Jr-S82"/> <outlet property="possibleItemImage2" destination="smo-O2-fSf" id="3sX-Jr-S82"/>
<outlet property="possibleItemImage3" destination="ZfH-0j-qER" id="VGg-RB-whX"/> <outlet property="possibleItemImage3" destination="ZfH-0j-qER" id="VGg-RB-whX"/>
<outlet property="possibleItemImage4" destination="Krl-yM-1dX" id="21h-RC-hKj"/> <outlet property="possibleItemImage4" destination="Krl-yM-1dX" id="21h-RC-hKj"/>
@ -1025,6 +1029,7 @@
<outlet property="itemDescription" destination="u7b-0N-xli" id="d1N-lw-6sw"/> <outlet property="itemDescription" destination="u7b-0N-xli" id="d1N-lw-6sw"/>
<outlet property="itemPicture" destination="K0z-pp-hzH" id="6Zm-Ig-Rm3"/> <outlet property="itemPicture" destination="K0z-pp-hzH" id="6Zm-Ig-Rm3"/>
<outlet property="itemPrice" destination="Jh9-KG-0Yt" id="nbh-aq-W0b"/> <outlet property="itemPrice" destination="Jh9-KG-0Yt" id="nbh-aq-W0b"/>
<outlet property="itemQuantity" destination="shU-ew-26O" id="yNg-ov-7q5"/>
<outlet property="itemTitle" destination="WuZ-2K-lz7" id="EkY-UX-lSj"/> <outlet property="itemTitle" destination="WuZ-2K-lz7" id="EkY-UX-lSj"/>
<outlet property="networks" destination="MS3-nc-8va" id="duP-BL-Qp2"/> <outlet property="networks" destination="MS3-nc-8va" id="duP-BL-Qp2"/>
<segue destination="0di-oP-cGQ" kind="modal" identifier="EditListingSegue" id="rkZ-c8-XJc"/> <segue destination="0di-oP-cGQ" kind="modal" identifier="EditListingSegue" id="rkZ-c8-XJc"/>
@ -1995,7 +2000,7 @@
<!--categories--> <!--categories-->
<scene sceneID="e5k-kQ-o33"> <scene sceneID="e5k-kQ-o33">
<objects> <objects>
<viewController title="categories" id="dll-3G-IQL" sceneMemberID="viewController"> <viewController title="categories" id="dll-3G-IQL" customClass="CategoriesTableViewController" customModule="Vendoo" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="S0F-gj-Dpz"> <view key="view" contentMode="scaleToFill" id="S0F-gj-Dpz">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/> <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@ -2005,549 +2010,100 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<prototypes> <prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="NVz-An-tWd"> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="CategoryCell" id="NVz-An-tWd" customClass="CategoryCell" customModule="Vendoo" customModuleProvider="target">
<rect key="frame" x="0.0" y="28" width="375" height="44"/> <rect key="frame" x="0.0" y="28" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="NVz-An-tWd" id="YDe-Pd-Fu2"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="NVz-An-tWd" id="YDe-Pd-Fu2">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/> <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Antiques" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="pKO-dl-Ggb"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="pKO-dl-Ggb">
<rect key="frame" x="8" y="11" width="359" height="21"/> <rect key="frame" x="8" y="11" width="175" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/> <fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
</subviews> <collectionView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" id="7Xh-YZ-bvC">
</tableViewCellContentView> <rect key="frame" x="191" y="-9" width="176" height="61"/>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="Ntj-Ll-Fxf">
<rect key="frame" x="0.0" y="72" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ntj-Ll-Fxf" id="rhn-SZ-asL">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Art" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="TcO-R4-RNm">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="5" minimumInteritemSpacing="5" id="eY7-Fs-6Kn">
<nil key="highlightedColor"/> <size key="itemSize" width="40" height="40"/>
</label> <size key="headerReferenceSize" width="0.0" height="0.0"/>
</subviews> <size key="footerReferenceSize" width="0.0" height="0.0"/>
</tableViewCellContentView> <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
</tableViewCell> </collectionViewFlowLayout>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="40E-Ix-HeI"> <cells>
<rect key="frame" x="0.0" y="116" width="375" height="44"/> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="ebay" id="mCV-zx-xeL">
<autoresizingMask key="autoresizingMask"/> <rect key="frame" x="0.0" y="10.5" width="40" height="40"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="40E-Ix-HeI" id="mS4-Gf-voB"> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<autoresizingMask key="autoresizingMask"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
<subviews> <autoresizingMask key="autoresizingMask"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Baby" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="ixK-Y9-Gez"> <subviews>
<rect key="frame" x="8" y="11" width="359" height="21"/> <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ebay_icon" id="lUG-4k-oqy">
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> </imageView>
<nil key="highlightedColor"/> </subviews>
</label> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</subviews> </view>
</tableViewCellContentView> <size key="customSize" width="40" height="40"/>
</tableViewCell> </collectionViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="ccy-c5-GEb"> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="1" contentMode="center" reuseIdentifier="amazon" id="LkM-kC-Zpp">
<rect key="frame" x="0.0" y="160" width="375" height="44"/> <rect key="frame" x="45" y="10.5" width="40" height="40"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ccy-c5-GEb" id="JJB-uf-Y7r"> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Books" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Th8-iJ-Hfh"> <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="amazon_icon" id="BDv-y8-P6w">
<rect key="frame" x="8" y="11" width="359" height="21"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/> </imageView>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> </subviews>
<nil key="highlightedColor"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</label> </view>
</subviews> </collectionViewCell>
</tableViewCellContentView> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="2" contentMode="center" reuseIdentifier="etsy" id="LmS-RK-wqT">
</tableViewCell> <rect key="frame" x="90" y="10.5" width="40" height="40"/>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="xaT-7C-dIj"> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<rect key="frame" x="0.0" y="204" width="375" height="44"/> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<autoresizingMask key="autoresizingMask"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="xaT-7C-dIj" id="C70-VY-weq"> <autoresizingMask key="autoresizingMask"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/> <subviews>
<autoresizingMask key="autoresizingMask"/> <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="etsy_icon" id="Ic1-xd-4Oc">
<subviews> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Business &amp; Industrial" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="jBx-Pm-q17"> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<rect key="frame" x="8" y="11" width="359" height="21"/> </imageView>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> </subviews>
<fontDescription key="fontDescription" type="system" pointSize="17"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> </view>
<nil key="highlightedColor"/> </collectionViewCell>
</label> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="3" contentMode="center" reuseIdentifier="facebook" id="E6f-Dd-zq3">
</subviews> <rect key="frame" x="135" y="10.5" width="40" height="40"/>
</tableViewCellContentView> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
</tableViewCell> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="3D5-Dr-Pdi"> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
<rect key="frame" x="0.0" y="248" width="375" height="44"/> <autoresizingMask key="autoresizingMask"/>
<autoresizingMask key="autoresizingMask"/> <subviews>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="3D5-Dr-Pdi" id="jCw-pG-d4H"> <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="facebook_icon" id="aKc-GO-v8c">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews> </imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Cameras &amp; Photo" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="C0r-MH-nLQ"> </subviews>
<rect key="frame" x="8" y="11" width="359" height="21"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> </view>
<fontDescription key="fontDescription" type="system" pointSize="17"/> </collectionViewCell>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> </cells>
<nil key="highlightedColor"/> </collectionView>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="mUF-mg-8kA">
<rect key="frame" x="0.0" y="292" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="mUF-mg-8kA" id="Rcd-Mo-ed4">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Cell Phones &amp; Accessories" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="src-qw-4pB">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="PaM-CM-bCs">
<rect key="frame" x="0.0" y="336" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="PaM-CM-bCs" id="cTH-g8-bJj">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Clothing, Shoes, and Accessories" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="J1P-lX-Zrf">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="YUW-83-PU9">
<rect key="frame" x="0.0" y="380" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="YUW-83-PU9" id="Aau-3T-boW">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Coins &amp; Money" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="hgs-FM-mQi">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="039-O5-LjA">
<rect key="frame" x="0.0" y="424" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="039-O5-LjA" id="wiW-Zm-908">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Collectibles" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="AQp-kB-3sa">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="kMZ-gc-Lx7">
<rect key="frame" x="0.0" y="468" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="kMZ-gc-Lx7" id="lQk-Rd-HtY">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Computers/Tablets" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="xhi-9e-TFE">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="Jqw-Vp-w7a">
<rect key="frame" x="0.0" y="512" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Jqw-Vp-w7a" id="gW8-nd-qgd">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Electronics" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="M4u-u2-Vsf">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="eQS-uV-OJz">
<rect key="frame" x="0.0" y="556" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="eQS-uV-OJz" id="kA8-Uk-ntR">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Crafts" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="ysv-UF-n07">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="7uP-rh-iva">
<rect key="frame" x="0.0" y="600" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="7uP-rh-iva" id="h9x-3M-sDz">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Dolls &amp; Bears" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="7U9-tC-28N">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="BfI-jN-aeW">
<rect key="frame" x="0.0" y="644" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="BfI-jN-aeW" id="PdD-og-7ea">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Movies" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="ZbO-Cu-3qE">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="ivF-Jg-tnw">
<rect key="frame" x="0.0" y="688" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ivF-Jg-tnw" id="MfN-Sf-7E1">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Automototive" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="kjO-sz-XAD">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="OuQ-it-xcA">
<rect key="frame" x="0.0" y="732" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="OuQ-it-xcA" id="vug-eG-R4W">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Entertainment" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="rvs-yt-mTa">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="BYm-Yu-DYN">
<rect key="frame" x="0.0" y="776" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="BYm-Yu-DYN" id="TXn-0h-UFJ">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Gift Cards &amp; Coupons" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="8nh-ka-9TH">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="pqh-fT-I3x">
<rect key="frame" x="0.0" y="820" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="pqh-fT-I3x" id="o8K-hY-yFT">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Health &amp; Beauty" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="lcH-u5-BVT">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="9Ci-T0-1PW">
<rect key="frame" x="0.0" y="864" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="9Ci-T0-1PW" id="XvS-TS-bXw">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Home &amp; Garden" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="an8-tQ-ENC">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="24Q-ao-tWX">
<rect key="frame" x="0.0" y="908" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="24Q-ao-tWX" id="Sih-n9-qyZ">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Jewelry &amp; Watches" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Yib-P7-lg5">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="SyD-fV-5BY">
<rect key="frame" x="0.0" y="952" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="SyD-fV-5BY" id="LVY-tt-iyV">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Music" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="8Cy-hd-ZXl">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="Qro-iK-T2O">
<rect key="frame" x="0.0" y="996" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Qro-iK-T2O" id="uQZ-3g-BL2">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Musical Instruments" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="5eM-1H-kcL">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="JVp-9P-ose">
<rect key="frame" x="0.0" y="1040" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="JVp-9P-ose" id="g6N-ps-fnQ">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Pet Supplies" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="OWu-Ji-Y5N">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="485-8x-Vo7">
<rect key="frame" x="0.0" y="1084" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="485-8x-Vo7" id="N9K-FS-v1M">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Pottery &amp; Glass" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Ylh-YR-XaL">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="ip7-np-iYl">
<rect key="frame" x="0.0" y="1128" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ip7-np-iYl" id="wiG-Ep-epk">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sporting Goods" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Ew9-xO-S3Y">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="fVV-go-DzF">
<rect key="frame" x="0.0" y="1172" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="fVV-go-DzF" id="Mu3-U9-SNV">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sports Memorabelia" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="U0h-90-uxc">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="MJX-2n-HmR">
<rect key="frame" x="0.0" y="1216" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="MJX-2n-HmR" id="wcK-uX-HS6">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Stamps" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="vxc-EW-57O">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="UrK-h3-wHG">
<rect key="frame" x="0.0" y="1260" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="UrK-h3-wHG" id="iBb-nL-AbE">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Tickets" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="9Lm-Qe-XzR">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="8aZ-II-Ynw">
<rect key="frame" x="0.0" y="1304" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="8aZ-II-Ynw" id="75o-Oz-GXZ">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Toys &amp; Hobbies" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="v8v-qT-40j">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="IHn-XQ-FhV">
<rect key="frame" x="0.0" y="1348" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="IHn-XQ-FhV" id="z5Y-M0-UmJ">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Travel" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="s3T-E7-WHS">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="Kbi-d3-J0i">
<rect key="frame" x="0.0" y="1392" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Kbi-d3-J0i" id="CKR-T9-qAa">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Video Games" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="uO3-Tf-f4J">
<rect key="frame" x="8" y="11" width="359" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews> </subviews>
</tableViewCellContentView> </tableViewCellContentView>
<connections>
<outlet property="categoryName" destination="pKO-dl-Ggb" id="dlI-42-CEd"/>
<outlet property="networks" destination="7Xh-YZ-bvC" id="cYh-sp-kVZ"/>
</connections>
</tableViewCell> </tableViewCell>
</prototypes> </prototypes>
<sections/> <sections/>
@ -2560,6 +2116,9 @@
<rect key="frame" x="8" y="16" width="46" height="30"/> <rect key="frame" x="8" y="16" width="46" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<state key="normal" title="Back"/> <state key="normal" title="Back"/>
<connections>
<action selector="cancelCategorySelection:" destination="dll-3G-IQL" eventType="touchUpInside" id="k0I-oY-cmp"/>
</connections>
</button> </button>
</subviews> </subviews>
<color key="backgroundColor" red="0.2784313725" green="0.80392156859999997" blue="0.68235294120000001" alpha="1" colorSpace="calibratedRGB"/> <color key="backgroundColor" red="0.2784313725" green="0.80392156859999997" blue="0.68235294120000001" alpha="1" colorSpace="calibratedRGB"/>
@ -2568,10 +2127,14 @@
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</view> </view>
<simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina47"/> <simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina47"/>
<connections>
<outlet property="table" destination="z3N-JL-tlL" id="jcH-lJ-Fw3"/>
<segue destination="7B0-PA-tjd" kind="modal" identifier="NetworkSelectionSegue" id="eaI-bm-1aI"/>
</connections>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="VhZ-aP-JDs" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="VhZ-aP-JDs" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1680.5" y="-624.5"/> <point key="canvasLocation" x="1654.5" y="-649.5"/>
</scene> </scene>
<!--Ebay Settings--> <!--Ebay Settings-->
<scene sceneID="bc4-4H-BM8"> <scene sceneID="bc4-4H-BM8">
@ -2813,8 +2376,9 @@
<inferredMetricsTieBreakers> <inferredMetricsTieBreakers>
<segue reference="Ds4-LY-IRj"/> <segue reference="Ds4-LY-IRj"/>
<segue reference="syc-IR-LNQ"/> <segue reference="syc-IR-LNQ"/>
<segue reference="Gnt-iE-cW9"/> <segue reference="NOz-ya-avj"/>
<segue reference="vCG-jU-HYF"/> <segue reference="KKl-Gj-ZVc"/>
<segue reference="rkZ-c8-XJc"/>
</inferredMetricsTieBreakers> </inferredMetricsTieBreakers>
<color key="tintColor" red="0.2784313725" green="0.80392156859999997" blue="0.68235294120000001" alpha="1" colorSpace="calibratedRGB"/> <color key="tintColor" red="0.2784313725" green="0.80392156859999997" blue="0.68235294120000001" alpha="1" colorSpace="calibratedRGB"/>
</document> </document>

View File

@ -88,10 +88,11 @@ extension NetworksTableViewController {
} }
func setManagers(fbManager: FacebookGraphAPIManager, fireManager: FirebaseManager, ebayManager: EbayWebServiceManager){ func setManagers(fbManager: FacebookGraphAPIManager, fireManager: FirebaseManager, ebayManager: EbayWebServiceManager, etsyManager: EtsyRESTAPIManager){
self.graphManager = fbManager self.graphManager = fbManager
self.firManager = fireManager self.firManager = fireManager
self.ebayManager = ebayManager self.ebayManager = ebayManager
self.etsyManager = etsyManager
} }
} }
@ -108,7 +109,7 @@ extension NetworksTableViewController {
if(segue.identifier == "ItemPreviewSegue"){ if(segue.identifier == "ItemPreviewSegue"){
(segue.destinationViewController as! ListingPreviewViewController).setDictionary(self.networksDictionary, itemdictionary: self.itemListingDictionary) (segue.destinationViewController as! ListingPreviewViewController).setDictionary(self.networksDictionary, itemdictionary: self.itemListingDictionary)
(segue.destinationViewController as! ListingPreviewViewController).setManagers(self.graphManager, fireManager: self.firManager, ebayManager: self.ebayManager) (segue.destinationViewController as! ListingPreviewViewController).setManagers(self.graphManager, fireManager: self.firManager, ebayManager: self.ebayManager, etsyManager: self.etsyManager)
} }
if(segue.identifier == "EtsySettingsSegue") { if(segue.identifier == "EtsySettingsSegue") {
@ -415,12 +416,12 @@ extension NetworksTableViewController: UITableViewDelegate {
cell = (self.tableView.dequeueReusableCellWithIdentifier("etsy", forIndexPath: indexPath) as! EtsyTableViewCell) cell = (self.tableView.dequeueReusableCellWithIdentifier("etsy", forIndexPath: indexPath) as! EtsyTableViewCell)
cell.setSelected(false, animated: false) cell.setSelected(false, animated: false)
//selection code for etsy //selection code for etsy
if(cell.networkToggle.on == true){ if(cell.networkToggle.on == true){
dispatch_async(dispatch_get_main_queue(), { () -> Void in dispatch_async(dispatch_get_main_queue(), { () -> Void in
cell.networkToggle.setOn(false, animated: true) cell.networkToggle.setOn(false, animated: true)
cell.networkToggle.on = false
}) })
//code to deselect network //code to deselect network
@ -430,6 +431,7 @@ extension NetworksTableViewController: UITableViewDelegate {
dispatch_async(dispatch_get_main_queue(), { () -> Void in dispatch_async(dispatch_get_main_queue(), { () -> Void in
cell.networkToggle.setOn(true, animated: true) cell.networkToggle.setOn(true, animated: true)
cell.networkToggle.on = true
}) })
//code to select network //code to select network
self.networksDictionary["etsy"] = true self.networksDictionary["etsy"] = true
@ -489,7 +491,7 @@ extension NetworksTableViewController: UITableViewDelegate {
} }
else{ else{
/*
//case where class is being used to authorize a network for the app to post on //case where class is being used to authorize a network for the app to post on
switch (indexPath.row){ switch (indexPath.row){
case 0: case 0:
@ -630,7 +632,7 @@ extension NetworksTableViewController: UITableViewDelegate {
break break
} }
*/
} }
@ -753,6 +755,14 @@ extension NetworksTableViewController {
}) })
break break
case is FBTableViewCell.Type: case is FBTableViewCell.Type:
let tabBar = self.tabBarController
((tabBar as? HomeViewController)?.fbGraphManager.authorizeApp(self))!
dispatch_async(dispatch_get_main_queue(), {
sender.setTitle("Logout", forState: UIControlState.Normal)
(sender.superview?.superview as! FBTableViewCell).settingsBtn.enabled = true
(sender.superview?.superview as! FBTableViewCell).settingsBtn.hidden = false
})
break break
default: default:
break break
@ -783,6 +793,13 @@ extension NetworksTableViewController {
}) })
break break
case is FBTableViewCell.Type: case is FBTableViewCell.Type:
let tabBar = self.tabBarController
((tabBar as? HomeViewController)?.fbGraphManager.deAuthorizeApp(self))!
dispatch_async(dispatch_get_main_queue(), {
sender.setTitle("Login", forState: UIControlState.Normal)
(sender.superview?.superview as! FBTableViewCell).settingsBtn.enabled = false
(sender.superview?.superview as! FBTableViewCell).settingsBtn.hidden = true
})
break break
default: default:
break break