Merged branch Rapid-Dev-Branch into master

This commit is contained in:
Okechi Onyeje 2016-11-10 21:35:15 -05:00
commit ed66ebaa45
19 changed files with 1966 additions and 149 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -127,6 +127,11 @@
<key>primary</key> <key>primary</key>
<true/> <true/>
</dict> </dict>
<key>0EB19C1377A747F81110D44E2D5FCF78</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>0FF38C485BD8E73F614C919F834D6EAB</key> <key>0FF38C485BD8E73F614C919F834D6EAB</key>
<dict> <dict>
<key>primary</key> <key>primary</key>

View File

@ -16,6 +16,7 @@
3E1B1F0B1D2493EE00DBCF08 /* EtsySettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1B1F0A1D2493EE00DBCF08 /* EtsySettingsViewController.swift */; }; 3E1B1F0B1D2493EE00DBCF08 /* EtsySettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1B1F0A1D2493EE00DBCF08 /* EtsySettingsViewController.swift */; };
3E1DC3CD1D4232490091BC60 /* CategoriesTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1DC3CC1D4232490091BC60 /* CategoriesTableViewController.swift */; }; 3E1DC3CD1D4232490091BC60 /* CategoriesTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1DC3CC1D4232490091BC60 /* CategoriesTableViewController.swift */; };
3E1DC3CF1D42328C0091BC60 /* CategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1DC3CE1D42328C0091BC60 /* CategoryCell.swift */; }; 3E1DC3CF1D42328C0091BC60 /* CategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1DC3CE1D42328C0091BC60 /* CategoryCell.swift */; };
3E3A004A1D76680E00A3A5B6 /* ServiceNotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3A00491D76680E00A3A5B6 /* ServiceNotificationManager.swift */; };
3E4897D11D0067030069F742 /* FirebaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E4897D01D0067030069F742 /* FirebaseManager.swift */; }; 3E4897D11D0067030069F742 /* FirebaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E4897D01D0067030069F742 /* FirebaseManager.swift */; };
3E6CC3571CF2A94B00E00A70 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC3561CF2A94B00E00A70 /* AppDelegate.swift */; }; 3E6CC3571CF2A94B00E00A70 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC3561CF2A94B00E00A70 /* AppDelegate.swift */; };
3E6CC3591CF2A94B00E00A70 /* SignInViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC3581CF2A94B00E00A70 /* SignInViewController.swift */; }; 3E6CC3591CF2A94B00E00A70 /* SignInViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6CC3581CF2A94B00E00A70 /* SignInViewController.swift */; };
@ -40,6 +41,8 @@
3EC3252F1CF894E500626C48 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EC3252E1CF894E500626C48 /* AVFoundation.framework */; }; 3EC3252F1CF894E500626C48 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EC3252E1CF894E500626C48 /* AVFoundation.framework */; };
3ECEDB871CF9C722003566B3 /* ListingPreviewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3ECEDB861CF9C722003566B3 /* ListingPreviewViewController.swift */; }; 3ECEDB871CF9C722003566B3 /* ListingPreviewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3ECEDB861CF9C722003566B3 /* ListingPreviewViewController.swift */; };
3EDE75AE1D67B92F00BC3472 /* CategoryPopUpController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EDE75AD1D67B92F00BC3472 /* CategoryPopUpController.swift */; }; 3EDE75AE1D67B92F00BC3472 /* CategoryPopUpController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EDE75AD1D67B92F00BC3472 /* CategoryPopUpController.swift */; };
3EE734E61DCD34AE00F771AE /* NotificationsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EE734E51DCD34AE00F771AE /* NotificationsViewController.swift */; };
3EE734E81DCD34B900F771AE /* NotificationTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EE734E71DCD34B900F771AE /* NotificationTableViewCell.swift */; };
3EF422B21D73262000B9A3EB /* UserCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF422B11D73262000B9A3EB /* UserCell.swift */; }; 3EF422B21D73262000B9A3EB /* UserCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF422B11D73262000B9A3EB /* UserCell.swift */; };
3EFB0E331D0B968300A05D7A /* SideMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EFB0E321D0B968300A05D7A /* SideMenuView.swift */; }; 3EFB0E331D0B968300A05D7A /* SideMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EFB0E321D0B968300A05D7A /* SideMenuView.swift */; };
3F8E0464700649BDD8B552B1 /* Pods_Vendoo_VendooTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B876489113F498AF1D2FD7E9 /* Pods_Vendoo_VendooTests.framework */; }; 3F8E0464700649BDD8B552B1 /* Pods_Vendoo_VendooTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B876489113F498AF1D2FD7E9 /* Pods_Vendoo_VendooTests.framework */; };
@ -74,6 +77,7 @@
3E1B1F0A1D2493EE00DBCF08 /* EtsySettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EtsySettingsViewController.swift; sourceTree = "<group>"; }; 3E1B1F0A1D2493EE00DBCF08 /* EtsySettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EtsySettingsViewController.swift; sourceTree = "<group>"; };
3E1DC3CC1D4232490091BC60 /* CategoriesTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoriesTableViewController.swift; sourceTree = "<group>"; }; 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>"; }; 3E1DC3CE1D42328C0091BC60 /* CategoryCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoryCell.swift; sourceTree = "<group>"; };
3E3A00491D76680E00A3A5B6 /* ServiceNotificationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceNotificationManager.swift; sourceTree = "<group>"; };
3E4897D01D0067030069F742 /* FirebaseManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FirebaseManager.swift; sourceTree = "<group>"; }; 3E4897D01D0067030069F742 /* FirebaseManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FirebaseManager.swift; sourceTree = "<group>"; };
3E6CC3531CF2A94B00E00A70 /* Vendoo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Vendoo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 3E6CC3531CF2A94B00E00A70 /* Vendoo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Vendoo.app; sourceTree = BUILT_PRODUCTS_DIR; };
3E6CC3561CF2A94B00E00A70 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 3E6CC3561CF2A94B00E00A70 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
@ -106,6 +110,8 @@
3EC3252E1CF894E500626C48 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 3EC3252E1CF894E500626C48 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
3ECEDB861CF9C722003566B3 /* ListingPreviewViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListingPreviewViewController.swift; sourceTree = "<group>"; }; 3ECEDB861CF9C722003566B3 /* ListingPreviewViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListingPreviewViewController.swift; sourceTree = "<group>"; };
3EDE75AD1D67B92F00BC3472 /* CategoryPopUpController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoryPopUpController.swift; sourceTree = "<group>"; }; 3EDE75AD1D67B92F00BC3472 /* CategoryPopUpController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoryPopUpController.swift; sourceTree = "<group>"; };
3EE734E51DCD34AE00F771AE /* NotificationsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationsViewController.swift; sourceTree = "<group>"; };
3EE734E71DCD34B900F771AE /* NotificationTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationTableViewCell.swift; sourceTree = "<group>"; };
3EF422B11D73262000B9A3EB /* UserCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserCell.swift; sourceTree = "<group>"; }; 3EF422B11D73262000B9A3EB /* UserCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserCell.swift; sourceTree = "<group>"; };
3EFB0E321D0B968300A05D7A /* SideMenuView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SideMenuView.swift; sourceTree = "<group>"; }; 3EFB0E321D0B968300A05D7A /* SideMenuView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SideMenuView.swift; sourceTree = "<group>"; };
7D1FC6F6278B48A7BA9A9E03 /* Pods_Vendoo_VendooUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Vendoo_VendooUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7D1FC6F6278B48A7BA9A9E03 /* Pods_Vendoo_VendooUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Vendoo_VendooUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@ -171,6 +177,7 @@
3E4897CE1D0062860069F742 /* Services */ = { 3E4897CE1D0062860069F742 /* Services */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
3E3A00491D76680E00A3A5B6 /* ServiceNotificationManager.swift */,
3EA668941D026E2A00EE57A8 /* EbayServices */, 3EA668941D026E2A00EE57A8 /* EbayServices */,
3E4897CF1D00629B0069F742 /* FirebaseServices */, 3E4897CF1D00629B0069F742 /* FirebaseServices */,
3E7CF3FF1CF6363200F486B2 /* EtsyServices */, 3E7CF3FF1CF6363200F486B2 /* EtsyServices */,
@ -324,9 +331,19 @@
name = NewItemPostingSession; name = NewItemPostingSession;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
3EE734E41DCD347900F771AE /* Notifications */ = {
isa = PBXGroup;
children = (
3EE734E71DCD34B900F771AE /* NotificationTableViewCell.swift */,
3EE734E51DCD34AE00F771AE /* NotificationsViewController.swift */,
);
name = Notifications;
sourceTree = "<group>";
};
3EFB0E2F1D0B95B200A05D7A /* Menu */ = { 3EFB0E2F1D0B95B200A05D7A /* Menu */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
3EE734E41DCD347900F771AE /* Notifications */,
3E1AA4331D0DD0B2005FCCBB /* Settings */, 3E1AA4331D0DD0B2005FCCBB /* Settings */,
3EFB0E321D0B968300A05D7A /* SideMenuView.swift */, 3EFB0E321D0B968300A05D7A /* SideMenuView.swift */,
3E1AA4311D0DA071005FCCBB /* MenuPanelViewController.swift */, 3E1AA4311D0DA071005FCCBB /* MenuPanelViewController.swift */,
@ -741,6 +758,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
3EE734E81DCD34B900F771AE /* NotificationTableViewCell.swift in Sources */,
3E6CC35B1CF2A94B00E00A70 /* SignUpViewController.swift in Sources */, 3E6CC35B1CF2A94B00E00A70 /* SignUpViewController.swift in Sources */,
3E1AA4321D0DA071005FCCBB /* MenuPanelViewController.swift in Sources */, 3E1AA4321D0DA071005FCCBB /* MenuPanelViewController.swift in Sources */,
3E4897D11D0067030069F742 /* FirebaseManager.swift in Sources */, 3E4897D11D0067030069F742 /* FirebaseManager.swift in Sources */,
@ -753,11 +771,13 @@
3E7CF3FC1CF5FE9400F486B2 /* RecoverPasswordViewController.swift in Sources */, 3E7CF3FC1CF5FE9400F486B2 /* RecoverPasswordViewController.swift in Sources */,
3E1DC3CF1D42328C0091BC60 /* CategoryCell.swift in Sources */, 3E1DC3CF1D42328C0091BC60 /* CategoryCell.swift in Sources */,
3EC325111CF703A600626C48 /* ItemCell.swift in Sources */, 3EC325111CF703A600626C48 /* ItemCell.swift in Sources */,
3E3A004A1D76680E00A3A5B6 /* ServiceNotificationManager.swift in Sources */,
3EA668A11D02836C00EE57A8 /* EbayWebServiceManager.swift in Sources */, 3EA668A11D02836C00EE57A8 /* EbayWebServiceManager.swift in Sources */,
3EF422B21D73262000B9A3EB /* UserCell.swift in Sources */, 3EF422B21D73262000B9A3EB /* UserCell.swift in Sources */,
3ECEDB871CF9C722003566B3 /* ListingPreviewViewController.swift in Sources */, 3ECEDB871CF9C722003566B3 /* ListingPreviewViewController.swift in Sources */,
3E1B1F0B1D2493EE00DBCF08 /* EtsySettingsViewController.swift in Sources */, 3E1B1F0B1D2493EE00DBCF08 /* EtsySettingsViewController.swift in Sources */,
3EC325231CF7DA5500626C48 /* HomeViewController.swift in Sources */, 3EC325231CF7DA5500626C48 /* HomeViewController.swift in Sources */,
3EE734E61DCD34AE00F771AE /* NotificationsViewController.swift in Sources */,
3EC3252D1CF894C400626C48 /* ItemImagePickerViewController.swift in Sources */, 3EC3252D1CF894C400626C48 /* ItemImagePickerViewController.swift in Sources */,
3E1DC3CD1D4232490091BC60 /* CategoriesTableViewController.swift in Sources */, 3E1DC3CD1D4232490091BC60 /* CategoriesTableViewController.swift in Sources */,
3E7CF4011CF6366300F486B2 /* EtsyRESTAPIManager.swift in Sources */, 3E7CF4011CF6366300F486B2 /* EtsyRESTAPIManager.swift in Sources */,

View File

@ -0,0 +1,786 @@
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
type = "0"
version = "2.0">
<Breakpoints>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "286"
endingLineNumber = "286"
landmarkName = "listingHasEnded(_:ebayInfo:amazonInfo:etsyInfo:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "293"
endingLineNumber = "293"
landmarkName = "listingHasEnded(_:ebayInfo:amazonInfo:etsyInfo:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/EtsyRESTAPIManager.swift"
timestampString = "498402567.760806"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "625"
endingLineNumber = "625"
landmarkName = "getListingInfo(_:onCompletion:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/EtsyRESTAPIManager.swift"
timestampString = "498399550.82937"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "618"
endingLineNumber = "618"
landmarkName = "getListingInfo(_:onCompletion:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/EtsyRESTAPIManager.swift"
timestampString = "498402567.760806"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "623"
endingLineNumber = "623"
landmarkName = "getListingInfo(_:onCompletion:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/ServiceNotificationManager.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "236"
endingLineNumber = "236">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500475450.307316"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "373"
endingLineNumber = "373"
landmarkName = "listingHasNewNotifications(_:ebayInfo:amazonInfo:etsyInfo:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500475450.307316"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "375"
endingLineNumber = "375"
landmarkName = "listingHasNewNotifications(_:ebayInfo:amazonInfo:etsyInfo:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/FacebookGraphAPIManager.swift"
timestampString = "500214475.708805"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "243"
endingLineNumber = "243"
landmarkName = "getListingInfo(_:onCompletion:)"
landmarkType = "5">
<Locations>
<Location
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Vendoo.FacebookGraphAPIManager.getListingInfo (Swift.ImplicitlyUnwrappedOptional&lt;Swift.String&gt;, onCompletion : Swift.ImplicitlyUnwrappedOptional&lt;(Swift.Optional&lt;Swift.AnyObject&gt;, Swift.Optional&lt;__ObjC.NSError&gt;) -&gt; ()&gt;) -&gt; ()"
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/FacebookGraphAPIManager.swift"
timestampString = "499916772.054646"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "244"
endingLineNumber = "244"
offsetFromSymbolStart = "357">
</Location>
<Location
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Vendoo.FacebookGraphAPIManager.(getListingInfo (Swift.ImplicitlyUnwrappedOptional&lt;Swift.String&gt;, onCompletion : Swift.ImplicitlyUnwrappedOptional&lt;(Swift.Optional&lt;Swift.AnyObject&gt;, Swift.Optional&lt;__ObjC.NSError&gt;) -&gt; ()&gt;) -&gt; ()).(closure #1)"
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/FacebookGraphAPIManager.swift"
timestampString = "499916772.054749"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "245"
endingLineNumber = "245"
offsetFromSymbolStart = "23">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/FacebookGraphAPIManager.swift"
timestampString = "500215169.912319"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "252"
endingLineNumber = "252"
landmarkName = "getListingInfo(_:onCompletion:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/FacebookGraphAPIManager.swift"
timestampString = "500215169.912319"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "255"
endingLineNumber = "255"
landmarkName = "FacebookGraphAPIManager"
landmarkType = "3">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/FacebookGraphAPIManager.swift"
timestampString = "500215169.912319"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "257"
endingLineNumber = "257">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/ServiceNotificationManager.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "164"
endingLineNumber = "164"
landmarkName = "pollServices()"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/ServiceNotificationManager.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "170"
endingLineNumber = "170"
landmarkName = "pollServices()"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/ServiceNotificationManager.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "203"
endingLineNumber = "203"
landmarkName = "pollServices()"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500475450.307316"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "403"
endingLineNumber = "403"
landmarkName = "listingHasNewNotifications(_:ebayInfo:amazonInfo:etsyInfo:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500475450.307316"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "410"
endingLineNumber = "410"
landmarkName = "listingHasNewNotifications(_:ebayInfo:amazonInfo:etsyInfo:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/ServiceNotificationManager.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "174"
endingLineNumber = "174"
landmarkName = "pollServices()"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "153"
endingLineNumber = "153"
landmarkName = "viewDidLoad()"
landmarkType = "5">
<Locations>
<Location
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Vendoo.HomeViewController.(viewDidLoad () -&gt; ()).(closure #1).(closure #1).(closure #1).(closure #1).(closure #1)"
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/HomeViewController.swift"
timestampString = "500214480.386596"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "146"
endingLineNumber = "146"
offsetFromSymbolStart = "2573">
</Location>
<Location
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Vendoo.HomeViewController.(viewDidLoad () -&gt; ()).(closure #1).(closure #1).(closure #1).(closure #1).(closure #1).(closure #2)"
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/HomeViewController.swift"
timestampString = "500214480.386715"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "146"
endingLineNumber = "146"
offsetFromSymbolStart = "22978">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "165"
endingLineNumber = "165"
landmarkName = "viewDidLoad()"
landmarkType = "5">
<Locations>
<Location
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Vendoo.HomeViewController.(viewDidLoad () -&gt; ()).(closure #1).(closure #1).(closure #1)"
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/HomeViewController.swift"
timestampString = "500215171.289152"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "155"
endingLineNumber = "155"
offsetFromSymbolStart = "1675">
</Location>
<Location
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Vendoo.HomeViewController.(viewDidLoad () -&gt; ()).(closure #1).(closure #1).(closure #1).(closure #1)"
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/HomeViewController.swift"
timestampString = "500215171.289318"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "155"
endingLineNumber = "155"
offsetFromSymbolStart = "1537">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/NotificationTableViewCell.swift"
timestampString = "499993520.858648"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "13"
endingLineNumber = "13"
landmarkName = "NotificationTableViewCell"
landmarkType = "3">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/FacebookGraphAPIManager.swift"
timestampString = "500214387.985452"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "245"
endingLineNumber = "245"
landmarkName = "getListingInfo(_:onCompletion:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/FacebookGraphAPIManager.swift"
timestampString = "500215169.912319"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "249"
endingLineNumber = "249"
landmarkName = "getListingInfo(_:onCompletion:)"
landmarkType = "5">
<Locations>
<Location
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Vendoo.FacebookGraphAPIManager.(getListingInfo (Swift.ImplicitlyUnwrappedOptional&lt;Swift.String&gt;, onCompletion : Swift.ImplicitlyUnwrappedOptional&lt;(Swift.Optional&lt;Swift.AnyObject&gt;, Swift.Optional&lt;__ObjC.NSError&gt;) -&gt; ()&gt;) -&gt; ()).(closure #1)"
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/FacebookGraphAPIManager.swift"
timestampString = "500214480.389538"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "249"
endingLineNumber = "249"
offsetFromSymbolStart = "233">
</Location>
<Location
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Vendoo.FacebookGraphAPIManager.(getListingInfo (Swift.ImplicitlyUnwrappedOptional&lt;Swift.String&gt;, onCompletion : Swift.ImplicitlyUnwrappedOptional&lt;(Swift.Optional&lt;Swift.AnyObject&gt;, Swift.Optional&lt;__ObjC.NSError&gt;) -&gt; ()&gt;) -&gt; ()).(closure #1).(closure #1)"
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/FacebookGraphAPIManager.swift"
timestampString = "500214480.389655"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "249"
endingLineNumber = "249"
offsetFromSymbolStart = "254">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "152"
endingLineNumber = "152"
landmarkName = "viewDidLoad()"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "150"
endingLineNumber = "150"
landmarkName = "viewDidLoad()"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "151"
endingLineNumber = "151"
landmarkName = "viewDidLoad()"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/FacebookGraphAPIManager.swift"
timestampString = "500215169.912319"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "247"
endingLineNumber = "247"
landmarkName = "getListingInfo(_:onCompletion:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/ServiceNotificationManager.swift"
timestampString = "500219461.305955"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "128"
endingLineNumber = "128"
landmarkName = "pollServices()"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "310"
endingLineNumber = "310"
landmarkName = "listingHasEnded(_:ebayInfo:amazonInfo:etsyInfo:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "313"
endingLineNumber = "313"
landmarkName = "listingHasEnded(_:ebayInfo:amazonInfo:etsyInfo:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500473804.952967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "322"
endingLineNumber = "322"
landmarkName = "listingHasEnded(_:ebayInfo:amazonInfo:etsyInfo:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500475450.307316"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "335"
endingLineNumber = "335"
landmarkName = "listingHasEnded(_:ebayInfo:amazonInfo:etsyInfo:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500474943.700874"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "33"
endingLineNumber = "33"
landmarkName = "viewDidLoad()"
landmarkType = "5">
<Locations>
<Location
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Vendoo.HomeViewController.(viewDidLoad () -&gt; ()).(closure #1)"
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/HomeViewController.swift"
timestampString = "500479034.794063"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "33"
endingLineNumber = "33"
offsetFromSymbolStart = "19">
</Location>
<Location
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Vendoo.HomeViewController.(viewDidLoad () -&gt; ()).(closure #1).(closure #1)"
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/HomeViewController.swift"
timestampString = "500479034.794166"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "36"
endingLineNumber = "36"
offsetFromSymbolStart = "48">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "500474964.899818"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "36"
endingLineNumber = "36"
landmarkName = "viewDidLoad()"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/NotificationsViewController.swift"
timestampString = "500478897.162903"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "45"
endingLineNumber = "45"
landmarkName = "tableView(_:didSelectRowAtIndexPath:)"
landmarkType = "5">
<Locations>
<Location
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Vendoo.NotificationsViewController.tableView (__ObjC.UITableView, didSelectRowAtIndexPath : __ObjC.NSIndexPath) -&gt; ()"
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/NotificationsViewController.swift"
timestampString = "500479034.795518"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "45"
endingLineNumber = "45"
offsetFromSymbolStart = "101">
</Location>
<Location
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Vendoo.NotificationsViewController.(tableView (__ObjC.UITableView, didSelectRowAtIndexPath : __ObjC.NSIndexPath) -&gt; ()).(closure #1)"
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/NotificationsViewController.swift"
timestampString = "500479034.795677"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "45"
endingLineNumber = "45"
offsetFromSymbolStart = "19">
</Location>
<Location
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "Vendoo.NotificationsViewController.(tableView (__ObjC.UITableView, didSelectRowAtIndexPath : __ObjC.NSIndexPath) -&gt; ()).(closure #1).(closure #1)"
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/NotificationsViewController.swift"
timestampString = "500479034.795815"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "45"
endingLineNumber = "45"
offsetFromSymbolStart = "15">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/NotificationsViewController.swift"
timestampString = "500479690.07453"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "58"
endingLineNumber = "58"
landmarkName = "tableView(_:didSelectRowAtIndexPath:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

BIN
Vendoo/.DS_Store vendored

Binary file not shown.

View File

@ -19,11 +19,25 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
//configures firebase for app use //configures firebase for app use
FIRApp.configure() FIRApp.configure()
// Override point for customization after application launch.
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let view: UIViewController!
if NSUserDefaults.standardUserDefaults().boolForKey("signedIn"){
view = storyboard.instantiateViewControllerWithIdentifier("SignInViewController")
}else {
view = storyboard.instantiateViewControllerWithIdentifier("SignUp")
}
self.window?.rootViewController = view
self.window?.makeKeyAndVisible()
//configure facebook for app //configure facebook for app
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

View File

@ -41,6 +41,9 @@ class EbayWebServiceManager: NSObject {
private var isGettingSubCategories: Bool = false private var isGettingSubCategories: Bool = false
private var isRevisingListing: Bool = false private var isRevisingListing: Bool = false
private var requestGroup: dispatch_group_t = dispatch_group_create() private var requestGroup: dispatch_group_t = dispatch_group_create()
var isGettingNotification: Bool = false
private var qtySold: Int!
private var currItemQuantity: Int!
//---------------------------------------------// //---------------------------------------------//
@ -346,6 +349,27 @@ extension EbayWebServiceManager {
self.catDetailLevel = detailLevel self.catDetailLevel = detailLevel
self.requestMaker(soapMessage, theRequest: theRequest) self.requestMaker(soapMessage, theRequest: theRequest)
} }
func getListingInfo(listingID: String, onComplete: ServiceResponse?){
var soapMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<GetItemRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">" +
"<RequesterCredentials>" +
"<eBayAuthToken>\(self.xmlResponseDictionary["eBayAuthToken"] as! String)</eBayAuthToken>" +
"</RequesterCredentials>"
soapMessage = soapMessage +
"<ItemID>\(listingID)</ItemID>" +
"</GetItemRequest>"
let url = NSURL(string: self.baseURL)
let theRequest = NSMutableURLRequest(URL: url!)
theRequest.addValue("GetItem", forHTTPHeaderField: "X-EBAY-API-CALL-NAME")
self.completion = onComplete
self.isGettingNotification = true
self.requestMaker(soapMessage, theRequest: theRequest)
}
} }
extension EbayWebServiceManager: NSURLConnectionDelegate { extension EbayWebServiceManager: NSURLConnectionDelegate {
@ -471,21 +495,23 @@ extension EbayWebServiceManager: NSXMLParserDelegate {
self.completion(nil, nil) self.completion(nil, nil)
break break
case "UserID" : case "UserID" :
print(string) if(!self.isGettingNotification) {
EbayWebServiceManager.settingsDictionary["userID"] = string print(string)
NSUserDefaults.standardUserDefaults().setObject(EbayWebServiceManager.settingsDictionary, forKey: "ebaySettings") EbayWebServiceManager.settingsDictionary["userID"] = string
print(self.xmlResponseDictionary["eBayAuthToken"]) NSUserDefaults.standardUserDefaults().setObject(EbayWebServiceManager.settingsDictionary, forKey: "ebaySettings")
let soapmessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + print(self.xmlResponseDictionary["eBayAuthToken"])
"<GetCategoriesRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">" + let soapmessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<RequesterCredentials><eBayAuthToken>\(self.xmlResponseDictionary["eBayAuthToken"] as! String)</eBayAuthToken>" + "<GetCategoriesRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">" +
"</RequesterCredentials><CategorySiteID>0</CategorySiteID><DetailLevel>ReturnAll</DetailLevel><LevelLimit>1</LevelLimit>" + "<RequesterCredentials><eBayAuthToken>\(self.xmlResponseDictionary["eBayAuthToken"] as! String)</eBayAuthToken>" +
"</GetCategoriesRequest>" "</RequesterCredentials><CategorySiteID>0</CategorySiteID><DetailLevel>ReturnAll</DetailLevel><LevelLimit>1</LevelLimit>" +
"</GetCategoriesRequest>"
let url = NSURL(string: self.baseURL) let url = NSURL(string: self.baseURL)
let theRequest = NSMutableURLRequest(URL: url!) let theRequest = NSMutableURLRequest(URL: url!)
theRequest.addValue("GetCategories", forHTTPHeaderField: "X-EBAY-API-CALL-NAME") theRequest.addValue("GetCategories", forHTTPHeaderField: "X-EBAY-API-CALL-NAME")
self.completion(nil, nil) self.completion(nil, nil)
self.requestMaker(soapmessage, theRequest: theRequest) self.requestMaker(soapmessage, theRequest: theRequest)
}
break break
/* /*
Used to build both the top level categories, and subcategories on request during item listing workflow Used to build both the top level categories, and subcategories on request during item listing workflow
@ -497,9 +523,16 @@ extension EbayWebServiceManager: NSXMLParserDelegate {
self.catLevel = string self.catLevel = string
break break
case "CategoryName" : case "CategoryName" :
if(!self.isGettingSubCategories) { if (!self.isGettingNotification) {
if((EbayWebServiceManager.settingsDictionary["categories"]) == nil) { if(!self.isGettingSubCategories) {
EbayWebServiceManager.settingsDictionary["categories"] = Dictionary<String , Dictionary<String, AnyObject>>() if((EbayWebServiceManager.settingsDictionary["categories"]) == nil) {
EbayWebServiceManager.settingsDictionary["categories"] = Dictionary<String , Dictionary<String, AnyObject>>()
}
var dict: Dictionary<String, Dictionary<String, AnyObject>> = (EbayWebServiceManager.settingsDictionary["categories"]!) as! Dictionary<String, Dictionary<String, AnyObject>>
dict[string] = ["cat_id": self.catID, "isLeaf": false, "level": self.catLevel]
EbayWebServiceManager.settingsDictionary["categories"] = dict
NSUserDefaults.standardUserDefaults().setObject(EbayWebServiceManager.settingsDictionary, forKey: "ebaySettings")
} }
var dict: Dictionary<String, Dictionary<String, AnyObject>> = (EbayWebServiceManager.settingsDictionary["categories"]!) as! Dictionary<String, Dictionary<String, AnyObject>> var dict: Dictionary<String, Dictionary<String, AnyObject>> = (EbayWebServiceManager.settingsDictionary["categories"]!) as! Dictionary<String, Dictionary<String, AnyObject>>
@ -509,16 +542,17 @@ extension EbayWebServiceManager: NSXMLParserDelegate {
} }
else { else {
if "\(self.catDetailLevel)" == self.catLevel { /*if "\(self.catDetailLevel)" == self.catLevel {
if((self.subCategories[string] == nil )){ if((self.subCategories[string] == nil )){
self.subCategories[string] = ["cat_id": self.catID, "isLeaf": false, "level": self.catLevel] self.subCategories[string] = ["cat_id": self.catID, "isLeaf": false, "level": self.catLevel]
} }
} }
self.currentCategory = string*/
} }
self.currentCategory = string
break break
case "LeafCategory": case "LeafCategory":
@ -547,13 +581,38 @@ extension EbayWebServiceManager: NSXMLParserDelegate {
Used during the listing creation process to save the new listing id, as well as adding pictures to the new listing Used during the listing creation process to save the new listing id, as well as adding pictures to the new listing
*/ */
case "ItemID": case "ItemID":
self.completion(string, nil) if (!self.isGettingNotification) {
self.completion(string, nil)
}
break break
case "ReviseItemResponse": case "ReviseItemResponse":
self.isRevisingListing = true self.isRevisingListing = true
break break
/*
Used for retrieving listing info for notifications
*/
case "Quantity":
if self.isGettingNotification {
print("Quantity: \(string)")
self.currItemQuantity = Int(string)
}
break
case "QuantitySold":
if self.isGettingNotification {
print("QuantitySold: \(string)")
self.qtySold = Int(string)
}
break
case "ListingStatus":
if self.isGettingNotification {
print("ListingStatus: \(string)")
self.completion(["status":string, "quantitySold": self.qtySold, "itemQuantity": self.currItemQuantity], nil)
self.qtySold = nil
self.currItemQuantity = nil
}
break
default: default:
//print(string) //print(string)
print("\(self.currentElementName):\(string)") print("\(self.currentElementName):\(string)")

View File

@ -608,6 +608,28 @@ extension EtsyRESTAPIManager {
) )
} }
//gets listing info
func getListingInfo (request: String, onCompletion: ServiceResponse?) {
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)
var dict2 = (dict!["results"] as! [[String : AnyObject]])
let listingState = dict2[0]["state"] as! String
onCompletion!(["status":listingState], nil)
}, failure: {
(error) -> Void in
print(error)
}
)}
//sends the pregenerated url as a request to api service //sends the pregenerated url as a request to api service
func sendPOSTRequest(request: String, var body: [String: AnyObject]?, onCompletion: ServiceResponse?) { func sendPOSTRequest(request: String, var body: [String: AnyObject]?, onCompletion: ServiceResponse?) {

View File

@ -238,4 +238,18 @@ extension FacebookGraphAPIManager {
return boolResult return boolResult
} }
func getListingInfo(requestPath: String!, onCompletion: ServiceResponse!){
let graphRequest:FBSDKGraphRequest = FBSDKGraphRequest(graphPath: requestPath, parameters: nil, HTTPMethod: "GET")
dispatch_async(dispatch_get_main_queue(), {
graphRequest.startWithCompletionHandler({
(id, result, error) -> Void in
if error == nil {
onCompletion((result as! [String : AnyObject])["data"] as! [[String:AnyObject]],nil)
}
})
})
}
} }

View File

@ -16,11 +16,16 @@ class HomeViewController: UITabBarController {
let firebaseManager = FirebaseManager() let firebaseManager = FirebaseManager()
let ebayGraphManager = EbayWebServiceManager() let ebayGraphManager = EbayWebServiceManager()
var userListings: [Listing] = [] var userListings: [Listing] = []
var endedListings: [Listing] = []
var soldListings: [Listing] = []
var notificationsManager = ServiceNotificationManager()
var notifications: [Dictionary<String, AnyObject>] = (NSUserDefaults.standardUserDefaults().objectForKey("notifications") == nil ? [] : (NSUserDefaults.standardUserDefaults().objectForKey("notifications") as! [Dictionary<String, AnyObject>]))
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
ServiceNotificationManager.delegate = self
self.notificationsManager.setManagers(fbGraphManager, fireManager: firebaseManager, ebayManager: ebayGraphManager, etsyManager: etsyManager)
// Do any additional setup after loading the view. // Do any additional setup after loading the view.
dispatch_async(dispatch_get_main_queue(), { dispatch_async(dispatch_get_main_queue(), {
@ -32,14 +37,27 @@ class HomeViewController: UITabBarController {
let listingDict = userDict!["user_Listings"] as? [String : AnyObject] let listingDict = userDict!["user_Listings"] as? [String : AnyObject]
//sync notifications
/*if userDict!["notifications"] != nil {
self.notifications = []
for (_, v) in userDict!["notifications"] as! [String : AnyObject] {
if v["seen"] as! Bool == false {
self.notifications.append(v as! Dictionary<String, AnyObject>)
}
}
NSUserDefaults.standardUserDefaults().setObject(self.notifications, forKey: "notifications")
}*/
NSUserDefaults.standardUserDefaults().setObject(userDict!["name"] as? String, forKey: "name") NSUserDefaults.standardUserDefaults().setObject(userDict!["name"] as? String, forKey: "name")
if listingDict != nil { if listingDict != nil {
var notificationStartTracker = 0
dispatch_async(dispatch_get_main_queue(), { dispatch_async(dispatch_get_main_queue(), {
//let notificationStartGroup = dispatch_group_create()
for (key, values) in listingDict! { for (key, values) in listingDict! {
let serviceGroup: dispatch_group_t = dispatch_group_create() let serviceGroup: dispatch_group_t = dispatch_group_create()
//dispatch_group_enter(notificationStartGroup)
self.firebaseManager.ref.observeSingleEventOfType(.Value, withBlock: { snapshot in self.firebaseManager.ref.observeSingleEventOfType(.Value, withBlock: { snapshot in
let databaseDict = snapshot.value as! [String : AnyObject] let databaseDict = snapshot.value as! [String : AnyObject]
@ -54,6 +72,7 @@ class HomeViewController: UITabBarController {
if(error != nil){ if(error != nil){
print("problem retrieving items") print("problem retrieving items")
notificationStartTracker += 1
}else{ }else{
let mainImage = UIImage(data: dataMain!) let mainImage = UIImage(data: dataMain!)
@ -74,6 +93,9 @@ class HomeViewController: UITabBarController {
count+=1 count+=1
if(count == 4){ if(count == 4){
dispatch_group_leave(serviceGroup) dispatch_group_leave(serviceGroup)
notificationStartTracker += 1
//dispatch_group_enter(notificationStartGroup)
//dispatch_group_leave(notificationStartGroup)
} }
}) })
@ -83,23 +105,61 @@ class HomeViewController: UITabBarController {
dispatch_group_notify(serviceGroup, dispatch_get_main_queue(), { dispatch_group_notify(serviceGroup, dispatch_get_main_queue(), {
print(listingImages.count) print(listingImages.count)
let listingInfo = values as? [String : AnyObject] let listingInfo = values as? [String : AnyObject]
self.userListings.append(
Listing(itemTitle: (listingInfo!["listingTitle"] as? String)!,
itemCategory: listingInfo!["listingCategory"] as? String,
itemQuantity: (listingInfo!["listingQuantity"] as? String)!,
itemPrice: listingInfo!["listingPrice"] as? String,
itemDescription: listingInfo!["listingDescription"] as? String,
itemImages: listingImages,
isDraftListing: (listingInfo!["isListingDraft"] as? Bool)!,
itemKey: key,
networksSellingOn: (listingInfo!["networks"] as? Dictionary<String, Bool>)!
))
NSNotificationCenter.defaultCenter().postNotificationName("finished_fetching_listings", object: nil) if listingInfo!["listingStatus"] == nil {
self.userListings.append(
Listing(itemTitle: (listingInfo!["listingTitle"] as? String)!,
itemCategory: listingInfo!["listingCategory"] as? String,
itemQuantity: (listingInfo!["listingQuantity"] as? String)!,
itemPrice: listingInfo!["listingPrice"] as? String,
itemDescription: listingInfo!["listingDescription"] as? String,
itemImages: listingImages,
isDraftListing: (listingInfo!["isListingDraft"] as? Bool)!,
itemKey: key,
networksSellingOn: (listingInfo!["networks"] as? Dictionary<String, Bool>)!
))
}
else if listingInfo!["listingStatus"] as? String == "Ended" {
self.endedListings.append(
Listing(itemTitle: (listingInfo!["listingTitle"] as? String)!,
itemCategory: listingInfo!["listingCategory"] as? String,
itemQuantity: (listingInfo!["listingQuantity"] as? String)!,
itemPrice: listingInfo!["listingPrice"] as? String,
itemDescription: listingInfo!["listingDescription"] as? String,
itemImages: listingImages,
isDraftListing: (listingInfo!["isListingDraft"] as? Bool)!,
itemKey: key,
networksSellingOn: (listingInfo!["networks"] as? Dictionary<String, Bool>)!
))
}
else if listingInfo!["listingStatus"] as? String == "Sold" {
self.soldListings.append(
Listing(itemTitle: (listingInfo!["listingTitle"] as? String)!,
itemCategory: listingInfo!["listingCategory"] as? String,
itemQuantity: (listingInfo!["listingQuantity"] as? String)!,
itemPrice: listingInfo!["listingPrice"] as? String,
itemDescription: listingInfo!["listingDescription"] as? String,
itemImages: listingImages,
isDraftListing: (listingInfo!["isListingDraft"] as? Bool)!,
itemKey: key,
networksSellingOn: (listingInfo!["networks"] as? Dictionary<String, Bool>)!
))
}
print(notificationStartTracker)
if(notificationStartTracker == listingDict?.count){
NSNotificationCenter.defaultCenter().postNotificationName("finished_fetching_listings", object: nil)
self.notificationsManager.setListings(self.userListings)
self.notificationsManager.startServicePolling()
}
}) })
} }
}) })
@ -108,6 +168,11 @@ class HomeViewController: UITabBarController {
} }
/*
dispatch_group_notify(notificationStartGroup, dispatch_get_main_queue(), {
})*/
@ -139,3 +204,239 @@ class HomeViewController: UITabBarController {
} }
extension HomeViewController: ServiceNotificationManagerDelegate {
func listingHasFinishedRetrievingNotifications() {
NSUserDefaults.standardUserDefaults().setObject(self.notifications, forKey: "notifications")
}
func listingHasStartedRetrievingNotifications() {
}
func listingHasEnded(fbInfo: AnyObject?, ebayInfo: AnyObject?, amazonInfo: AnyObject?, etsyInfo: AnyObject?) {
var notificationArray: [[String: AnyObject]] = self.notifications
if (fbInfo != nil) {
notificationArray.append(
[
"network": "facebook",
"message": (ebayInfo as! [String : AnyObject])["notification"] as! String,
"type": "ended",
"seen":false,
"key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String,
"UUID": NSUUID().UUIDString
]
)
}
if (ebayInfo != nil) {
let notification = [
"network": "ebay",
"message": (ebayInfo as! [String : AnyObject])["notification"] as! String,
"type": (ebayInfo as! [String : AnyObject])["type"] as! String,
"seen":false,
"key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String,
"UUID": NSUUID().UUIDString
]
notificationArray.append(
notification as! [String : AnyObject]
)
self.endedListings.appendContentsOf( self.userListings.filter({$0.key == ((ebayInfo as! [String : AnyObject])["listingKey"] as! String)}))
self.userListings = self.userListings.filter({$0.key != ((ebayInfo as! [String : AnyObject])["listingKey"] as! String)})
let itemsView = self.viewControllers![0] as! ItemTableViewController
/*self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)/user_Listings/\(((ebayInfo as! [String : AnyObject])["listingKey"] as! String))").observeSingleEventOfType( .Value, withBlock: {
(snapshot) -> Void in
var listingDict = snapshot.value as? [String : AnyObject]
listingDict!["listingStatus"] = "Ended"
self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)/user_Listings/\(((ebayInfo as! [String : AnyObject])["listingKey"] as! String))").setValue(listingDict)
itemsView.itemTable.reloadData()
})*/
self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)").observeSingleEventOfType( .Value, withBlock: {
(snapshot) -> Void in
var userDict = snapshot.value as? [String : AnyObject]
var notifications = userDict!["notifications"] as? [String: AnyObject]
if notifications == nil {
userDict!["notifications"] = [((ebayInfo as! [String : AnyObject])["listingKey"] as! String):notification]
}else {
notifications![((ebayInfo as! [String : AnyObject])["listingKey"] as! String)] = notification
userDict!["notifications"] = notifications
}
var listings = userDict!["user_Listings"] as! [String: AnyObject]
var listingDict = (listings[((ebayInfo as! [String : AnyObject])["listingKey"] as! String)] as! [String : AnyObject])
listingDict["listingStatus"] = "Ended"
//save everything back to their respective dictionaries
listings[((ebayInfo as! [String : AnyObject])["listingKey"] as! String)] = listingDict
userDict!["user_Listings"] = listings
self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)").setValue(userDict, withCompletionBlock: {
(error, reference) -> Void in
if error == nil {
//reload data for notifications
NSUserDefaults.standardUserDefaults().setObject(notificationArray, forKey: "notifications")
itemsView.itemTable.reloadData()
}
})
})
}
if (amazonInfo != nil) {
notificationArray.append(
[
"network": "amazon",
"message": (ebayInfo as! [String : AnyObject])["notification"] as! String,
"type": (ebayInfo as! [String : AnyObject])["type"] as! String,
"seen":false,
"key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String,
"UUID": NSUUID().UUIDString
]
)
}
if (etsyInfo != nil) {
let notification = [
"network": "etsy",
"message": (etsyInfo as! [String : AnyObject])["notification"] as! String,
"type": "ended",
"seen":false,
"key": (etsyInfo as! [String : AnyObject])["listingKey"] as! String,
"UUID": NSUUID().UUIDString
]
notificationArray.append(
notification as! [String : AnyObject]
)
self.endedListings.appendContentsOf( self.userListings.filter({$0.key == ((etsyInfo as! [String : AnyObject])["listingKey"] as! String)}))
self.userListings = self.userListings.filter({$0.key != ((etsyInfo as! [String : AnyObject])["listingKey"] as! String)})
let itemsView = self.viewControllers![0] as! ItemTableViewController
self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)").observeSingleEventOfType( .Value, withBlock: {
(snapshot) -> Void in
var userDict = snapshot.value as? [String : AnyObject]
var notifications = userDict!["notifications"] as? [String: AnyObject]
if notifications == nil {
userDict!["notifications"] = [((etsyInfo as! [String : AnyObject])["listingKey"] as! String):notification]
}else {
notifications![((etsyInfo as! [String : AnyObject])["listingKey"] as! String)] = notification
userDict!["notifications"] = notifications
}
var listings = userDict!["user_Listings"] as! [String: AnyObject]
var listingDict = (listings[((etsyInfo as! [String : AnyObject])["listingKey"] as! String)] as! [String : AnyObject])
listingDict["listingStatus"] = "Ended"
//save everything back to their respective dictionaries
listings[((etsyInfo as! [String : AnyObject])["listingKey"] as! String)] = listingDict
userDict!["user_Listings"] = listings
self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)").setValue(userDict, withCompletionBlock: {
(error, reference) -> Void in
if error == nil {
//reload data for notifications
NSUserDefaults.standardUserDefaults().setObject(notificationArray, forKey: "notifications")
itemsView.itemTable.reloadData()
}
})
})
}
}
func listingHasNewNotifications(fbInfo: AnyObject?, ebayInfo: AnyObject?, amazonInfo: AnyObject?, etsyInfo: AnyObject?) {
var notificationArray: [Dictionary<String, AnyObject>] = self.notifications
if (fbInfo != nil) {
notificationArray.append(fbInfo as! [String : AnyObject])
self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)").observeSingleEventOfType(.Value, withBlock: {
(snapshot) -> Void in
var userDict = snapshot.value as? [String : AnyObject]
if (userDict!["notifications"] != nil) {
var notificationsFir = userDict!["notifications"] as! [String : AnyObject]
notificationsFir[fbInfo!["UUID"] as! String] = fbInfo
self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)/notifications").setValue(notificationsFir, withCompletionBlock: {
(error, reference) -> Void in
if error == nil {
NSUserDefaults.standardUserDefaults().setObject(notificationArray, forKey: "notifications")
}
})
}else {
let id = (fbInfo!["UUID"] as! String)
print(id)
userDict!["notifications"] = ([ id : fbInfo as! [String:AnyObject]])
self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)").setValue(userDict, withCompletionBlock: {
(error, reference) -> Void in
if error == nil {
NSUserDefaults.standardUserDefaults().setObject(notificationArray, forKey: "notifications")
}
})
}
})
}
if (ebayInfo != nil) {
notificationArray.append(
[
"network": "ebay",
"message": (ebayInfo as! [String : AnyObject])["notification"] as! String,
"type": (ebayInfo as! [String : AnyObject])["type"] as! String,
"key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String,
"UUID": NSUUID().UUIDString
]
)
}
if (amazonInfo != nil) {
notificationArray.append(
[
"network": "amazon",
"message": (ebayInfo as! [String : AnyObject])["notification"] as! String,
"type": "",
"key": (ebayInfo as! [String : AnyObject])["listingKey"] as! String,
"UUID": NSUUID().UUIDString
]
)
}
if (etsyInfo != nil) {
notificationArray.append(
[
"network": "etsy",
"message": (etsyInfo as! [String : AnyObject])["notification"] as! String,
"type": (etsyInfo as! [String : AnyObject])["type"] as! String,
"key": (etsyInfo as! [String : AnyObject])["listingKey"] as! String,
"UUID": NSUUID().UUIDString
]
)
}
//@TODO: add firbase logic to add notifications and delete already viewed notifications
//reload data for notifications
}
}

