mirror of
https://bitbucket.org/vendoo/vendoo_v1.0.git
synced 2025-12-25 03:37:39 +00:00
784 lines
33 KiB
Swift
784 lines
33 KiB
Swift
//
|
|
// NetworksTableViewController.swift
|
|
// Vendoo
|
|
//
|
|
// Created by Okechi Onyeje on 5/26/16.
|
|
// Copyright © 2016 Okechi Onyeje. All rights reserved.
|
|
//
|
|
|
|
/*
|
|
NOTES:
|
|
|
|
//Make it so u are accessing REST api service managers from TabController
|
|
//to promote more centralized code.
|
|
|
|
//need to make the class control the navigation bar by changing the buttons on it to show a back button in the case where class is controlling network selection, and hide back button for the case where class is controlling network authorization
|
|
*/
|
|
|
|
import UIKit
|
|
import Foundation
|
|
|
|
class NetworksTableViewController: UIViewController {
|
|
|
|
//IBOutlets
|
|
@IBOutlet weak var tableView: UITableView!
|
|
@IBOutlet weak var menuButton: UIBarButtonItem!
|
|
|
|
|
|
//class variables
|
|
private var networkToggleOrSelect: Bool = false
|
|
private var networksDictionary: Dictionary<String, Bool> = ["ebay":false, "amazon":false,"etsy":false,"facebook":false]
|
|
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()
|
|
|
|
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
// 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()
|
|
self.tableView.delegate = self
|
|
self.tableView.dataSource = self
|
|
if(!networkToggleOrSelect){
|
|
((self.tabBarController as? HomeViewController)?.ebayGraphManager)!.delegate = self
|
|
}else{
|
|
self.ebayManager.delegate = self
|
|
}
|
|
|
|
if self.revealViewController() != nil {
|
|
menuButton.target = self.revealViewController()
|
|
menuButton.action = "revealToggle:"
|
|
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
|
|
}
|
|
|
|
}
|
|
|
|
override func didReceiveMemoryWarning() {
|
|
super.didReceiveMemoryWarning()
|
|
// Dispose of any resources that can be recreated.
|
|
}
|
|
|
|
|
|
//set the class boolean in order to choose what toggling each network does
|
|
func setNetworkSelectFunctionality(bool: Bool){
|
|
self.networkToggleOrSelect = bool
|
|
}
|
|
|
|
}
|
|
|
|
//MARK: - class methods Network Selection when creating a new listing
|
|
extension NetworksTableViewController {
|
|
|
|
func setListingDictionary(listingDictionary: Dictionary<String, AnyObject>){
|
|
|
|
self.itemListingDictionary = listingDictionary
|
|
|
|
}
|
|
|
|
func setManagers(fbManager: FacebookGraphAPIManager, fireManager: FirebaseManager, ebayManager: EbayWebServiceManager){
|
|
self.graphManager = fbManager
|
|
self.firManager = fireManager
|
|
self.ebayManager = ebayManager
|
|
}
|
|
|
|
}
|
|
|
|
|
|
// MARK: - Navigation
|
|
extension NetworksTableViewController {
|
|
|
|
// 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 == "ItemPreviewSegue"){
|
|
|
|
(segue.destinationViewController as! ListingPreviewViewController).setDictionary(self.networksDictionary, itemdictionary: self.itemListingDictionary)
|
|
(segue.destinationViewController as! ListingPreviewViewController).setManagers(self.graphManager, fireManager: self.firManager, ebayManager: self.ebayManager)
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
// MARK: - TableView Datasource methods
|
|
extension NetworksTableViewController: UITableViewDataSource {
|
|
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 4
|
|
}
|
|
|
|
|
|
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
|
|
|
|
let cell: UITableViewCell!
|
|
|
|
//case where class is being used in new item posting workflow to select which network to sell on
|
|
//may hide future networks that don't apply to a listing
|
|
if(self.networkToggleOrSelect){
|
|
|
|
switch (indexPath.row){
|
|
|
|
case 0:
|
|
|
|
//loads network cell for ebay
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("ebay", forIndexPath: indexPath) as! EbayTableViewCell)
|
|
break
|
|
case 1:
|
|
//loads network cell for amazon
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("amazon", forIndexPath: indexPath) as! AmazonTableViewCell)
|
|
break
|
|
case 2:
|
|
//loads network cell for etsy
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("etsy", forIndexPath: indexPath) as! EtsyTableViewCell)
|
|
break
|
|
default:
|
|
//loads network cell for ebay
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("facebook", forIndexPath: indexPath) as! FBTableViewCell)
|
|
|
|
break
|
|
}
|
|
|
|
}
|
|
else{
|
|
|
|
//case where class is being used to authorize a network for the app to post on
|
|
switch (indexPath.row){
|
|
|
|
case 0:
|
|
//loads network cell for ebay
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("ebay", forIndexPath: indexPath) as! EbayTableViewCell)
|
|
|
|
if(((self.tabBarController as? HomeViewController)?.ebayGraphManager.isAuthorized)!){
|
|
dispatch_async(dispatch_get_main_queue(), {
|
|
(cell as! EbayTableViewCell).authorizeBtn.setTitle("Logout", forState: UIControlState.Normal)
|
|
|
|
})
|
|
//(cell as! EbayTableViewCell).networkToggle.setOn(true, animated: false)
|
|
}else{
|
|
(cell as! EbayTableViewCell).settingsBtn.enabled = false
|
|
(cell as! EbayTableViewCell).settingsBtn.hidden = true
|
|
}
|
|
|
|
break
|
|
case 1:
|
|
//loads network cell for amazon
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("amazon", forIndexPath: indexPath) as! AmazonTableViewCell)
|
|
break
|
|
case 2:
|
|
//loads network cell for etsy
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("etsy", forIndexPath: indexPath) as! EtsyTableViewCell)
|
|
|
|
let tabBar = self.tabBarController
|
|
if(((tabBar as? HomeViewController)?.etsyManager.isAuthorized)!){
|
|
dispatch_async(dispatch_get_main_queue(), {
|
|
(cell as! EtsyTableViewCell).authorizeBtn.setTitle("Logout", forState: UIControlState.Normal)
|
|
|
|
//(cell as! EtsyTableViewCell).networkToggle.setOn(true, animated: false)
|
|
})
|
|
|
|
}else{
|
|
(cell as! EtsyTableViewCell).settingsBtn.enabled = false
|
|
(cell as! EtsyTableViewCell).settingsBtn.hidden = true
|
|
}
|
|
break
|
|
default:
|
|
//loads network cell for facebook
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("facebook", forIndexPath: indexPath) as! FBTableViewCell)
|
|
|
|
let tabBar = self.tabBarController
|
|
if(((tabBar as? HomeViewController)?.fbGraphManager.isAuthorized)!){
|
|
dispatch_async(dispatch_get_main_queue(), {
|
|
(cell as! FBTableViewCell).authorizeBtn.setTitle("Logout", forState: UIControlState.Normal)
|
|
})
|
|
//(cell as! FBTableViewCell).networkToggle.setOn(true, animated: false)
|
|
}else{
|
|
dispatch_async(dispatch_get_main_queue(), {
|
|
(cell as! FBTableViewCell).settingsBtn.enabled = false
|
|
(cell as! FBTableViewCell).settingsBtn.hidden = true
|
|
})
|
|
}
|
|
|
|
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: - IBActions
|
|
extension NetworksTableViewController {
|
|
|
|
@IBAction func showListingPreview(sender: AnyObject) {
|
|
|
|
self.performSegueWithIdentifier("ItemPreviewSegue", sender: self)
|
|
}
|
|
|
|
@IBAction func draftItem(sender: AnyObject) {
|
|
|
|
if((self.itemListingDictionary["pictures"]! as? [UIImageView])?[0].image == nil){
|
|
|
|
let alert = UIAlertController(title: "Image Needed", message: "To save the listing as a draft, you must supply at least one picture for your listing.", preferredStyle: .Alert)
|
|
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler:{(action: UIAlertAction!) in alert.dismissViewControllerAnimated(true, completion: nil)}))
|
|
|
|
self.presentViewController(alert, animated: true, completion: nil)
|
|
}else{
|
|
|
|
//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 = ["listingID": newListingRef.key,
|
|
"seller email": (NSUserDefaults.standardUserDefaults().objectForKey("email") as? String)!,
|
|
"listingTitle": self.itemListingDictionary["title"],
|
|
"listingPrice": self.itemListingDictionary["price"],
|
|
"listingCategory": self.itemListingDictionary["category"],
|
|
"listingDescription": self.itemListingDictionary["description"],
|
|
"numberOfSupportingImages" : ((self.itemListingDictionary["pictures"] as? [UIImageView])?.count)! - 1,
|
|
"isListingDraft": true,
|
|
"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)!)
|
|
|
|
|
|
//check each imageview to see if there is an image to upload
|
|
if((self.itemListingDictionary["pictures"] as? [UIImageView])!.count >= 2){
|
|
let listingImageRef = storageRef.child("images/\(newListingRef.key)"+"/2.jpg")
|
|
listingImageRef.putData(UIImageJPEGRepresentation((self.itemListingDictionary["pictures"] as? [UIImageView])![1].image!, 0.8)!, metadata: nil,completion:
|
|
{(metadata, error) -> Void in
|
|
print(metadata)
|
|
})
|
|
}
|
|
|
|
if((self.itemListingDictionary["pictures"] as? [UIImageView])!.count >= 3){
|
|
let listingImageRef = storageRef.child("images/\(newListingRef.key)"+"/3.jpg")
|
|
|
|
listingImageRef.putData(UIImageJPEGRepresentation((self.itemListingDictionary["pictures"] as? [UIImageView])![2].image!, 0.8)!, metadata: nil,completion:
|
|
{(metadata, error) -> Void in
|
|
print(metadata)
|
|
})
|
|
}
|
|
|
|
if((self.itemListingDictionary["pictures"] as? [UIImageView])!.count >= 4){
|
|
let listingImageRef = storageRef.child("images/\(newListingRef.key)"+"/4.jpg")
|
|
|
|
listingImageRef.putData(UIImageJPEGRepresentation((self.itemListingDictionary["pictures"] as? [UIImageView])![3].image!, 0.8)!, metadata: nil,completion:
|
|
{(metadata, error) -> Void in
|
|
|
|
})
|
|
}
|
|
|
|
if((self.itemListingDictionary["pictures"] as? [UIImageView])!.count == 5){
|
|
let listingImageRef = storageRef.child("images/\(newListingRef.key)"+"/5.jpg")
|
|
|
|
listingImageRef.putData(UIImageJPEGRepresentation((self.itemListingDictionary["pictures"] as? [UIImageView])![4].image!, 0.8)!, metadata: nil,completion:
|
|
{(metadata, error) -> Void in
|
|
|
|
})
|
|
}
|
|
|
|
if((self.itemListingDictionary["pictures"] as? [UIImageView])!.count >= 1){
|
|
let listingImageRef = storageRef.child("images/\(newListingRef.key)"+"/main.jpg")
|
|
|
|
listingImageRef.putData(UIImageJPEGRepresentation((self.itemListingDictionary["pictures"] as? [UIImageView])![0].image!, 0.8)!, metadata: nil,completion:
|
|
{(metadata, error) -> Void in
|
|
|
|
newListingRef.setValue(listing as? Dictionary<String,AnyObject>)
|
|
let alert = UIAlertController(title: "Item Saved", message: "Your listing has been saved by a draft", preferredStyle: .Alert)
|
|
|
|
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler:{(action: UIAlertAction!) in alert.dismissViewControllerAnimated(true, completion: {
|
|
|
|
self.dismissViewControllerAnimated(true, completion: nil)
|
|
})}))
|
|
|
|
self.presentViewController(alert, animated: true, completion: nil)
|
|
})
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//SET UP TO ADD EACH INTEGRATION AS DEVELOPMENT GETS TO IT
|
|
|
|
//MARK: - Tableview Delegate Methods
|
|
extension NetworksTableViewController: UITableViewDelegate {
|
|
|
|
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
|
|
|
|
//case where class is being used in new item posting workflow to select which network to sell on
|
|
if(self.networkToggleOrSelect){
|
|
|
|
switch (indexPath.row){
|
|
case 0:
|
|
let cell: EbayTableViewCell!
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("ebay", forIndexPath: indexPath) as! EbayTableViewCell)
|
|
cell.setSelected(false, animated: false)
|
|
|
|
//selection code for ebay
|
|
//print(cell.networkToggle.on)
|
|
if(cell.networkToggle.on){
|
|
|
|
|
|
cell.networkToggle.setOn(false, animated: true)
|
|
cell.networkToggle.on = false
|
|
|
|
|
|
//code to deselect network
|
|
self.networksDictionary["ebay"] = false
|
|
|
|
|
|
}
|
|
else{
|
|
|
|
cell.networkToggle.setOn(true, animated: true)
|
|
cell.networkToggle.on = true
|
|
|
|
//code to select network
|
|
self.networksDictionary["ebay"] = true
|
|
}
|
|
|
|
break
|
|
case 1:
|
|
let cell: AmazonTableViewCell!
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("amazon", forIndexPath: indexPath) as! AmazonTableViewCell)
|
|
cell.setSelected(false, animated: false)
|
|
|
|
|
|
//selection code for amazon
|
|
if(cell.networkToggle.on == true){
|
|
|
|
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
|
cell.networkToggle.setOn(false, animated: true)
|
|
})
|
|
//code to deselect network
|
|
self.networksDictionary["amazon"] = false
|
|
|
|
|
|
}
|
|
else{
|
|
|
|
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
|
cell.networkToggle.setOn(true, animated: true)
|
|
})
|
|
//code to select network
|
|
self.networksDictionary["amazon"] = true
|
|
|
|
}
|
|
|
|
break
|
|
|
|
|
|
case 2:
|
|
let cell: EtsyTableViewCell!
|
|
|
|
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)
|
|
})
|
|
|
|
//code to deselect network
|
|
self.networksDictionary["etsy"] = false
|
|
}
|
|
else{
|
|
|
|
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
|
cell.networkToggle.setOn(true, animated: true)
|
|
})
|
|
//code to select network
|
|
self.networksDictionary["etsy"] = true
|
|
|
|
|
|
//this is the type of code desired to access the rest management classes
|
|
/*
|
|
let tabBar = self.tabBarController
|
|
(tabBar as? HomeViewController)?.etsyManager.authorizeApp(self)
|
|
*/
|
|
|
|
|
|
}
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
let cell: FBTableViewCell!
|
|
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("facebook", forIndexPath: indexPath) as! FBTableViewCell)
|
|
cell.setSelected(false, animated: false)
|
|
|
|
|
|
//selection code for facebook
|
|
if(cell.networkToggle.on == true){
|
|
|
|
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
|
cell.networkToggle.setOn(false, animated: true)
|
|
})
|
|
|
|
//code to deselect network
|
|
self.networksDictionary["facebook"] = false
|
|
}
|
|
else{
|
|
|
|
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
|
cell.networkToggle.setOn(true, animated: true)
|
|
})
|
|
//code to select network
|
|
self.networksDictionary["facebook"] = true
|
|
|
|
//this is the type of code desired to access the REST management classes
|
|
/*
|
|
let tabBar = self.tabBarController
|
|
(tabBar as? HomeViewController)?.fbGraphManager.authorizeApp(self)
|
|
*/
|
|
|
|
|
|
}
|
|
|
|
|
|
break
|
|
|
|
}
|
|
|
|
|
|
}
|
|
else{
|
|
|
|
//case where class is being used to authorize a network for the app to post on
|
|
switch (indexPath.row){
|
|
case 0:
|
|
let cell: EbayTableViewCell!
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("ebay", forIndexPath: indexPath) as! EbayTableViewCell)
|
|
cell.setSelected(false, animated: false)
|
|
|
|
/*OAuthorization code for ebay*/
|
|
print(cell.networkToggle.on)
|
|
if(((self.tabBarController as? HomeViewController)?.ebayGraphManager.isAuthorized)!){
|
|
//code to deauthorize network
|
|
|
|
cell.networkToggle.setOn(false, animated: true)
|
|
let tabBar = self.tabBarController
|
|
((tabBar as? HomeViewController)?.ebayGraphManager.deauthorizeApp())!
|
|
|
|
cell.networkToggle.on = ((tabBar as? HomeViewController)?.ebayGraphManager.isAuthorized)!
|
|
|
|
}
|
|
else{
|
|
//code to authorize network
|
|
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
|
cell.networkToggle.setOn(true, animated: true)
|
|
})
|
|
|
|
let tabBar = self.tabBarController
|
|
((tabBar as? HomeViewController)?.ebayGraphManager.authorizeApp())!
|
|
|
|
cell.networkToggle.on = ((tabBar as? HomeViewController)?.ebayGraphManager.isAuthorized)!
|
|
}
|
|
|
|
break
|
|
case 1:
|
|
let cell: AmazonTableViewCell!
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("amazon", forIndexPath: indexPath) as! AmazonTableViewCell)
|
|
cell.setSelected(false, animated: false)
|
|
|
|
|
|
//OAuthorization code for amazon
|
|
if(cell.networkToggle.on == true){
|
|
|
|
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
|
cell.networkToggle.setOn(false, animated: true)
|
|
})
|
|
//code to deauthorize network
|
|
|
|
}
|
|
else{
|
|
|
|
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
|
cell.networkToggle.setOn(true, animated: true)
|
|
})
|
|
//code to authorize network
|
|
}
|
|
|
|
break
|
|
|
|
|
|
case 2:
|
|
let cell: EtsyTableViewCell!
|
|
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("etsy", forIndexPath: indexPath) as! EtsyTableViewCell)
|
|
cell.setSelected(false, animated: false)
|
|
|
|
|
|
//OAuthorization code for etsy
|
|
if(((self.tabBarController as? HomeViewController)?.etsyManager.isAuthorized)!){
|
|
|
|
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
|
cell.networkToggle.setOn(false, animated: true)
|
|
})
|
|
|
|
//code to deauthorize network
|
|
let tabBar = self.tabBarController
|
|
|
|
((tabBar as? HomeViewController)?.etsyManager.deAuthorizeApp(self))!
|
|
cell.networkToggle.on = ((tabBar as? HomeViewController)?.etsyManager.isAuthorized)!
|
|
}
|
|
else{
|
|
|
|
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
|
cell.networkToggle.setOn(true, animated: true)
|
|
})
|
|
//code to authorize network
|
|
|
|
|
|
//this is the type of code desired to access the rest management classes
|
|
|
|
let tabBar = self.tabBarController
|
|
((tabBar as? HomeViewController)?.etsyManager.authorizeApp(self))!
|
|
|
|
cell.networkToggle.on = ((tabBar as? HomeViewController)?.etsyManager.isAuthorized)!
|
|
|
|
|
|
//self.etsyManager.authorizeApp(self)
|
|
}
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
let cell: FBTableViewCell!
|
|
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("facebook", forIndexPath: indexPath) as! FBTableViewCell)
|
|
cell.setSelected(false, animated: false)
|
|
|
|
//OAuthorization code for facebook
|
|
if((self.tabBarController as? HomeViewController)?.fbGraphManager.isAuthorized)!{
|
|
|
|
|
|
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
|
cell.networkToggle.setOn(false, animated: true)
|
|
})
|
|
|
|
//code to deauthorize network
|
|
let tabBar = self.tabBarController
|
|
let didSucceed:Bool = ((tabBar as? HomeViewController)?.fbGraphManager.deAuthorizeApp(self))!
|
|
cell.networkToggle.on = !didSucceed
|
|
}
|
|
else{
|
|
|
|
dispatch_async(dispatch_get_main_queue(), { () -> Void in
|
|
cell.networkToggle.setOn(true, animated: true)
|
|
})
|
|
//code to authorize network
|
|
|
|
//this is the type of code desired to access the rest management classes
|
|
|
|
let tabBar = self.tabBarController
|
|
let didSucceed: Bool = ((tabBar as? HomeViewController)?.fbGraphManager.authorizeApp(self))!
|
|
|
|
cell.networkToggle.on = didSucceed
|
|
|
|
|
|
}
|
|
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
// 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
|
|
}
|
|
*/
|
|
}
|
|
|
|
extension NetworksTableViewController: EbayWebServiceManagerDelegate {
|
|
func signInUser(signInString : String!) {
|
|
let myWebView:UIWebView = UIWebView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height))
|
|
myWebView.delegate = self
|
|
myWebView.loadRequest(NSURLRequest(URL: NSURL(string: signInString)!))
|
|
self.view.addSubview(myWebView)
|
|
}
|
|
}
|
|
|
|
extension NetworksTableViewController: UIWebViewDelegate {
|
|
|
|
func webView(webView: UIWebView, didFailLoadWithError error: NSError?) {
|
|
print("Webview fail with error \(error)");
|
|
}
|
|
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
|
|
return true;
|
|
}
|
|
func webViewDidStartLoad(webView: UIWebView) {
|
|
print("Webview started Loading")
|
|
}
|
|
func webViewDidFinishLoad(webView: UIWebView) {
|
|
|
|
print("Webview did finish load")
|
|
if (webView.request != nil)
|
|
{
|
|
//print(webView.request?.allHTTPHeaderFields)
|
|
var responseString : NSString? = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.outerHTML")!
|
|
if((responseString!.containsString("Authorization successfully completed"))){
|
|
NSLog("Oauth successful")
|
|
((self.tabBarController as? HomeViewController)?.ebayGraphManager)!.fetchToken()
|
|
}
|
|
|
|
/*var data : NSData? = NSData(contentsOfURL: NSURL(string: responseString as! String)!)!
|
|
if (data != nil){
|
|
let jsonObject: AnyObject?
|
|
do {
|
|
try jsonObject = NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves)
|
|
print(jsonObject)
|
|
|
|
}
|
|
catch {
|
|
|
|
}
|
|
}*/
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
extension NetworksTableViewController {
|
|
@IBAction func toggleAuth(sender: UIButton){
|
|
print(sender.superview!.superview!.classForCoder)
|
|
|
|
//Authorize app
|
|
if(sender.titleLabel?.text == "Login") {
|
|
switch (sender.superview?.superview?.classForCoder){
|
|
case is EbayTableViewCell.Type:
|
|
let tabBar = self.tabBarController
|
|
((tabBar as? HomeViewController)?.ebayGraphManager.authorizeApp())!
|
|
dispatch_async(dispatch_get_main_queue(), {
|
|
sender.setTitle("Logout", forState: UIControlState.Normal)
|
|
(sender.superview?.superview as! EbayTableViewCell).settingsBtn.enabled = true
|
|
(sender.superview?.superview as! EbayTableViewCell).settingsBtn.hidden = false
|
|
})
|
|
break
|
|
case is AmazonTableViewCell.Type:
|
|
break
|
|
case is EtsyTableViewCell.Type:
|
|
let tabBar = self.tabBarController
|
|
((tabBar as? HomeViewController)?.etsyManager.authorizeApp(self))!
|
|
dispatch_async(dispatch_get_main_queue(), {
|
|
sender.setTitle("Logout", forState: UIControlState.Normal)
|
|
(sender.superview?.superview as! EtsyTableViewCell).settingsBtn.enabled = true
|
|
(sender.superview?.superview as! EtsyTableViewCell).settingsBtn.hidden = false
|
|
})
|
|
break
|
|
case is FBTableViewCell.Type:
|
|
break
|
|
default:
|
|
break
|
|
}
|
|
}
|
|
//DeAuthorize app
|
|
else {
|
|
switch (sender.superview?.superview?.classForCoder){
|
|
case is EbayTableViewCell.Type:
|
|
let tabBar = self.tabBarController
|
|
((tabBar as? HomeViewController)?.ebayGraphManager.deauthorizeApp())!
|
|
dispatch_async(dispatch_get_main_queue(), {
|
|
sender.setTitle("Login", forState: UIControlState.Normal)
|
|
(sender.superview?.superview as! EbayTableViewCell).settingsBtn.enabled = false
|
|
(sender.superview?.superview as! EbayTableViewCell).settingsBtn.hidden = true
|
|
|
|
})
|
|
break
|
|
case is AmazonTableViewCell.Type:
|
|
break
|
|
case is EtsyTableViewCell.Type:
|
|
let tabBar = self.tabBarController
|
|
((tabBar as? HomeViewController)?.etsyManager.deAuthorizeApp(self))!
|
|
dispatch_async(dispatch_get_main_queue(), {
|
|
sender.setTitle("Login", forState: UIControlState.Normal)
|
|
(sender.superview?.superview as! EtsyTableViewCell).settingsBtn.enabled = false
|
|
(sender.superview?.superview as! EtsyTableViewCell).settingsBtn.hidden = true
|
|
})
|
|
break
|
|
case is FBTableViewCell.Type:
|
|
break
|
|
default:
|
|
break
|
|
}
|
|
}
|
|
|
|
}
|
|
} |