mirror of
https://bitbucket.org/vendoo/vendoo_v1.0.git
synced 2025-12-25 11:47:40 +00:00
Merged branch master into Seller-Networks-Settings
This commit is contained in:
commit
b3e38fb0ca
@ -14,6 +14,8 @@
|
||||
3E1AA4351D0DD173005FCCBB /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1AA4341D0DD173005FCCBB /* SettingsViewController.swift */; };
|
||||
3E1B1F091D24926C00DBCF08 /* EbaySettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1B1F081D24926C00DBCF08 /* EbaySettingsViewController.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 */; };
|
||||
3E6CC3571CF2A94B00E00A70 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC3561CF2A94B00E00A70 /* AppDelegate.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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
@ -316,6 +320,8 @@
|
||||
3EC3252B1CF8944800626C48 /* NewItemPostingSession */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3E1DC3CE1D42328C0091BC60 /* CategoryCell.swift */,
|
||||
3E1DC3CC1D4232490091BC60 /* CategoriesTableViewController.swift */,
|
||||
3EC3252C1CF894C400626C48 /* ItemImagePickerViewController.swift */,
|
||||
3ECEDB861CF9C722003566B3 /* ListingPreviewViewController.swift */,
|
||||
);
|
||||
@ -634,12 +640,14 @@
|
||||
3EC325201CF7C3AB00626C48 /* NetworkTableViewCell.swift in Sources */,
|
||||
3EC325261CF7E90000626C48 /* FacebookGraphAPIManager.swift in Sources */,
|
||||
3E7CF3FC1CF5FE9400F486B2 /* RecoverPasswordViewController.swift in Sources */,
|
||||
3E1DC3CF1D42328C0091BC60 /* CategoryCell.swift in Sources */,
|
||||
3EC325111CF703A600626C48 /* ItemCell.swift in Sources */,
|
||||
3EA668A11D02836C00EE57A8 /* EbayWebServiceManager.swift in Sources */,
|
||||
3ECEDB871CF9C722003566B3 /* ListingPreviewViewController.swift in Sources */,
|
||||
3E1B1F0B1D2493EE00DBCF08 /* EtsySettingsViewController.swift in Sources */,
|
||||
3EC325231CF7DA5500626C48 /* HomeViewController.swift in Sources */,
|
||||
3EC3252D1CF894C400626C48 /* ItemImagePickerViewController.swift in Sources */,
|
||||
3E1DC3CD1D4232490091BC60 /* CategoriesTableViewController.swift in Sources */,
|
||||
3E7CF4011CF6366300F486B2 /* EtsyRESTAPIManager.swift in Sources */,
|
||||
3EC325151CF7104300626C48 /* ItemTableViewController.swift in Sources */,
|
||||
3EFB0E331D0B968300A05D7A /* SideMenuView.swift in Sources */,
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
Vendoo/.DS_Store
vendored
BIN
Vendoo/.DS_Store
vendored
Binary file not shown.
195
Vendoo/CategoriesTableViewController.swift
Normal file
195
Vendoo/CategoriesTableViewController.swift
Normal 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
113
Vendoo/CategoryCell.swift
Normal 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?) {
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ import Locksmith
|
||||
import AFNetworking
|
||||
|
||||
|
||||
typealias ServiceResponse = (JSON, NSError?) -> Void
|
||||
typealias ServiceResponse = (AnyObject?, NSError?) -> Void
|
||||
|
||||
|
||||
class EtsyRESTAPIManager: NSObject {
|
||||
@ -73,7 +73,7 @@ class EtsyRESTAPIManager: NSObject {
|
||||
|
||||
EtsyRESTAPIManager.settingsDictionary = ([
|
||||
"who_made":"i_did",
|
||||
"is_supply":"true",
|
||||
"is_supply":true,
|
||||
"when_made":"made_to_order"
|
||||
] as Dictionary<String, AnyObject>)
|
||||
|
||||
@ -213,6 +213,13 @@ extension EtsyRESTAPIManager {
|
||||
EtsyRESTAPIManager.settingsDictionary["userID"] = dict2[0]["login_name"]!
|
||||
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
|
||||
print(error)
|
||||
@ -392,48 +399,317 @@ extension EtsyRESTAPIManager {
|
||||
}
|
||||
|
||||
//sends the pregenerated url as a request to api service
|
||||
func sendGETRequest(request: String, onCompletion: ServiceResponse) {
|
||||
let request = NSMutableURLRequest(URL: NSURL(string: request)!)
|
||||
func sendGETRequest(request: String, onCompletion: ServiceResponse?) {
|
||||
/* let request = NSMutableURLRequest(URL: NSURL(string: request)!)
|
||||
|
||||
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()*/
|
||||
|
||||
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)
|
||||
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)
|
||||
|
||||
}
|
||||
})
|
||||
task.resume()
|
||||
)
|
||||
}
|
||||
|
||||
//sends the pregenerated url as a request to api service
|
||||
func sendPOSTRequest(request: String, body: [String: AnyObject], onCompletion: ServiceResponse) {
|
||||
let request = NSMutableURLRequest(URL: NSURL(string: request)!)
|
||||
func sendPOSTRequest(request: String, var body: [String: AnyObject], onCompletion: ServiceResponse?) {
|
||||
|
||||
// Set the method to POST
|
||||
request.HTTPMethod = "POST"
|
||||
/* let request = NSMutableURLRequest(URL: NSURL(string: request)!)
|
||||
|
||||
// Set the method to POST
|
||||
request.HTTPMethod = "POST"
|
||||
|
||||
do {
|
||||
// Set the POST body for the request
|
||||
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
|
||||
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)
|
||||
}*/
|
||||
|
||||
do {
|
||||
// Set the POST body for the request
|
||||
let jsonBody = try NSJSONSerialization.dataWithJSONObject(body, options: .PrettyPrinted)
|
||||
request.HTTPBody = jsonBody
|
||||
let session = NSURLSession.sharedSession()
|
||||
if(request.containsString("listings/") && request.containsString("/images")){
|
||||
|
||||
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)
|
||||
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
|
||||
onCompletion(nil, nil)
|
||||
|
||||
|
||||
},
|
||||
failure: {
|
||||
(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
|
||||
}
|
||||
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -21,13 +21,13 @@ 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
|
||||
|
||||
NEED to figure out how to post picture and text as the same timeline post current can only upload item title, price and description.
|
||||
*/
|
||||
class FacebookGraphAPIManager: NSObject {
|
||||
|
||||
|
||||
//API Manager class variables
|
||||
//----------------------------------------------//
|
||||
static let sharedInstance = FacebookGraphAPIManager()
|
||||
@ -59,7 +59,7 @@ class FacebookGraphAPIManager: NSObject {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -136,7 +136,7 @@ extension FacebookGraphAPIManager {
|
||||
return self.makeDELETIONResquest("me/permissions", params: nil)
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//MARK: - request methods(GET, POST, DELETE, SHARE)
|
||||
@ -153,32 +153,33 @@ extension FacebookGraphAPIManager {
|
||||
|
||||
//when making request make sure path starts with '/'
|
||||
func makeGETRequest(requestPath: String!, params: [NSObject: AnyObject]!) -> Bool{
|
||||
|
||||
|
||||
let graphRequest: FBSDKGraphRequest = FBSDKGraphRequest(graphPath: requestPath, parameters: params)
|
||||
var boolResult: Bool = false
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), {
|
||||
graphRequest.startWithCompletionHandler({
|
||||
(id, result, error) -> Void in
|
||||
|
||||
print(result)
|
||||
|
||||
|
||||
|
||||
|
||||
})
|
||||
graphRequest.startWithCompletionHandler({
|
||||
(id, result, error) -> Void in
|
||||
|
||||
print(result)
|
||||
|
||||
|
||||
|
||||
|
||||
})
|
||||
})
|
||||
return boolResult
|
||||
|
||||
|
||||
}
|
||||
|
||||
//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({
|
||||
(id, result, error) -> Void in
|
||||
|
||||
@ -186,21 +187,22 @@ extension FacebookGraphAPIManager {
|
||||
if(error == nil){
|
||||
|
||||
print(result["id"])
|
||||
self.delegate?.listingUploadedFB((result["id"] as? String)!)
|
||||
//self.delegate?.listingUploadedFB((result["id"] as? String)!)
|
||||
print(result)
|
||||
onComplete((result["id"] as? String)!, nil)
|
||||
|
||||
}
|
||||
else{
|
||||
|
||||
print(error)
|
||||
}
|
||||
//save id in firebase so retrieval can be done later
|
||||
})
|
||||
//}
|
||||
}
|
||||
/*else{
|
||||
print("must reauthenticate facebook")
|
||||
}*/
|
||||
|
||||
}
|
||||
print("must reauthenticate facebook")
|
||||
}
|
||||
|
||||
*/}
|
||||
|
||||
//used to delete permissions and listings from users timeline, path must start with '/'
|
||||
func makeDELETIONResquest(requestPath: String!, params: [NSObject: AnyObject]!) -> Bool{
|
||||
@ -232,5 +234,5 @@ extension FacebookGraphAPIManager {
|
||||
|
||||
return boolResult
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -34,16 +34,6 @@ class HomeViewController: UITabBarController {
|
||||
|
||||
for (key, values) in listingDict! {
|
||||
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
|
||||
|
||||
let databaseDict = snapshot.value as! [String : AnyObject]
|
||||
@ -52,7 +42,6 @@ class HomeViewController: UITabBarController {
|
||||
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)
|
||||
mainListingImage.dataWithMaxSize(10 * 1024 * 1024, completion: {
|
||||
(dataMain, error) -> Void in
|
||||
|
||||
@ -23,7 +23,7 @@ class ItemImagePickerViewController: UIViewController {
|
||||
@IBOutlet weak var possibleItemImage3: UIImageView!
|
||||
@IBOutlet weak var possibleItemImage4: UIImageView!
|
||||
@IBOutlet weak var possibleItemImage5: UIImageView!
|
||||
|
||||
@IBOutlet weak var itemQuantity: UITextField!
|
||||
@IBOutlet weak var itemName: UITextField!
|
||||
@IBOutlet weak var itemDescription: UITextView!
|
||||
@IBOutlet weak var itemPrice: UITextField!
|
||||
@ -48,6 +48,7 @@ class ItemImagePickerViewController: UIViewController {
|
||||
self.categoryPicker.dataSource = self
|
||||
self.itemDescription.delegate = self
|
||||
self.itemName.delegate = self
|
||||
self.itemQuantity.delegate = self
|
||||
self.itemPrice.delegate = self
|
||||
self.picker.delegate = self
|
||||
|
||||
@ -91,13 +92,13 @@ extension ItemImagePickerViewController {
|
||||
// Get the new view controller using segue.destinationViewController.
|
||||
// Pass the selected object to the new view controller.
|
||||
|
||||
if(segue.identifier == "SelectNetworkSegue"){
|
||||
if(segue.identifier == "CategoriesSegue"){
|
||||
print(self.itemName.text!)
|
||||
print(self.itemDescription.text!)
|
||||
print(self.possibleItemImageMain.image)
|
||||
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 images: [UIImageView] = []
|
||||
for bool in self.itemImagesSelections {
|
||||
@ -124,12 +125,13 @@ extension ItemImagePickerViewController {
|
||||
}
|
||||
|
||||
dict["pictures"] = images
|
||||
(segue.destinationViewController as! NetworksTableViewController).setListingDictionary(dict)
|
||||
(segue.destinationViewController as! NetworksTableViewController).setManagers(((self.tabBarController as? HomeViewController)?.fbGraphManager)!,
|
||||
fireManager: ((self.tabBarController as? HomeViewController)?.firebaseManager)!, ebayManager: ((self.tabBarController as? HomeViewController)?.ebayGraphManager)! )
|
||||
(segue.destinationViewController as! CategoriesTableViewController).setListingDictionary(dict)
|
||||
(segue.destinationViewController as! CategoriesTableViewController).setManagers(((self.tabBarController as? HomeViewController)?.fbGraphManager)!,
|
||||
fireManager: ((self.tabBarController as? HomeViewController)?.firebaseManager)!, ebayManager: ((self.tabBarController as? HomeViewController)?.ebayGraphManager)!,
|
||||
etsyManager: ((self.tabBarController as? HomeViewController)?.etsyManager)!)
|
||||
|
||||
(segue.destinationViewController as! NetworksTableViewController).setNetworkSelectFunctionality(true)
|
||||
print(self.categoryPicker.selectedRowInComponent(0))
|
||||
//(segue.destinationViewController as! NetworksTableViewController).setNetworkSelectFunctionality(true)
|
||||
//print(self.categoryPicker.selectedRowInComponent(0))
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -14,11 +14,12 @@
|
||||
*/
|
||||
|
||||
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 {
|
||||
|
||||
|
||||
//IBOutlets
|
||||
@IBOutlet weak var containerScrollView: UIScrollView!
|
||||
@IBOutlet weak var itemQuantity: UITextView!
|
||||
@IBOutlet weak var itemPicture: UIImageView!
|
||||
@IBOutlet weak var itemTitle: UITextView!
|
||||
@IBOutlet weak var itemDescription: UITextView!
|
||||
@ -31,26 +32,28 @@ class ListingPreviewViewController: UIViewController {
|
||||
private var graphManager: FacebookGraphAPIManager! = nil
|
||||
private var firManager: FirebaseManager! = nil
|
||||
private var ebayManager: EbayWebServiceManager! = nil
|
||||
private var etsyManager: EtsyRESTAPIManager! = nil
|
||||
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 lastListingKey: String!
|
||||
private var newInProgressListing: Dictionary<String,AnyObject> = Dictionary<String, AnyObject>()
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
|
||||
// Do any additional setup after loading the view.
|
||||
|
||||
// Initialization code
|
||||
self.networks.delegate = self
|
||||
self.networks.dataSource = self
|
||||
self.networks.backgroundView?.backgroundColor = UIColor.whiteColor()
|
||||
self.graphManager.delegate = self
|
||||
//self.graphManager.delegate = self
|
||||
}
|
||||
|
||||
override func viewDidAppear(animated: Bool) {
|
||||
self.setListing()
|
||||
}
|
||||
|
||||
|
||||
override func didReceiveMemoryWarning() {
|
||||
super.didReceiveMemoryWarning()
|
||||
// Dispose of any resources that can be recreated.
|
||||
@ -64,6 +67,7 @@ class ListingPreviewViewController: UIViewController {
|
||||
self.itemDescription.text = self.itemListingDictionary["description"] as! String
|
||||
self.itemPrice.text = self.itemListingDictionary["price"] 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!>){
|
||||
@ -71,16 +75,17 @@ class ListingPreviewViewController: UIViewController {
|
||||
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.firManager = fireManager
|
||||
self.ebayManager = ebayManager
|
||||
self.etsyManager = etsyManager
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 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.
|
||||
@ -92,30 +97,37 @@ class ListingPreviewViewController: UIViewController {
|
||||
vc.itemPrice.text? = self.itemPrice.text
|
||||
vc.itemDescription.text? = self.itemDescription.text
|
||||
vc.possibleItemImageMain = self.itemPicture
|
||||
vc.itemQuantity.text? = self.itemQuantity.text
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
//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)
|
||||
extension Dictionary {
|
||||
mutating func update(other:Dictionary) {
|
||||
for (key,value) in other {
|
||||
self.updateValue(value, forKey:key)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
//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
|
||||
extension ListingPreviewViewController {
|
||||
|
||||
|
||||
|
||||
@IBAction func publishItem(sender: AnyObject) {
|
||||
|
||||
@ -125,7 +137,12 @@ extension ListingPreviewViewController {
|
||||
|
||||
self.presentViewController(alert, animated: true, completion: nil)
|
||||
}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
|
||||
if(self.networksDictionary["ebay"]!){
|
||||
|
||||
@ -138,82 +155,241 @@ extension ListingPreviewViewController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
//post to 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)
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//save listing to private user path in firebase
|
||||
let newListingRef = self.firManager.ref.child("Users").child("\(self.firManager.user_email)").child("user_Listings").childByAutoId()
|
||||
self.networksDictionary["areNetworksChosen"] = true
|
||||
let listing: Dictionary<String,AnyObject> = ["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
|
||||
//post to facebook
|
||||
if(self.networksDictionary["facebook"]!){
|
||||
dispatch_group_enter(postingGroup)
|
||||
|
||||
let databaseDict = snapshot.value as! [String : AnyObject]
|
||||
let tmpDirURL = NSURL.fileURLWithPath(NSTemporaryDirectory(), isDirectory: true)
|
||||
let fileURL = tmpDirURL.URLByAppendingPathComponent("main").URLByAppendingPathExtension("jpg")
|
||||
print("FilePath: \(fileURL.path!)")
|
||||
do {
|
||||
try UIImageJPEGRepresentation(self.itemPicture.image!, 0.45)!.writeToFile(fileURL.path!, options: NSDataWritingOptions.AtomicWrite)
|
||||
}catch{
|
||||
(error)
|
||||
print(error)
|
||||
}
|
||||
|
||||
let storageRef = self.firManager.storage.referenceForURL((databaseDict["image_storage"] as? String)!)
|
||||
//let parameters: Dictionary<String, AnyObject> = ["message":("**"+self.itemTitle.text!+"**\n\n"+"Price: "+self.itemPrice.text! + "\n\n"+self.itemDescription.text!)]
|
||||
|
||||
//change code to new multi-image saving
|
||||
let parameters: Dictionary<String, AnyObject> = ["Source": UIImageJPEGRepresentation(self.itemPicture.image!, 0.45)!, "published":false]
|
||||
|
||||
|
||||
|
||||
let listingImageRef = storageRef.child("images/\(newListingRef.key)"+".jpg")
|
||||
listingImageRef.putData(UIImageJPEGRepresentation(self.itemPicture.image!, 0.8)!, metadata: nil,completion:
|
||||
{(metadata, error) -> Void in
|
||||
self.lastListingKey = newListingRef.key
|
||||
self.graphManager.makePOSTResquest("me/photos", params: parameters, onComplete: {
|
||||
(imageId, error) -> Void in
|
||||
|
||||
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
|
||||
|
||||
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> = ["":""]
|
||||
|
||||
|
||||
if((self.newInProgressListing["networkIDs"] == nil)){
|
||||
self.newInProgressListing["networkIDs"] = Dictionary<String, AnyObject>()
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//register new listing id in global path of firebase root'
|
||||
self.firManager.ref.child("Global_listings").child(newListingRef.key).setValue(newListingRef.key)
|
||||
var networkIDs = (self.newInProgressListing["networkIDs"] as! Dictionary<String, AnyObject>)
|
||||
networkIDs["facebook"] = listingId as! String
|
||||
self.newInProgressListing["networkIDs"] = networkIDs
|
||||
dispatch_group_leave(postingGroup)
|
||||
|
||||
|
||||
})
|
||||
/*
|
||||
|
||||
*/
|
||||
})
|
||||
|
||||
//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)
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -377,7 +377,7 @@
|
||||
<color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</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"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<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">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<segue destination="dll-3G-IQL" kind="modal" identifier="CategoriesSegue" id="IJp-Zc-nNh"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<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="itemName" destination="QIK-Tn-AHX" id="YsY-i0-9oR"/>
|
||||
<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="possibleItemImage3" destination="ZfH-0j-qER" id="VGg-RB-whX"/>
|
||||
<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="itemPicture" destination="K0z-pp-hzH" id="6Zm-Ig-Rm3"/>
|
||||
<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="networks" destination="MS3-nc-8va" id="duP-BL-Qp2"/>
|
||||
<segue destination="0di-oP-cGQ" kind="modal" identifier="EditListingSegue" id="rkZ-c8-XJc"/>
|
||||
@ -1995,7 +2000,7 @@
|
||||
<!--categories-->
|
||||
<scene sceneID="e5k-kQ-o33">
|
||||
<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">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
@ -2005,549 +2010,100 @@
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<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"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<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"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<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">
|
||||
<rect key="frame" x="8" y="11" width="359" height="21"/>
|
||||
<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="175" 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="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"/>
|
||||
<collectionView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" id="7Xh-YZ-bvC">
|
||||
<rect key="frame" x="191" y="-9" width="176" height="61"/>
|
||||
<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="40E-Ix-HeI">
|
||||
<rect key="frame" x="0.0" y="116" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="40E-Ix-HeI" id="mS4-Gf-voB">
|
||||
<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="Baby" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="ixK-Y9-Gez">
|
||||
<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="ccy-c5-GEb">
|
||||
<rect key="frame" x="0.0" y="160" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ccy-c5-GEb" id="JJB-uf-Y7r">
|
||||
<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="Books" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Th8-iJ-Hfh">
|
||||
<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="xaT-7C-dIj">
|
||||
<rect key="frame" x="0.0" y="204" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="xaT-7C-dIj" id="C70-VY-weq">
|
||||
<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="Business & Industrial" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="jBx-Pm-q17">
|
||||
<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="3D5-Dr-Pdi">
|
||||
<rect key="frame" x="0.0" y="248" width="375" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="3D5-Dr-Pdi" id="jCw-pG-d4H">
|
||||
<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="Cameras & Photo" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="C0r-MH-nLQ">
|
||||
<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="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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="5" minimumInteritemSpacing="5" id="eY7-Fs-6Kn">
|
||||
<size key="itemSize" width="40" height="40"/>
|
||||
<size key="headerReferenceSize" width="0.0" height="0.0"/>
|
||||
<size key="footerReferenceSize" width="0.0" height="0.0"/>
|
||||
<inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
|
||||
</collectionViewFlowLayout>
|
||||
<cells>
|
||||
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="ebay" id="mCV-zx-xeL">
|
||||
<rect key="frame" x="0.0" y="10.5" width="40" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ebay_icon" id="lUG-4k-oqy">
|
||||
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<size key="customSize" width="40" height="40"/>
|
||||
</collectionViewCell>
|
||||
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="1" contentMode="center" reuseIdentifier="amazon" id="LkM-kC-Zpp">
|
||||
<rect key="frame" x="45" y="10.5" width="40" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="amazon_icon" id="BDv-y8-P6w">
|
||||
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
</collectionViewCell>
|
||||
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="2" contentMode="center" reuseIdentifier="etsy" id="LmS-RK-wqT">
|
||||
<rect key="frame" x="90" y="10.5" width="40" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="etsy_icon" id="Ic1-xd-4Oc">
|
||||
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
</collectionViewCell>
|
||||
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="3" contentMode="center" reuseIdentifier="facebook" id="E6f-Dd-zq3">
|
||||
<rect key="frame" x="135" y="10.5" width="40" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<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="40" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
</collectionViewCell>
|
||||
</cells>
|
||||
</collectionView>
|
||||
</subviews>
|
||||
</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>
|
||||
</prototypes>
|
||||
<sections/>
|
||||
@ -2560,6 +2116,9 @@
|
||||
<rect key="frame" x="8" y="16" width="46" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="Back"/>
|
||||
<connections>
|
||||
<action selector="cancelCategorySelection:" destination="dll-3G-IQL" eventType="touchUpInside" id="k0I-oY-cmp"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<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"/>
|
||||
</view>
|
||||
<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>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="VhZ-aP-JDs" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1680.5" y="-624.5"/>
|
||||
<point key="canvasLocation" x="1654.5" y="-649.5"/>
|
||||
</scene>
|
||||
<!--Ebay Settings-->
|
||||
<scene sceneID="bc4-4H-BM8">
|
||||
@ -2813,8 +2376,9 @@
|
||||
<inferredMetricsTieBreakers>
|
||||
<segue reference="Ds4-LY-IRj"/>
|
||||
<segue reference="syc-IR-LNQ"/>
|
||||
<segue reference="Gnt-iE-cW9"/>
|
||||
<segue reference="vCG-jU-HYF"/>
|
||||
<segue reference="NOz-ya-avj"/>
|
||||
<segue reference="KKl-Gj-ZVc"/>
|
||||
<segue reference="rkZ-c8-XJc"/>
|
||||
</inferredMetricsTieBreakers>
|
||||
<color key="tintColor" red="0.2784313725" green="0.80392156859999997" blue="0.68235294120000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</document>
|
||||
|
||||
@ -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.firManager = fireManager
|
||||
self.ebayManager = ebayManager
|
||||
self.etsyManager = etsyManager
|
||||
}
|
||||
|
||||
}
|
||||
@ -108,7 +109,7 @@ extension NetworksTableViewController {
|
||||
if(segue.identifier == "ItemPreviewSegue"){
|
||||
|
||||
(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") {
|
||||
@ -415,12 +416,12 @@ extension NetworksTableViewController: UITableViewDelegate {
|
||||
cell = (self.tableView.dequeueReusableCellWithIdentifier("etsy", forIndexPath: indexPath) as! EtsyTableViewCell)
|
||||
cell.setSelected(false, animated: false)
|
||||
|
||||
|
||||
//selection code for etsy
|
||||
if(cell.networkToggle.on == true){
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
||||
cell.networkToggle.setOn(false, animated: true)
|
||||
cell.networkToggle.on = false
|
||||
})
|
||||
|
||||
//code to deselect network
|
||||
@ -430,6 +431,7 @@ extension NetworksTableViewController: UITableViewDelegate {
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
||||
cell.networkToggle.setOn(true, animated: true)
|
||||
cell.networkToggle.on = true
|
||||
})
|
||||
//code to select network
|
||||
self.networksDictionary["etsy"] = true
|
||||
@ -441,7 +443,7 @@ extension NetworksTableViewController: UITableViewDelegate {
|
||||
(tabBar as? HomeViewController)?.etsyManager.authorizeApp(self)
|
||||
*/
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
break
|
||||
@ -489,7 +491,7 @@ extension NetworksTableViewController: UITableViewDelegate {
|
||||
|
||||
}
|
||||
else{
|
||||
|
||||
/*
|
||||
//case where class is being used to authorize a network for the app to post on
|
||||
switch (indexPath.row){
|
||||
case 0:
|
||||
@ -630,7 +632,7 @@ extension NetworksTableViewController: UITableViewDelegate {
|
||||
break
|
||||
|
||||
}
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -753,6 +755,14 @@ extension NetworksTableViewController {
|
||||
})
|
||||
break
|
||||
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
|
||||
default:
|
||||
break
|
||||
@ -783,6 +793,13 @@ extension NetworksTableViewController {
|
||||
})
|
||||
break
|
||||
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
|
||||
default:
|
||||
break
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user