View File

@ -45,6 +45,8 @@ class ItemImagePickerViewController: UIViewController {
private var imageIndex: Int! private var imageIndex: Int!
private var isEditing: Bool = false private var isEditing: Bool = false
private var currentInformation: Dictionary<String, AnyObject>! private var currentInformation: Dictionary<String, AnyObject>!
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
@ -292,7 +294,7 @@ extension ItemImagePickerViewController: UIImagePickerControllerDelegate, UINavi
(alert: UIAlertAction!) -> Void in (alert: UIAlertAction!) -> Void in
}) })
let cameraAction = UIAlertAction(title: "Take a New Pic", style: .Default, handler: { let cameraAction = UIAlertAction(title: "Take a New Item Picture", style: .Default, handler: {
(alert: UIAlertAction!) -> Void in (alert: UIAlertAction!) -> Void in
self.picker.allowsEditing = false self.picker.allowsEditing = false
self.picker.sourceType = UIImagePickerControllerSourceType.Camera self.picker.sourceType = UIImagePickerControllerSourceType.Camera
@ -301,7 +303,7 @@ extension ItemImagePickerViewController: UIImagePickerControllerDelegate, UINavi
}) })
let galleryAction = UIAlertAction(title: "Select a Profile Pic", style: .Default, handler: { let galleryAction = UIAlertAction(title: "Select a Picture for Your Item", style: .Default, handler: {
(alert: UIAlertAction!) -> Void in (alert: UIAlertAction!) -> Void in
self.picker.allowsEditing = false self.picker.allowsEditing = false
self.picker.sourceType = .PhotoLibrary self.picker.sourceType = .PhotoLibrary

View File

@ -80,6 +80,12 @@ class ItemTableViewController: UIViewController {
} }
// MARK: - IBAction
extension ItemTableViewController {
@IBAction func segSwitch(sender: UISegmentedControl) {
self.itemTable.reloadData()
}
}
// MARK: - Navigation // MARK: - Navigation
extension ItemTableViewController { extension ItemTableViewController {
@ -129,63 +135,143 @@ extension ItemTableViewController: UITableViewDataSource{
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows // #warning Incomplete implementation, return the number of rows
return ((self.tabBarController as? HomeViewController)?.userListings.count)! if self.tableSegmentController.selectedSegmentIndex == 0 {
return ((self.tabBarController as? HomeViewController)?.userListings.count)!
}
else if tableSegmentController.selectedSegmentIndex == 1 {
return ((self.tabBarController as? HomeViewController)?.endedListings.count)!
}
else{
return ((self.tabBarController as? HomeViewController)?.soldListings.count)!
}
} }
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: ItemCell! = (tableView.dequeueReusableCellWithIdentifier("Item Cell", forIndexPath: indexPath) as! ItemCell) let cell: ItemCell! = (tableView.dequeueReusableCellWithIdentifier("Item Cell", forIndexPath: indexPath) as! ItemCell)
// Configure the cell... // Configure the cell...
//for each listing cell generated need to find the marketplaces it belongs to, the listing price, the name of the item, the status of the item, and the item image. //for each listing cell generated need to find the marketplaces it belongs to, the listing price, the name of the item, the status of the item, and the item image.
//Once these objects are retrieved, access the ItemCell properties and manipulate as needed //Once these objects are retrieved, access the ItemCell properties and manipulate as needed
cell.itemImage.image = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row].images[0] //come back
cell.itemName.text = (self.tabBarController as? HomeViewController)!.userListings[indexPath.row].title
cell.itemPrice.text = (self.tabBarController as? HomeViewController)!.userListings[indexPath.row].price
//check if item is published if self.tableSegmentController.selectedSegmentIndex == 0 {
if((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].isDraft!){ cell.itemImage.image = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row].images[0] //come back
cell.itemStatus.text = "Status: Unpublished" cell.itemName.text = (self.tabBarController as? HomeViewController)!.userListings[indexPath.row].title
dispatch_async(dispatch_get_main_queue(), { cell.itemPrice.text = (self.tabBarController as? HomeViewController)!.userListings[indexPath.row].price
cell.alpha = 0.5 //check if item is published
if((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].isDraft!){
cell.itemStatus.text = "Status: Unpublished"
dispatch_async(dispatch_get_main_queue(), {
cell.alpha = 0.5
}) })
}else { }else {
cell.itemStatus.text = "Status: Active" cell.itemStatus.text = "Status: Active"
} }
if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["areNetworksChosen"])!){ if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["areNetworksChosen"])!){
cell.networks.hidden = true cell.networks.hidden = true
}else{ }else{
dispatch_async(dispatch_get_main_queue(), { dispatch_async(dispatch_get_main_queue(), {
if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["ebay"])!){ if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["ebay"])!){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))?.hidden = true cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))?.hidden = true
} }
if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["amazon"])!){ if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["amazon"])!){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 1, inSection: 0))?.hidden = true cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 1, inSection: 0))?.hidden = true
} }
if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["etsy"])!){ if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["etsy"])!){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 2, inSection: 0))?.hidden = true cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 2, inSection: 0))?.hidden = true
} }
if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["facebook"])!){ if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["facebook"])!){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))?.hidden = true cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))?.hidden = true
} }
}) })
}
} }
else if tableSegmentController.selectedSegmentIndex == 1 {
cell.itemImage.image = (self.tabBarController as? HomeViewController)?.endedListings[indexPath.row].images[0] //come back
cell.itemName.text = (self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].title
cell.itemPrice.text = (self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].price
cell.itemStatus.text = "Status: Unsold"
if(!((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["areNetworksChosen"])!){
cell.networks.hidden = true
}else{
dispatch_async(dispatch_get_main_queue(), {
if(!((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["ebay"])!){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))?.hidden = true
}
if(!((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["amazon"])!){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 1, inSection: 0))?.hidden = true
}
if(!((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["etsy"])!){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 2, inSection: 0))?.hidden = true
}
if(!((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["facebook"])!){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))?.hidden = true
}
})
}
}
else{
cell.itemImage.image = (self.tabBarController as? HomeViewController)?.soldListings[indexPath.row].images[0] //come back
cell.itemName.text = (self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].title
cell.itemPrice.text = (self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].price
cell.itemStatus.text = "Status: Sold"
if(!((self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].networks["areNetworksChosen"])!){
cell.networks.hidden = true
}else{
dispatch_async(dispatch_get_main_queue(), {
if(!((self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].networks["ebay"])!){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))?.hidden = true
}
if(!((self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].networks["amazon"])!){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 1, inSection: 0))?.hidden = true
}
if(!((self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].networks["etsy"])!){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 2, inSection: 0))?.hidden = true
}
if(!((self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].networks["facebook"])!){
cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))?.hidden = true
}
})
}
}
return cell return cell
} }
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.selectedListing = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row] if self.tableSegmentController.selectedSegmentIndex == 0 {
self.selectedListing = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row]
}
else if tableSegmentController.selectedSegmentIndex == 1 {
self.selectedListing = (self.tabBarController as? HomeViewController)?.endedListings[indexPath.row]
}
else{
self.selectedListing = (self.tabBarController as? HomeViewController)?.soldListings[indexPath.row]
}
self.performSegueWithIdentifier("ItemDetailSegue", sender: self) self.performSegueWithIdentifier("ItemDetailSegue", sender: self)
} }
} }

