mirror of
https://bitbucket.org/vendoo/vendoo_v1.0.git
synced 2025-12-25 03:37:39 +00:00
840 lines
36 KiB
Swift
840 lines
36 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
|
|
import SWRevealViewController
|
|
|
|
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()
|
|
private var shouldShowDictionary: Dictionary<String, Bool> = ["ebay":false, "amazon":false,"etsy":false,"facebook":false]
|
|
private var networkOrderSelection: [String] = []
|
|
private var networkCount = 0
|
|
var loadingView: UIView!
|
|
|
|
|
|
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
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 viewDidAppear(animated: Bool) {
|
|
if (!self.networkToggleOrSelect) {
|
|
(menuButton.target as! SWRevealViewController).delegate = self
|
|
self.tableView.reloadData()
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
func toggleMarketPlaceVisibitlity (market: String) {
|
|
self.shouldShowDictionary[market] = !self.shouldShowDictionary[market]!
|
|
}
|
|
|
|
private func checkVisibility () -> String? {
|
|
var string = ""
|
|
for (market, visibility) in self.shouldShowDictionary {
|
|
if visibility {
|
|
self.networkCount += 1
|
|
self.shouldShowDictionary[market] = !self.shouldShowDictionary[market]!
|
|
string = market
|
|
self.networkOrderSelection.append(market)
|
|
break
|
|
}
|
|
}
|
|
return string
|
|
}
|
|
|
|
override func viewWillAppear(animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
if(!networkToggleOrSelect) {
|
|
self.tabBarController?.tabBar.hidden = false
|
|
}
|
|
}
|
|
}
|
|
|
|
//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, etsyManager: EtsyRESTAPIManager){
|
|
self.graphManager = fbManager
|
|
self.firManager = fireManager
|
|
self.ebayManager = ebayManager
|
|
self.etsyManager = etsyManager
|
|
}
|
|
|
|
}
|
|
|
|
// MARK: - Side Menu View
|
|
extension NetworksTableViewController: SWRevealViewControllerDelegate {
|
|
func revealController(revealController: SWRevealViewController!, didMoveToPosition position: FrontViewPosition) {
|
|
if(position == FrontViewPosition.Left) {
|
|
for view in self.view.subviews {
|
|
view.userInteractionEnabled = true
|
|
}
|
|
self.tabBarController?.tabBar.userInteractionEnabled = true
|
|
} else {
|
|
for view in self.view.subviews {
|
|
if !view.isKindOfClass(UINavigationBar){
|
|
view.userInteractionEnabled = false
|
|
}
|
|
}
|
|
self.tabBarController?.tabBar.userInteractionEnabled = false
|
|
}
|
|
}
|
|
|
|
func revealController(revealController: SWRevealViewController!, willMoveToPosition position: FrontViewPosition) {
|
|
if(position == FrontViewPosition.Left) {
|
|
for view in self.view.subviews {
|
|
view.userInteractionEnabled = true
|
|
}
|
|
self.tabBarController?.tabBar.userInteractionEnabled = true
|
|
} else {
|
|
for view in self.view.subviews {
|
|
if !view.isKindOfClass(UINavigationBar){
|
|
view.userInteractionEnabled = false
|
|
}
|
|
|
|
}
|
|
self.tabBarController?.tabBar.userInteractionEnabled = false
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// 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"){
|
|
if(networkCount > 0){
|
|
var count = 0;
|
|
for (_,v) in self.networksDictionary{
|
|
if v {
|
|
count += 1
|
|
}
|
|
}
|
|
|
|
if(count > 0){
|
|
(segue.destinationViewController as! ListingPreviewViewController).setDictionary(self.networksDictionary, itemdictionary: self.itemListingDictionary)
|
|
(segue.destinationViewController as! ListingPreviewViewController).setManagers(self.graphManager, fireManager: self.firManager, ebayManager: self.ebayManager, etsyManager: self.etsyManager)
|
|
}else{
|
|
let alert = UIAlertController(title: "No Networks Selected", message: "You have not selected any networks to publish on. At least 1 network must be selected to continue.", 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{
|
|
let alert = UIAlertController(title: "No Networks Authorized", message: "You currently have no authorized networks to post on. You will not be able to publish this listing until at least 1 network has been authorized and selected for publishing.", 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)
|
|
}
|
|
|
|
|
|
}
|
|
if(segue.identifier == "EbaySettingsSegue") {
|
|
(segue.destinationViewController as! EbaySettingsViewController).loadManager(self.ebayManager)
|
|
}
|
|
if(segue.identifier == "EtsySettingsSegue") {
|
|
(segue.destinationViewController as! EtsySettingsViewController).loadManager(self.etsyManager)
|
|
}
|
|
}
|
|
}
|
|
|
|
// 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 {
|
|
if(self.networkToggleOrSelect) {
|
|
var count = 0
|
|
// #warning Incomplete implementation, return the number of rows
|
|
for (_, visibility) in self.shouldShowDictionary {
|
|
if visibility {
|
|
count += 1
|
|
}
|
|
}
|
|
return count
|
|
}
|
|
else {
|
|
return /*4*/ 3
|
|
}
|
|
|
|
}
|
|
|
|
|
|
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){
|
|
|
|
let market = self.checkVisibility()!
|
|
switch (market) {
|
|
case "facebook":
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("facebook", forIndexPath: indexPath) as! FBTableViewCell)
|
|
break
|
|
case "ebay":
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("ebay", forIndexPath: indexPath) as! EbayTableViewCell)
|
|
break
|
|
case "etsy":
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("etsy", forIndexPath: indexPath) as! EtsyTableViewCell)
|
|
break
|
|
case "amazon":
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("amazon", forIndexPath: indexPath) as! AmazonTableViewCell)
|
|
break
|
|
default:
|
|
cell = UITableViewCell()
|
|
break
|
|
}
|
|
|
|
}
|
|
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).settingsBtn.enabled = true
|
|
(cell as! EbayTableViewCell).settingsBtn.hidden = false
|
|
|
|
})
|
|
}else{
|
|
(cell as! EbayTableViewCell).settingsBtn.enabled = false
|
|
(cell as! EbayTableViewCell).settingsBtn.hidden = true
|
|
(cell as! EbayTableViewCell).authorizeBtn.setTitle("Login", forState: UIControlState.Normal)
|
|
}
|
|
|
|
break
|
|
/*case 1:
|
|
//loads network cell for amazon
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("amazon", forIndexPath: indexPath) as! AmazonTableViewCell)
|
|
break*/
|
|
case 1:
|
|
//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).settingsBtn.enabled = true
|
|
(cell as! EtsyTableViewCell).settingsBtn.hidden = false
|
|
})
|
|
|
|
}else{
|
|
(cell as! EtsyTableViewCell).settingsBtn.enabled = false
|
|
(cell as! EtsyTableViewCell).settingsBtn.hidden = true
|
|
(cell as! EtsyTableViewCell).authorizeBtn.setTitle("Login", forState: UIControlState.Normal)
|
|
}
|
|
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).settingsBtn.enabled = true
|
|
(cell as! FBTableViewCell).settingsBtn.hidden = false
|
|
(cell as! FBTableViewCell).authorizeBtn.setTitle("Logout", forState: UIControlState.Normal)
|
|
})
|
|
}else{
|
|
dispatch_async(dispatch_get_main_queue(), {
|
|
(cell as! FBTableViewCell).settingsBtn.enabled = false
|
|
(cell as! FBTableViewCell).settingsBtn.hidden = true
|
|
(cell as! FBTableViewCell).authorizeBtn.setTitle("Login", forState: UIControlState.Normal)
|
|
})
|
|
}
|
|
|
|
break
|
|
}
|
|
}
|
|
|
|
return cell
|
|
}
|
|
}
|
|
|
|
|
|
//MARK: - IBActions
|
|
extension NetworksTableViewController {
|
|
|
|
@IBAction func showListingPreview(sender: AnyObject) {
|
|
|
|
self.performSegueWithIdentifier("ItemPreviewSegue", sender: self)
|
|
}
|
|
|
|
@IBAction func cancelListing(sender: AnyObject) {
|
|
self.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
|
|
}
|
|
|
|
@IBAction func draftItem(sender: AnyObject) {
|
|
|
|
self.loadingView = UIView(frame: self.view.frame)
|
|
self.loadingView.backgroundColor = UIColor.grayColor()
|
|
self.loadingView.alpha = 0.4
|
|
|
|
self.firManager.indicator.center = self.view.center
|
|
|
|
self.loadingView.addSubview(self.firManager.indicator)
|
|
self.view.addSubview(loadingView)
|
|
self.firManager.indicator.startAnimating()
|
|
|
|
if((self.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.networkCount > 0 ? (self.networksDictionary["areNetworksChosen"] = true) : (self.networksDictionary["areNetworksChosen"] = false)
|
|
|
|
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"],
|
|
"listingQuantity": self.itemListingDictionary["quantity"],
|
|
"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>)
|
|
self.firManager.indicator.stopAnimating()
|
|
self.loadingView.removeFromSuperview()
|
|
self.loadingView = nil
|
|
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 (self.networkOrderSelection[indexPath.row]){
|
|
case "ebay":
|
|
let cell: EbayTableViewCell!
|
|
cell = (self.tableView.dequeueReusableCellWithIdentifier("ebay", forIndexPath: indexPath) as! EbayTableViewCell)
|
|
cell.setSelected(false, animated: false)
|
|
|
|
//selection code for ebay
|
|
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 "amazon":
|
|
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 "etsy":
|
|
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)
|
|
cell.networkToggle.on = false
|
|
})
|
|
|
|
//code to deselect network
|
|
self.networksDictionary["etsy"] = false
|
|
}
|
|
else{
|
|
|
|
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
|
|
}
|
|
|
|
break
|
|
|
|
case "facebook":
|
|
|
|
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
|
|
|
|
}
|
|
break
|
|
default:
|
|
break
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
extension NetworksTableViewController: EbayWebServiceManagerDelegate {
|
|
|
|
//open webview for user to login with ebay
|
|
func signInUser(signInString : String!) {
|
|
let mywebViewController = UIViewController()
|
|
|
|
let myWebView = UIWebView(frame: mywebViewController.view.bounds)
|
|
myWebView.delegate = self
|
|
myWebView.loadRequest(NSURLRequest(URL: NSURL(string: signInString)!))
|
|
mywebViewController.view = myWebView
|
|
|
|
let navController = UINavigationController(rootViewController: mywebViewController)
|
|
|
|
//selector function to dismiss webview
|
|
mywebViewController.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: Selector("dismiss"))
|
|
|
|
self.presentViewController(navController, animated: true, completion: nil)
|
|
}
|
|
|
|
}
|
|
|
|
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)
|
|
{
|
|
var responseString : NSString? = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.outerHTML")!
|
|
if((responseString!.containsString("Authorization successfully completed"))){
|
|
NSLog("Oauth successful")
|
|
((self.tabBarController as? HomeViewController)?.ebayGraphManager)!.fetchToken({
|
|
(loginResponse, error) in
|
|
|
|
if((error as? Bool) != nil && (error as! Bool) && loginResponse as? [[String : String]] != nil){
|
|
var listOfErrors = ""
|
|
for errorData in loginResponse as! [[String:String]] {
|
|
if(errorData["severity_code"] == "Error") {
|
|
listOfErrors += "Error Code: " + errorData["error_code"]! + "\n"
|
|
if errorData["error_code"] == "931" {
|
|
listOfErrors += "Message: Must relogin into your account to reauthorize your Ebay account for Vendoo."
|
|
}else{
|
|
listOfErrors += "Message: " + errorData["long_message"]! + "\n\n"
|
|
}
|
|
}
|
|
}
|
|
|
|
let alert = UIAlertController(title: "A Problem With Ebay Login", message: "The following is the list of errors when logging in to ebay.\n\n\(listOfErrors).\n\nAn easy fix to this would be to deauthorize vendoo from your account manually on the Ebay official site and relogin with the Vendoo application.", preferredStyle: .Alert)
|
|
|
|
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler:{(action: UIAlertAction!) in
|
|
alert.dismissViewControllerAnimated(true, completion: {
|
|
|
|
})
|
|
}))
|
|
self.presentViewController(alert, animated: true, completion: nil)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
//called when webview is dismissed
|
|
func dismiss() {
|
|
self.dismissViewControllerAnimated(true, completion: nil)
|
|
}
|
|
|
|
}
|
|
|
|
|
|
extension NetworksTableViewController {
|
|
@IBAction func toggleAuth(sender: UIButton){
|
|
print(sender.superview!.superview!.classForCoder)
|
|
|
|
//Authorize app
|
|
if(sender.titleLabel?.text == "Login") {
|
|
|
|
//check which network cell was selected to determine which network to perform oauth on
|
|
switch (sender.superview?.superview?.classForCoder){
|
|
case is EbayTableViewCell.Type:
|
|
let tabBar = self.tabBarController
|
|
((tabBar as? HomeViewController)?.ebayGraphManager.authorizeApp({
|
|
something,_ -> Void in
|
|
// switch login button to logout and display settings button once login process is complete
|
|
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, onComplete: {
|
|
something , _ -> Void in
|
|
// switch login button to logout and display settings button once login process is complete
|
|
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:
|
|
let tabBar = self.tabBarController
|
|
((tabBar as? HomeViewController)?.fbGraphManager.authorizeApp(self, onComplete: {
|
|
something , _ -> Void in
|
|
// switch login button to logout and display settings button once login process is complete
|
|
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
|
|
}
|
|
}
|
|
//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(), {
|
|
// switch logout button to login and hide settings button once login process is complete
|
|
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(), {
|
|
// switch logout button to login and hide settings button once login process is complete
|
|
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:
|
|
let tabBar = self.tabBarController
|
|
((tabBar as? HomeViewController)?.fbGraphManager.deAuthorizeApp(self))!
|
|
dispatch_async(dispatch_get_main_queue(), {
|
|
// switch logout button to login and hide settings button once login process is complete
|
|
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
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
@IBAction func toggleNetworkSelection(sender: UISwitch) {
|
|
switch (sender.superview?.superview?.classForCoder){
|
|
case is EbayTableViewCell.Type:
|
|
//selection code for ebay
|
|
if((sender.superview?.superview as! EbayTableViewCell).networkToggle.on){
|
|
|
|
|
|
//code to select network
|
|
self.networksDictionary["ebay"] = true
|
|
}
|
|
else{
|
|
|
|
//code to deselect network
|
|
self.networksDictionary["ebay"] = false
|
|
|
|
}
|
|
break
|
|
/*case is AmazonTableViewCell.Type:
|
|
//selection code for amazon
|
|
if((sender.superview?.superview as! AmazonTableViewCell).networkToggle.on){
|
|
|
|
|
|
//code to select network
|
|
self.networksDictionary["amazon"] = true
|
|
}
|
|
else{
|
|
|
|
//code to deselect network
|
|
self.networksDictionary["amazon"] = false
|
|
|
|
}
|
|
break*/
|
|
case is EtsyTableViewCell.Type:
|
|
//selection code for etsy
|
|
if((sender.superview?.superview as! EtsyTableViewCell).networkToggle.on){
|
|
|
|
|
|
//code to select network
|
|
self.networksDictionary["etsy"] = true
|
|
}
|
|
else{
|
|
|
|
//code to deselect network
|
|
self.networksDictionary["etsy"] = false
|
|
|
|
}
|
|
break
|
|
case is FBTableViewCell.Type:
|
|
//selection code for facebook
|
|
if((sender.superview?.superview as! FBTableViewCell).networkToggle.on){
|
|
|
|
|
|
//code to select network
|
|
self.networksDictionary["facebook"] = true
|
|
}
|
|
else{
|
|
|
|
//code to deselect network
|
|
self.networksDictionary["facebook"] = false
|
|
|
|
}
|
|
break
|
|
default:
|
|
break
|
|
}
|
|
}
|
|
} |