View File

@ -20,6 +20,7 @@ class Listing : NSObject {
var images: [UIImage]! var images: [UIImage]!
var key: String! var key: String!
var networks: Dictionary<String, Bool>! var networks: Dictionary<String, Bool>!
var listingStatus: String!
init(itemTitle:String, itemCategory: String!, itemQuantity: String!, itemPrice: String!, itemDescription: String!, itemImages: [UIImage], isDraftListing: Bool, itemKey: String, networksSellingOn: Dictionary<String, Bool>){ init(itemTitle:String, itemCategory: String!, itemQuantity: String!, itemPrice: String!, itemDescription: String!, itemImages: [UIImage], isDraftListing: Bool, itemKey: String, networksSellingOn: Dictionary<String, Bool>){

View File

@ -157,7 +157,7 @@
<!--signUp--> <!--signUp-->
<scene sceneID="gw9-WW-JKc"> <scene sceneID="gw9-WW-JKc">
<objects> <objects>
<viewController title="signUp" id="PkF-1J-5AZ" customClass="SignUpViewController" customModule="Vendoo" customModuleProvider="target" sceneMemberID="viewController"> <viewController storyboardIdentifier="SignUp" title="signUp" id="PkF-1J-5AZ" customClass="SignUpViewController" customModule="Vendoo" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="6cj-br-zY3"> <view key="view" contentMode="scaleToFill" id="6cj-br-zY3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/> <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@ -491,7 +491,7 @@
<rect key="frame" x="0.0" y="1" width="375" height="100"/> <rect key="frame" x="0.0" y="1" width="375" height="100"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="acC-eR-nNa" id="yUA-0e-cbV"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="acC-eR-nNa" id="yUA-0e-cbV">
<rect key="frame" x="0.0" y="0.0" width="375" height="99"/> <rect key="frame" x="0.0" y="0.0" width="375" height="99.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ebay_icon" id="7It-fU-0EG"> <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ebay_icon" id="7It-fU-0EG">
@ -515,6 +515,9 @@
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="7Q7-qK-aGr"> <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="7Q7-qK-aGr">
<rect key="frame" x="307" y="34" width="51" height="31"/> <rect key="frame" x="307" y="34" width="51" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<connections>
<action selector="toggleNetworkSelection:" destination="7B0-PA-tjd" eventType="valueChanged" id="EnM-Bm-fpQ"/>
</connections>
</switch> </switch>
</subviews> </subviews>
</tableViewCellContentView> </tableViewCellContentView>
@ -526,7 +529,7 @@
<rect key="frame" x="0.0" y="101" width="375" height="100"/> <rect key="frame" x="0.0" y="101" width="375" height="100"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="2Cb-tk-QlG" id="Adl-PW-EHy"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="2Cb-tk-QlG" id="Adl-PW-EHy">
<rect key="frame" x="0.0" y="0.0" width="375" height="99"/> <rect key="frame" x="0.0" y="0.0" width="375" height="99.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="amazon_icon" id="fPK-fm-tET"> <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="amazon_icon" id="fPK-fm-tET">
@ -550,6 +553,9 @@
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="TCc-Ei-qHU"> <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="TCc-Ei-qHU">
<rect key="frame" x="309" y="34" width="51" height="31"/> <rect key="frame" x="309" y="34" width="51" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<connections>
<action selector="toggleNetworkSelection:" destination="7B0-PA-tjd" eventType="valueChanged" id="INb-4k-6kb"/>
</connections>
</switch> </switch>
</subviews> </subviews>
</tableViewCellContentView> </tableViewCellContentView>
@ -561,7 +567,7 @@
<rect key="frame" x="0.0" y="201" width="375" height="100"/> <rect key="frame" x="0.0" y="201" width="375" height="100"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="R8s-EW-CYG" id="LkI-ex-htQ"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="R8s-EW-CYG" id="LkI-ex-htQ">
<rect key="frame" x="0.0" y="0.0" width="375" height="99"/> <rect key="frame" x="0.0" y="0.0" width="375" height="99.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="etsy_icon" id="PDs-eE-upV"> <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="etsy_icon" id="PDs-eE-upV">
@ -585,6 +591,9 @@
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="unb-A5-8G6"> <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="unb-A5-8G6">
<rect key="frame" x="312" y="34" width="51" height="31"/> <rect key="frame" x="312" y="34" width="51" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<connections>
<action selector="toggleNetworkSelection:" destination="7B0-PA-tjd" eventType="valueChanged" id="QfN-uQ-b6i"/>
</connections>
</switch> </switch>
</subviews> </subviews>
</tableViewCellContentView> </tableViewCellContentView>
@ -596,7 +605,7 @@
<rect key="frame" x="0.0" y="301" width="375" height="100"/> <rect key="frame" x="0.0" y="301" width="375" height="100"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="xYX-kc-DDZ" id="npb-CY-Fjx"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="xYX-kc-DDZ" id="npb-CY-Fjx">
<rect key="frame" x="0.0" y="0.0" width="375" height="99"/> <rect key="frame" x="0.0" y="0.0" width="375" height="99.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="facebook_icon" id="KPG-M6-vs4"> <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="facebook_icon" id="KPG-M6-vs4">
@ -620,6 +629,9 @@
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="Uk5-WJ-w8g"> <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="Uk5-WJ-w8g">
<rect key="frame" x="312" y="34" width="51" height="31"/> <rect key="frame" x="312" y="34" width="51" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<connections>
<action selector="toggleNetworkSelection:" destination="7B0-PA-tjd" eventType="valueChanged" id="kjy-0g-c4g"/>
</connections>
</switch> </switch>
</subviews> </subviews>
</tableViewCellContentView> </tableViewCellContentView>
@ -631,7 +643,7 @@
<rect key="frame" x="0.0" y="401" width="375" height="39"/> <rect key="frame" x="0.0" y="401" width="375" height="39"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="9j4-EI-pMS" id="a2e-WJ-7dG"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="9j4-EI-pMS" id="a2e-WJ-7dG">
<rect key="frame" x="0.0" y="0.0" width="375" height="38"/> <rect key="frame" x="0.0" y="0.0" width="375" height="38.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Recomended Marketplaces" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="ARt-Sv-6t0"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Recomended Marketplaces" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="ARt-Sv-6t0">
@ -649,7 +661,7 @@
<rect key="frame" x="0.0" y="440" width="375" height="100"/> <rect key="frame" x="0.0" y="440" width="375" height="100"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="X0o-qm-Gtd" id="HHH-by-zJb"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="X0o-qm-Gtd" id="HHH-by-zJb">
<rect key="frame" x="0.0" y="0.0" width="375" height="99"/> <rect key="frame" x="0.0" y="0.0" width="375" height="99.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="facebook_grey" id="V9I-Zd-xQh"> <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="facebook_grey" id="V9I-Zd-xQh">
@ -949,7 +961,7 @@
</collectionViewFlowLayout> </collectionViewFlowLayout>
<cells> <cells>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="ebay" id="qet-e3-dU6"> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="ebay" id="qet-e3-dU6">
<rect key="frame" x="0.0" y="11" width="40" height="40"/> <rect key="frame" x="0.0" y="10.5" width="40" height="40"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
@ -965,7 +977,7 @@
<size key="customSize" width="40" height="40"/> <size key="customSize" width="40" height="40"/>
</collectionViewCell> </collectionViewCell>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="1" contentMode="center" reuseIdentifier="amazon" id="SEr-aZ-MWl"> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="1" contentMode="center" reuseIdentifier="amazon" id="SEr-aZ-MWl">
<rect key="frame" x="45" y="11" width="40" height="40"/> <rect key="frame" x="45" y="10.5" width="40" height="40"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
@ -980,7 +992,7 @@
</view> </view>
</collectionViewCell> </collectionViewCell>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="2" contentMode="center" reuseIdentifier="etsy" id="IdF-c7-R14"> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="2" contentMode="center" reuseIdentifier="etsy" id="IdF-c7-R14">
<rect key="frame" x="90" y="11" width="40" height="40"/> <rect key="frame" x="90" y="10.5" width="40" height="40"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
@ -995,7 +1007,7 @@
</view> </view>
</collectionViewCell> </collectionViewCell>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="3" contentMode="center" reuseIdentifier="facebook" id="yWZ-NA-tkb"> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="3" contentMode="center" reuseIdentifier="facebook" id="yWZ-NA-tkb">
<rect key="frame" x="135" y="11" width="40" height="40"/> <rect key="frame" x="135" y="10.5" width="40" height="40"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
@ -1230,14 +1242,18 @@
</navigationItem> </navigationItem>
</items> </items>
</navigationBar> </navigationBar>
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" id="X2D-np-ma4"> <segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" id="X2D-np-ma4">
<rect key="frame" x="0.0" y="44" width="375" height="29"/> <rect key="frame" x="0.0" y="44" width="375" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments> <segments>
<segment title="Selling"/> <segment title="Selling"/>
<segment title="Unsold"/>
<segment title="Sold"/> <segment title="Sold"/>
</segments> </segments>
<color key="tintColor" red="0.2784313725" green="0.80392156859999997" blue="0.68235294120000001" alpha="1" colorSpace="calibratedRGB"/> <color key="tintColor" red="0.2784313725" green="0.80392156859999997" blue="0.68235294120000001" alpha="1" colorSpace="calibratedRGB"/>
<connections>
<action selector="segSwitch:" destination="Iwh-sn-a0Q" eventType="valueChanged" id="YfI-EH-qgs"/>
</connections>
</segmentedControl> </segmentedControl>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="123" sectionHeaderHeight="1" sectionFooterHeight="28" id="Thg-pb-lhN"> <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="123" sectionHeaderHeight="1" sectionFooterHeight="28" id="Thg-pb-lhN">
<rect key="frame" x="0.0" y="72" width="375" height="543"/> <rect key="frame" x="0.0" y="72" width="375" height="543"/>
@ -1248,7 +1264,7 @@
<rect key="frame" x="0.0" y="1" width="375" height="123"/> <rect key="frame" x="0.0" y="1" width="375" height="123"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="zmO-fi-nTP" id="CoK-hy-32b"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="zmO-fi-nTP" id="CoK-hy-32b">
<rect key="frame" x="0.0" y="0.0" width="375" height="122"/> <rect key="frame" x="0.0" y="0.0" width="375" height="122.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="account" id="eWu-ob-xKv"> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="account" id="eWu-ob-xKv">
@ -1297,7 +1313,7 @@
</collectionViewFlowLayout> </collectionViewFlowLayout>
<cells> <cells>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="ebay" id="bUa-Lo-TSK"> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="ebay" id="bUa-Lo-TSK">
<rect key="frame" x="0.0" y="11" width="40" height="40"/> <rect key="frame" x="0.0" y="10.5" width="40" height="40"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
@ -1313,7 +1329,7 @@
<size key="customSize" width="40" height="40"/> <size key="customSize" width="40" height="40"/>
</collectionViewCell> </collectionViewCell>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="1" contentMode="center" reuseIdentifier="amazon" id="mXI-4r-eAB"> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="1" contentMode="center" reuseIdentifier="amazon" id="mXI-4r-eAB">
<rect key="frame" x="45" y="11" width="40" height="40"/> <rect key="frame" x="45" y="10.5" width="40" height="40"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
@ -1328,7 +1344,7 @@
</view> </view>
</collectionViewCell> </collectionViewCell>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="2" contentMode="center" reuseIdentifier="etsy" id="8Ch-qr-5oN"> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="2" contentMode="center" reuseIdentifier="etsy" id="8Ch-qr-5oN">
<rect key="frame" x="90" y="11" width="40" height="40"/> <rect key="frame" x="90" y="10.5" width="40" height="40"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
@ -1343,7 +1359,7 @@
</view> </view>
</collectionViewCell> </collectionViewCell>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="3" contentMode="center" reuseIdentifier="facebook" id="iK6-ar-Cjj"> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="3" contentMode="center" reuseIdentifier="facebook" id="iK6-ar-Cjj">
<rect key="frame" x="135" y="11" width="40" height="40"/> <rect key="frame" x="135" y="10.5" width="40" height="40"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
@ -1431,7 +1447,7 @@
<rect key="frame" x="0.0" y="1" width="375" height="44"/> <rect key="frame" x="0.0" y="1" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="hae-qr-YYv" id="jVD-It-v2S"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="hae-qr-YYv" id="jVD-It-v2S">
<rect key="frame" x="0.0" y="0.0" width="375" height="43"/> <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Hi User" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="QxU-Ol-czq"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Hi User" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="QxU-Ol-czq">
@ -1466,7 +1482,7 @@
<rect key="frame" x="0.0" y="45" width="375" height="44"/> <rect key="frame" x="0.0" y="45" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="TpL-A6-BYb" id="8n5-6b-Lkb"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="TpL-A6-BYb" id="8n5-6b-Lkb">
<rect key="frame" x="0.0" y="0.0" width="342" height="43"/> <rect key="frame" x="0.0" y="0.0" width="342" height="43.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Notifications" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="BkZ-cf-De2"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Notifications" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="BkZ-cf-De2">
@ -1497,7 +1513,7 @@
<rect key="frame" x="0.0" y="89" width="375" height="44"/> <rect key="frame" x="0.0" y="89" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="YaV-d2-gKc" id="Mwa-Ev-lbd"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="YaV-d2-gKc" id="Mwa-Ev-lbd">
<rect key="frame" x="0.0" y="0.0" width="342" height="43"/> <rect key="frame" x="0.0" y="0.0" width="342" height="43.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Settings" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Sc6-4z-l2a"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Settings" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Sc6-4z-l2a">
@ -1521,7 +1537,7 @@
<rect key="frame" x="0.0" y="133" width="375" height="44"/> <rect key="frame" x="0.0" y="133" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="sws-bZ-U3f" id="rn0-3E-sbt"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="sws-bZ-U3f" id="rn0-3E-sbt">
<rect key="frame" x="0.0" y="0.0" width="342" height="43"/> <rect key="frame" x="0.0" y="0.0" width="342" height="43.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sales" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="6ms-Qf-N3Y"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sales" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="6ms-Qf-N3Y">
@ -1542,7 +1558,7 @@
<rect key="frame" x="0.0" y="177" width="375" height="44"/> <rect key="frame" x="0.0" y="177" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ak8-L0-HzG" id="Pyf-Ej-3gc"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ak8-L0-HzG" id="Pyf-Ej-3gc">
<rect key="frame" x="0.0" y="0.0" width="342" height="43"/> <rect key="frame" x="0.0" y="0.0" width="342" height="43.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="FAQ" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Al0-Rw-25S"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="FAQ" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Al0-Rw-25S">
@ -1563,7 +1579,7 @@
<rect key="frame" x="0.0" y="221" width="375" height="44"/> <rect key="frame" x="0.0" y="221" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Usj-YV-mfI" id="oFF-Ie-d4Y"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Usj-YV-mfI" id="oFF-Ie-d4Y">
<rect key="frame" x="0.0" y="0.0" width="342" height="43"/> <rect key="frame" x="0.0" y="0.0" width="342" height="43.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Getting Started" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="uVQ-tG-zdQ"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Getting Started" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="uVQ-tG-zdQ">
@ -1625,49 +1641,40 @@
<!--Notifications--> <!--Notifications-->
<scene sceneID="bwB-9L-Y2n"> <scene sceneID="bwB-9L-Y2n">
<objects> <objects>
<viewController title="Notifications" id="6TW-al-QKg" sceneMemberID="viewController"> <viewController title="Notifications" id="6TW-al-QKg" customClass="NotificationsViewController" customModule="Vendoo" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="bnY-Wo-CEl"> <view key="view" contentMode="scaleToFill" id="bnY-Wo-CEl">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/> <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="Nv6-ae-lFl"> <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="69" sectionHeaderHeight="28" sectionFooterHeight="28" id="Nv6-ae-lFl">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/> <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<prototypes> <prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="9G8-XI-ptI"> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="notification_cell" rowHeight="69" id="9G8-XI-ptI" customClass="NotificationTableViewCell" customModule="Vendoo" customModuleProvider="target">
<rect key="frame" x="0.0" y="28" width="375" height="44"/> <rect key="frame" x="0.0" y="72" width="375" height="69"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="9G8-XI-ptI" id="r3f-6Q-p1g"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="9G8-XI-ptI" id="r3f-6Q-p1g">
<rect key="frame" x="0.0" y="0.0" width="342" height="43"/> <rect key="frame" x="0.0" y="0.0" width="375" height="68.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Item 1 Sold for $xx.xx" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="vbB-Fw-hYm"> <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" text="Notification message" textAlignment="natural" selectable="NO" id="cSU-p4-wQb">
<rect key="frame" x="8" y="11" width="191" height="21"/> <rect key="frame" x="8" y="0.0" width="220" height="60.5"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/> <fontDescription key="fontDescription" type="system" pointSize="14"/>
<nil key="highlightedColor"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</label> </textView>
</subviews> <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" id="pcX-cs-Mea">
</tableViewCellContentView> <rect key="frame" x="262" y="0.0" width="65" height="60.5"/>
</tableViewCell> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="JJa-O7-kym"> </imageView>
<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="JJa-O7-kym" id="bCt-1V-IW1">
<rect key="frame" x="0.0" y="0.0" width="342" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="User 2 sent a message on x marketplace" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="0Gf-Sl-5ve">
<rect key="frame" x="8" y="11" width="326" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews> </subviews>
</tableViewCellContentView> </tableViewCellContentView>
<connections>
<outlet property="message" destination="cSU-p4-wQb" id="H6a-7K-wX5"/>
<outlet property="network" destination="pcX-cs-Mea" id="V3q-tc-ePD"/>
</connections>
</tableViewCell> </tableViewCell>
</prototypes> </prototypes>
</tableView> </tableView>
@ -1675,9 +1682,16 @@
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</view> </view>
<navigationItem key="navigationItem" id="tMF-8P-hq8"> <navigationItem key="navigationItem" id="tMF-8P-hq8">
<barButtonItem key="leftBarButtonItem" systemItem="stop" id="nNk-we-8b0"/> <barButtonItem key="leftBarButtonItem" systemItem="stop" id="nNk-we-8b0">
<connections>
<action selector="dismissNotifications:" destination="6TW-al-QKg" id="Gka-rW-dn3"/>
</connections>
</barButtonItem>
</navigationItem> </navigationItem>
<simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina47"/> <simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina47"/>
<connections>
<outlet property="notificationTable" destination="Nv6-ae-lFl" id="aqB-TZ-as0"/>
</connections>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="34F-M2-Thr" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="34F-M2-Thr" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
@ -1714,10 +1728,10 @@
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<prototypes> <prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Change_Pass_Cell" id="ceq-sl-ClT"> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Change_Pass_Cell" id="ceq-sl-ClT">
<rect key="frame" x="0.0" y="28" width="375" height="44"/> <rect key="frame" x="0.0" y="72" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ceq-sl-ClT" id="Waq-fu-UxD"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ceq-sl-ClT" id="Waq-fu-UxD">
<rect key="frame" x="0.0" y="0.0" width="375" height="43"/> <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Change Password" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="PGB-Ei-aRg"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Change Password" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="PGB-Ei-aRg">
@ -1731,10 +1745,10 @@
</tableViewCellContentView> </tableViewCellContentView>
</tableViewCell> </tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Delete_Account_Cell" id="Lha-cf-Sfc"> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Delete_Account_Cell" id="Lha-cf-Sfc">
<rect key="frame" x="0.0" y="72" width="375" height="44"/> <rect key="frame" x="0.0" y="116" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Lha-cf-Sfc" id="kmF-Sb-d0c"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Lha-cf-Sfc" id="kmF-Sb-d0c">
<rect key="frame" x="0.0" y="0.0" width="375" height="43"/> <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Delete Account" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Q9i-1T-SF9"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Delete Account" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Q9i-1T-SF9">
@ -1800,7 +1814,7 @@
<rect key="frame" x="0.0" y="1" width="375" height="100"/> <rect key="frame" x="0.0" y="1" width="375" height="100"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="9h0-NL-4Hr" id="nH9-sh-wm7"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="9h0-NL-4Hr" id="nH9-sh-wm7">
<rect key="frame" x="0.0" y="0.0" width="375" height="99"/> <rect key="frame" x="0.0" y="0.0" width="375" height="99.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ebay_icon" id="rL9-kJ-Bb5"> <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ebay_icon" id="rL9-kJ-Bb5">
@ -1857,7 +1871,7 @@
<rect key="frame" x="0.0" y="101" width="375" height="100"/> <rect key="frame" x="0.0" y="101" width="375" height="100"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="lJK-BB-qHp" id="tfe-wC-9ai"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="lJK-BB-qHp" id="tfe-wC-9ai">
<rect key="frame" x="0.0" y="0.0" width="375" height="99"/> <rect key="frame" x="0.0" y="0.0" width="375" height="99.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="amazon_icon" id="MPn-yv-kPb"> <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="amazon_icon" id="MPn-yv-kPb">
@ -1914,7 +1928,7 @@
<rect key="frame" x="0.0" y="201" width="375" height="100"/> <rect key="frame" x="0.0" y="201" width="375" height="100"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Vwl-4p-5OR" id="V1b-eK-a5x"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Vwl-4p-5OR" id="V1b-eK-a5x">
<rect key="frame" x="0.0" y="0.0" width="375" height="99"/> <rect key="frame" x="0.0" y="0.0" width="375" height="99.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="etsy_icon" id="kzI-Ab-HOW"> <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="etsy_icon" id="kzI-Ab-HOW">
@ -1971,7 +1985,7 @@
<rect key="frame" x="0.0" y="301" width="375" height="100"/> <rect key="frame" x="0.0" y="301" width="375" height="100"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="5QP-17-Ojk" id="c3M-kx-tkP"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="5QP-17-Ojk" id="c3M-kx-tkP">
<rect key="frame" x="0.0" y="0.0" width="375" height="99"/> <rect key="frame" x="0.0" y="0.0" width="375" height="99.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="facebook_icon" id="lWY-QV-lQe"> <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="facebook_icon" id="lWY-QV-lQe">
@ -2057,7 +2071,7 @@
<rect key="frame" x="0.0" y="28" width="375" height="44"/> <rect key="frame" x="0.0" y="28" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="5Fn-QZ-2Pk" id="atN-Th-uzO"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="5Fn-QZ-2Pk" id="atN-Th-uzO">
<rect key="frame" x="0.0" y="0.0" width="342" height="43"/> <rect key="frame" x="0.0" y="0.0" width="342" height="43.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView> </tableViewCellContentView>
</tableViewCell> </tableViewCell>
@ -2108,7 +2122,7 @@
<rect key="frame" x="0.0" y="28" width="375" height="44"/> <rect key="frame" x="0.0" y="28" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="NVz-An-tWd" id="YDe-Pd-Fu2"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="NVz-An-tWd" id="YDe-Pd-Fu2">
<rect key="frame" x="0.0" y="0.0" width="375" height="43"/> <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="pKO-dl-Ggb"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="pKO-dl-Ggb">
@ -2130,7 +2144,7 @@
</collectionViewFlowLayout> </collectionViewFlowLayout>
<cells> <cells>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="ebay" id="mCV-zx-xeL"> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="ebay" id="mCV-zx-xeL">
<rect key="frame" x="0.0" y="11" width="40" height="40"/> <rect key="frame" x="0.0" y="10.5" width="40" height="40"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
@ -2146,7 +2160,7 @@
<size key="customSize" width="40" height="40"/> <size key="customSize" width="40" height="40"/>
</collectionViewCell> </collectionViewCell>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="1" contentMode="center" reuseIdentifier="amazon" id="LkM-kC-Zpp"> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="1" contentMode="center" reuseIdentifier="amazon" id="LkM-kC-Zpp">
<rect key="frame" x="45" y="11" width="40" height="40"/> <rect key="frame" x="45" y="10.5" width="40" height="40"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
@ -2161,7 +2175,7 @@
</view> </view>
</collectionViewCell> </collectionViewCell>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="2" contentMode="center" reuseIdentifier="etsy" id="LmS-RK-wqT"> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="2" contentMode="center" reuseIdentifier="etsy" id="LmS-RK-wqT">
<rect key="frame" x="90" y="11" width="40" height="40"/> <rect key="frame" x="90" y="10.5" width="40" height="40"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
@ -2176,7 +2190,7 @@
</view> </view>
</collectionViewCell> </collectionViewCell>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="3" contentMode="center" reuseIdentifier="facebook" id="E6f-Dd-zq3"> <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" tag="3" contentMode="center" reuseIdentifier="facebook" id="E6f-Dd-zq3">
<rect key="frame" x="135" y="11" width="40" height="40"/> <rect key="frame" x="135" y="10.5" width="40" height="40"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="40" height="40"/> <rect key="frame" x="0.0" y="0.0" width="40" height="40"/>
@ -2490,10 +2504,11 @@
</resources> </resources>
<inferredMetricsTieBreakers> <inferredMetricsTieBreakers>
<segue reference="rkZ-c8-XJc"/> <segue reference="rkZ-c8-XJc"/>
<segue reference="KKl-Gj-ZVc"/> <segue reference="nUj-1v-ftF"/>
<segue reference="syc-IR-LNQ"/> <segue reference="syc-IR-LNQ"/>
<segue reference="Ds4-LY-IRj"/> <segue reference="nWA-7e-2Ec"/>
<segue reference="vCG-jU-HYF"/> <segue reference="NOz-ya-avj"/>
<segue reference="KKl-Gj-ZVc"/>
</inferredMetricsTieBreakers> </inferredMetricsTieBreakers>
<color key="tintColor" red="0.2784313725" green="0.80392156859999997" blue="0.68235294120000001" alpha="1" colorSpace="calibratedRGB"/> <color key="tintColor" red="0.2784313725" green="0.80392156859999997" blue="0.68235294120000001" alpha="1" colorSpace="calibratedRGB"/>
</document> </document>

View File

@ -860,4 +860,71 @@ extension NetworksTableViewController {
} }
} }
@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
}
}
} }

View File

@ -0,0 +1,26 @@
//
// NotificationTableViewCell.swift
// Vendoo
//
// Created by Okechi Onyeje on 11/2/16.
// Copyright © 2016 Okechi Onyeje. All rights reserved.
//
import UIKit
class NotificationTableViewCell: UITableViewCell {
@IBOutlet weak var message: UITextView!
@IBOutlet weak var network: UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}

View File

@ -0,0 +1,166 @@
//
// NotificationsViewController.swift
// Vendoo
//
// Created by Okechi Onyeje on 11/2/16.
// Copyright © 2016 Okechi Onyeje. All rights reserved.
//
import UIKit
class NotificationsViewController: UIViewController {
var notifications: [Dictionary<String, AnyObject>]! = (NSUserDefaults.standardUserDefaults().objectForKey("notifications") == nil ? [] : (NSUserDefaults.standardUserDefaults().objectForKey("notifications") as! [Dictionary<String, AnyObject>]))
var fireBase = FirebaseManager()
@IBOutlet weak var notificationTable: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.notificationTable.dataSource = self
self.notificationTable.delegate = self
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// 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.
}
*/
}
extension NotificationsViewController: UITableViewDelegate {
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var notification = self.notifications[indexPath.row]
switch ( notification["network"] as! String) {
case "facebook":
let alert = UIAlertController(title: "New Comment from \(notification["senderName"] as! String)", message: (notification["commentMessage"] as! String), preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "Mark as Dismissed", style: .Default, handler: {
(action) -> Void in
notification["seen"] = true
self.notifications[indexPath.row] = notification
self.fireBase.ref.child("Users/\(self.fireBase.user_email)/notifications/\(notification["UUID"] as! String)").setValue(notification, withCompletionBlock: {
(error, reference) -> Void in
if error == nil {
self.notifications = self.notifications.filter({$0["seen"] as! Bool == false})
NSUserDefaults.standardUserDefaults().setObject(self.notifications, forKey: "notifications")
self.notificationTable.reloadData()
alert.dismissViewControllerAnimated(true, completion: nil)
}
})
}))
alert.addAction(UIAlertAction(title: "OK", style: .Cancel, handler: {(action) -> Void in}))
self.presentViewController(alert, animated: true, completion: nil)
break
case "ebay":
let alert = UIAlertController(title: "New Notification", message: "Would you like to dismiss this notification?", preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "Mark as Dismissed", style: .Default, handler: {
(action) -> Void in
notification["seen"] = true
self.notifications[indexPath.row] = notification
self.fireBase.ref.child("Users/\(self.fireBase.user_email)/notifications/\(notification["UUID"] as! String)").setValue(notification, withCompletionBlock: {
(error, reference) -> Void in
if error == nil {
self.notifications = self.notifications.filter({$0["seen"] as! Bool == false})
NSUserDefaults.standardUserDefaults().setObject(self.notifications, forKey: "notifications")
self.notificationTable.reloadData()
alert.dismissViewControllerAnimated(true, completion: nil)
}
})
}))
alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: {(action) -> Void in}))
self.presentViewController(alert, animated: true, completion: nil)
break
case "etsy":
let alert = UIAlertController(title: "New Notification", message: "Would you like to dismiss this notification?", preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "Mark as Dismissed", style: .Default, handler: {
(action) -> Void in
notification["seen"] = true
self.notifications[indexPath.row] = notification
self.fireBase.ref.child("Users/\(self.fireBase.user_email)/notifications/\(notification["UUID"] as! String)").setValue(notification, withCompletionBlock: {
(error, reference) -> Void in
if error == nil {
self.notifications = self.notifications.filter({$0["seen"] as! Bool == false})
NSUserDefaults.standardUserDefaults().setObject(self.notifications, forKey: "notifications")
self.notificationTable.reloadData()
alert.dismissViewControllerAnimated(true, completion: nil)
}
})
}))
alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: {(action) -> Void in}))
self.presentViewController(alert, animated: true, completion: nil)
break
case "amazon":
break
default:
break
}
}
}
extension NotificationsViewController: UITableViewDataSource {
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: NotificationTableViewCell! = self.notificationTable.dequeueReusableCellWithIdentifier("notification_cell") as! NotificationTableViewCell
let notification = self.notifications[indexPath.row]
switch ( notification["network"] as! String) {
case "facebook":
cell.message.text = notification["notification"] as! String
cell.network.image = UIImage(named: "facebook_icon")
break
case "ebay":
cell.message.text = notification["message"] as! String
cell.network.image = UIImage(named: "ebay_icon")
break
case "etsy":
cell.message.text = notification["message"] as! String
cell.network.image = UIImage(named: "etsy_icon")
break
case "amazon":
break
default:
break
}
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.notifications.count
}
}
extension NotificationsViewController /*IBoutlets*/ {
@IBAction func dismissNotifications(sender: AnyObject){
let vc = self.storyboard?.instantiateViewControllerWithIdentifier("Reveal View Controller")
self.presentViewController(vc!, animated: false, completion: nil)
}
}

View File

@ -0,0 +1,233 @@
//
// ServiceNotificationManager.swift
// Vendoo
//
// Created by Okechi Onyeje on 8/30/16.
// Copyright © 2016 Okechi Onyeje. All rights reserved.
//
import Foundation
protocol ServiceNotificationManagerDelegate {
func listingHasEnded(fbInfo: AnyObject?, ebayInfo: AnyObject?, amazonInfo: AnyObject?, etsyInfo: AnyObject?)
func listingHasNewNotifications(fbInfo: AnyObject?, ebayInfo: AnyObject?, amazonInfo: AnyObject?, etsyInfo: AnyObject?)
func listingHasFinishedRetrievingNotifications()
func listingHasStartedRetrievingNotifications()
}
class ServiceNotificationManager: NSObject {
var etsyManager: EtsyRESTAPIManager!
var fbGraphManager: FacebookGraphAPIManager!
var firebaseManager: FirebaseManager!
var ebayGraphManager: EbayWebServiceManager!
var userListings: [Listing] = []
var timer: NSTimer!
static var delegate: ServiceNotificationManagerDelegate?
override init() {
super.init()
}
func startServicePolling() {
//timer = NSTimer.scheduledTimerWithTimeInterval(60.0, target: self, selector: #selector(ServiceNotificationManager.pollServices), userInfo: nil, repeats: true)
pollServices()
}
func stopServicePolling() {
timer.invalidate()
}
func setManagers(fbManager: FacebookGraphAPIManager, fireManager: FirebaseManager, ebayManager: EbayWebServiceManager, etsyManager: EtsyRESTAPIManager){
self.fbGraphManager = fbManager
self.firebaseManager = fireManager
self.ebayGraphManager = ebayManager
self.etsyManager = etsyManager
}
func setListings(listings: [Listing]) {
self.userListings = listings
}
func pollServices(){
let notificationGroup = dispatch_group_create()
for listing in userListings {
self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)/user_Listings/\(listing.key)").observeSingleEventOfType( .Value, withBlock: {
(snapshot) -> Void in
//dispatch_group_enter(notificationGroup)
let listingDict = snapshot.value as? [String : AnyObject]
if !(listingDict!["isListingDraft"] as! Bool) {
if let networksDict = listingDict!["networkIDs"] as? [String : AnyObject] {
let ebayID = (networksDict["ebay"] as? String)
let facebookID = (networksDict["facebook"] as? String)
let etsyID = (networksDict["etsy"] as? Int)
let amazonID = (networksDict["amazon"] as? String)
//@TODO: Skeleton for Notfications Manager is set up. Need to implement listing request for each listing to retrieve relevant notifications for user such as if listing has ended
if(ebayID != nil){
if self.ebayGraphManager.isAuthorized {
self.ebayGraphManager.isGettingNotification = true
self.ebayGraphManager.getListingInfo(ebayID!, onComplete: {
(listingNotificationInfo, error) -> Void in
//dispatch_group_leave(notificationGroup)
let info = (listingNotificationInfo as! [String : AnyObject])
if(info["status"] as! String == "Ended") {
if((info["quantitySold"] as! Int) > 0) {
//@TODO: Add both firbase logic and code logic to do notifications for sold listings
if (((info["itemQuantity"] as! Int) - (info["quantitySold"] as! Int)) == 0) {
ServiceNotificationManager.delegate?.listingHasNewNotifications(
nil,
ebayInfo: [
"type": "Sold",
"notification": "Your listing \"\(listingDict!["listingTitle"] as! String)\" has sold out on ebay.",
"listingKey": listing.key],
amazonInfo: nil,
etsyInfo: nil
)
}
}else{
ServiceNotificationManager.delegate?.listingHasEnded(
nil,
ebayInfo: [
"type": "Ended",
"notification": "Your listing \"\(listingDict!["listingTitle"] as! String)\" has ended on ebay.",
"listingKey": listing.key],
amazonInfo: nil,
etsyInfo: nil
)
}
}
})
}
}
if(facebookID != nil){
if(self.fbGraphManager.isAuthorized) {
self.fbGraphManager.getListingInfo ("/\(facebookID!)/comments", onCompletion: {
(listingNotificationInfo, error) -> Void in
dispatch_async(dispatch_get_main_queue(), {
self.firebaseManager.ref.child("Users/\(self.firebaseManager.user_email)").observeEventType(.Value, withBlock: {
(snapshot) -> Void in
let notifications = ((snapshot.value as? [String : AnyObject])!["notifications"]) as? [String : AnyObject]
for commentInfo in (listingNotificationInfo as! [[String: AnyObject]]) {
let fromInfo = commentInfo["from"] as! [String : AnyObject]
if notifications != nil {
if notifications![(commentInfo["id"] as! String)] == nil {
let commentDict = [
"UUID":(commentInfo["id"] as! String),
"commentMessage":(commentInfo["message"] as! String),
"network":"facebook",
"notification": "Your item \"\(listingDict!["listingTitle"] as! String)\" has a new comment.",
"key": listing.key,
"seen":false,
"senderID":(fromInfo["id"]! as! String),
"senderName":(fromInfo["name"]! as! String),
"type":"FBComment"
]
ServiceNotificationManager.delegate?.listingHasNewNotifications(commentDict, ebayInfo: nil, amazonInfo: nil, etsyInfo: nil)
}
}else{
let commentDict = [
"UUID":(commentInfo["id"] as! String),
"commentMessage":(commentInfo["message"] as! String),
"network":"facebook",
"notification": "Your item \"\(listingDict!["listingTitle"] as! String)\" has a new comment.",
"key": listing.key,
"seen":false,
"senderID":(fromInfo["id"]! as! String),
"senderName":(fromInfo["name"]! as! String),
"type":"FBComment"
]
ServiceNotificationManager.delegate?.listingHasNewNotifications(commentDict, ebayInfo: nil, amazonInfo: nil, etsyInfo: nil)
}
}
})
})
})
}
}
if(etsyID != nil){
if (self.etsyManager.isAuthorized) {
self.etsyManager.getListingInfo ("/listings/\(etsyID!)", onCompletion: {
(listingNotificationInfo, error) -> Void in
let info = (listingNotificationInfo as! [String : AnyObject])
//@TODO: Test this code with the draft condition for both expired and sold_out
if ((info["status"] as! String == "expired") || (info["status"] as! String == "removed")) {
ServiceNotificationManager.delegate?.listingHasEnded(
nil,
ebayInfo: nil,
amazonInfo: nil,
etsyInfo: [
"type": "Ended",
"notification": "Your listing \"\(listingDict!["listingTitle"] as! String)\" has ended on etsy.",
"listingKey": listing.key]
)
}else if info["status"] as! String == "sold_out" {
ServiceNotificationManager.delegate?.listingHasNewNotifications(
nil,
ebayInfo: nil,
amazonInfo: nil,
etsyInfo: [
"type": "Sold",
"notification": "Your listing \"\(listingDict!["listingTitle"] as! String)\" has sold out on etsy.",
"listingKey": listing.key]
)
} else if info["status"] as! String == "draft" {
}
})
}
}
if(amazonID != nil){
}
//dispatch_group_leave(notificationGroup)
}else {
// dispatch_group_leave(notificationGroup)
}
}else {
//dispatch_group_leave(notificationGroup)
}
})
}
self.ebayGraphManager.isGettingNotification = false
//dispatch_group_notify(notificationGroup, dispatch_get_main_queue(), {
//self.delegate?.listingHasNewNotifications(nil, ebayInfo: nil, amazonInfo: nil, etsyInfo: nil)
//})
}
}