Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 39 additions & 11 deletions ExampleApp/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
TradeItSDK.configure(
apiKey: AppDelegate.API_KEY,
oAuthCallbackUrl: URL(string: "tradeItExampleScheme://completeOAuth")!,
verify1FACallbackUrl: URL(string: "tradeItExampleScheme://complete1FA")!,
environment: AppDelegate.ENVIRONMENT,
userCountryCode: "US"
)
Expand Down Expand Up @@ -45,16 +46,20 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
print("=====> Received OAuth callback URL: \(url.absoluteString)")

let MANUAL_HOST = "manualCompleteOAuth"
let VERIFY_1FA = "complete1FA"

// Check for the intended url.scheme, url.host, and url.path before proceeding
if let urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false),
urlComponents.scheme == "tradeitexamplescheme",
let host = urlComponents.host,
let queryItems = urlComponents.queryItems,
let oAuthVerifier = queryItems.filter({ $0.name == "oAuthVerifier" }).first?.value {
let queryItems = urlComponents.queryItems {

if host == MANUAL_HOST {
self.completeManualOAuth(oAuthVerifier: oAuthVerifier)
if let oAuthVerifier = queryItems.filter({ $0.name == "oAuthVerifier" }).first?.value {
self.completeManualOAuth(oAuthVerifier: oAuthVerifier)
}
} else if host == VERIFY_1FA {
self.handleExampleVerify1FA(verify1FACallbackUrl: url, host: host)
} else {
self.handleExampleOAuth(oAuthCallbackUrl: url, host: host)
}
Expand Down Expand Up @@ -183,14 +188,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
let YAHOO_HOST = "completeYahooOAuth"

if var topViewController = UIApplication.shared.keyWindow?.rootViewController {
while let presentedViewController = topViewController.presentedViewController {
topViewController = presentedViewController
}

if let navController = topViewController as? UINavigationController,
let navTopViewController = navController.topViewController {
topViewController = navTopViewController
}
topViewController = getTopViewController(viewController: topViewController)

switch host {
case EXAMPLE_HOST:
Expand All @@ -211,6 +209,36 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
}
}
}

private func handleExampleVerify1FA(verify1FACallbackUrl: URL, host: String) {
let VERIFY_1FA = "complete1FA"
if var topViewController = UIApplication.shared.keyWindow?.rootViewController {
topViewController = getTopViewController(viewController: topViewController)

switch host {
case VERIFY_1FA:
TradeItSDK.launcher.handleVerify1FACallback(
onTopmostViewController: topViewController,
verify1FACallbackUrl: verify1FACallbackUrl
)
default:
print("=====> ERROR: Received unknown verify 1 FA callback URL host: \(host)")
}
}
}

private func getTopViewController(viewController: UIViewController) -> UIViewController {
var topViewController = viewController
while let presentedViewController = topViewController.presentedViewController {
topViewController = presentedViewController
}

if let navController = topViewController as? UINavigationController,
let navTopViewController = navController.topViewController {
topViewController = navTopViewController
}
return topViewController
}
}

// Only implement this protocol if you need to inject your own market data
Expand Down
3 changes: 3 additions & 0 deletions TradeItIosEmsApi/TradeItCancelOrderRequest.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,8 @@
@property (nonatomic, copy, nullable) NSString * token;
@property (nonatomic, copy, nullable) NSString * accountNumber;
@property (nonatomic, copy, nullable) NSString * orderNumber;
@property (nonatomic, copy, nullable) NSString * interAppAddressCallback;

- (_Nonnull id)initWithInterAppAddressCallback:(NSString * _Nonnull)interAppAddressCallback;

@end
8 changes: 8 additions & 0 deletions TradeItIosEmsApi/TradeItCancelOrderRequest.m
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
#import "TradeItCancelOrderRequest.h"

@implementation TradeItCancelOrderRequest
- (id)initWithInterAppAddressCallback:(NSString *)interAppAddressCallback {
self = [super init];

if (self) {
self.interAppAddressCallback = interAppAddressCallback;
}

return self;
}
@end
9 changes: 9 additions & 0 deletions TradeItIosEmsApi/TradeItComplete1FARequest.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#import <TradeItIosTicketSDK2/TradeItIosTicketSDK2.h>

@interface TradeItComplete1FARequest : TradeItRequest

-(nonnull id) initWithToken:(NSString* _Nullable) token;

@property (copy) NSString * _Nullable token;

@end
13 changes: 13 additions & 0 deletions TradeItIosEmsApi/TradeItComplete1FARequest.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#import "TradeItComplete1FARequest.h"

@implementation TradeItComplete1FARequest

-(id) initWithToken:(NSString*) token {
self = [super init];
if(self){
self.token = token;
}
return self;
}

@end
2 changes: 2 additions & 0 deletions TradeItIosEmsApi/TradeItIosEmsApiLib.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@
#import "TradeItFxOrderCapabilities.h"
#import "TradeItFxOrderCapabilitiesResult.h"
#import "TradeItFxQuoteRequest.h"
#import "TradeItVerifyOAuthURLResult.h"
#import "TradeItComplete1FARequest.h"

// Use the BalanceService to get account balance information
#import "TradeItAccountOverviewRequest.h"
Expand Down
5 changes: 4 additions & 1 deletion TradeItIosEmsApi/TradeItPlaceTradeRequest.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@

@interface TradeItPlaceTradeRequest : TradeItRequest

- (id _Nonnull)initWithOrderId:(NSString * _Nonnull) orderId;
- (id _Nonnull)initWithOrderId:(NSString * _Nonnull) orderId
andInterAppAddressCallback:(NSString * _Nonnull) interAppAddressCallback;

// The orderId as returned from the TradeItPreviewTradeRequest
@property (copy) NSString * _Nullable orderId;
Expand All @@ -21,4 +22,6 @@
// Setting this will be overriden
@property (copy) NSString * _Nullable token;

@property (copy) NSString * _Nullable interAppAddressCallback;

@end
4 changes: 3 additions & 1 deletion TradeItIosEmsApi/TradeItPlaceTradeRequest.m
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@

@implementation TradeItPlaceTradeRequest

- (id)initWithOrderId:(NSString *) orderId {
- (id)initWithOrderId:(NSString *) orderId
andInterAppAddressCallback:(NSString *) interAppAddressCallback {
self = [super init];
if (self) {
self.orderId = orderId;
self.interAppAddressCallback = interAppAddressCallback;
}
return self;
}
Expand Down
2 changes: 2 additions & 0 deletions TradeItIosEmsApi/TradeItResult.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@

- (BOOL)isSecurityQuestion;

- (BOOL)isVerify1FA;

- (BOOL)isReviewOrder;

- (BOOL)isError;
Expand Down
4 changes: 4 additions & 0 deletions TradeItIosEmsApi/TradeItResult.m
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ - (BOOL)isSecurityQuestion {
return [@"INFORMATION_NEEDED" isEqualToString:self.status];
}

- (BOOL)isVerify1FA {
return [@"VERIFY_1FA" isEqualToString:self.status];
}

- (BOOL)isReviewOrder {
return [@"REVIEW_ORDER" isEqualToString:self.status];
}
Expand Down
9 changes: 9 additions & 0 deletions TradeItIosEmsApi/TradeItVerifyOAuthURLResult.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#import "TradeItResult.h"

@interface TradeItVerifyOAuthURLResult: TradeItResult

@property (nullable) NSString *oAuthURL;

- (NSURL * _Nullable)oAuthUrl;

@end
12 changes: 12 additions & 0 deletions TradeItIosEmsApi/TradeItVerifyOAuthURLResult.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#import "TradeItVerifyOAuthURLResult.h"

@implementation TradeItVerifyOAuthURLResult

- (NSURL *)oAuthUrl {
if (self.oAuthURL == NULL) {
return NULL;
}

return [[NSURL alloc] initWithString:self.oAuthURL];
}
@end
24 changes: 24 additions & 0 deletions TradeItIosTicketSDK2.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -524,11 +524,19 @@
B5749B551F46475300FCE1B5 /* CachedLinkedBrokerAccount.m in Sources */ = {isa = PBXBuildFile; fileRef = B5749B531F46475300FCE1B5 /* CachedLinkedBrokerAccount.m */; };
B57ABA301DBEA9C1009B82A3 /* LocalAuthentication.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B57ABA2F1DBEA9C1009B82A3 /* LocalAuthentication.framework */; };
B57ABA321DBEAA39009B82A3 /* TradeItDeviceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B57ABA311DBEAA39009B82A3 /* TradeItDeviceManager.swift */; };
B58ADB3220AF666D006BD374 /* TradeItVerifyOAuthURLResult.h in Headers */ = {isa = PBXBuildFile; fileRef = B58ADB3020AF666D006BD374 /* TradeItVerifyOAuthURLResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
B58ADB3320AF666D006BD374 /* TradeItVerifyOAuthURLResult.h in Headers */ = {isa = PBXBuildFile; fileRef = B58ADB3020AF666D006BD374 /* TradeItVerifyOAuthURLResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
B58ADB3420AF666D006BD374 /* TradeItVerifyOAuthURLResult.m in Sources */ = {isa = PBXBuildFile; fileRef = B58ADB3120AF666D006BD374 /* TradeItVerifyOAuthURLResult.m */; };
B58ADB3520AF666D006BD374 /* TradeItVerifyOAuthURLResult.m in Sources */ = {isa = PBXBuildFile; fileRef = B58ADB3120AF666D006BD374 /* TradeItVerifyOAuthURLResult.m */; };
B58BC7241DDBA6780079ED8B /* TradeItWebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B58BC7231DDBA6780079ED8B /* TradeItWebViewController.swift */; };
B58BC7271DDBBE260079ED8B /* TradeItUserAgentProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = B58BC7251DDBBE260079ED8B /* TradeItUserAgentProvider.h */; settings = {ATTRIBUTES = (Public, ); }; };
B58BC7281DDBBE260079ED8B /* TradeItUserAgentProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = B58BC7261DDBBE260079ED8B /* TradeItUserAgentProvider.m */; };
B59F0CC61EA69D3E00C0F56F /* TradeItSubtitleWithDetailsCellTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59F0CC51EA69D3E00C0F56F /* TradeItSubtitleWithDetailsCellTableViewCell.swift */; };
B59F0CC71EA69D3E00C0F56F /* TradeItSubtitleWithDetailsCellTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59F0CC51EA69D3E00C0F56F /* TradeItSubtitleWithDetailsCellTableViewCell.swift */; };
B59FB19320B8B2A800BAC4EF /* TradeItComplete1FARequest.h in Headers */ = {isa = PBXBuildFile; fileRef = B59FB19120B8B2A800BAC4EF /* TradeItComplete1FARequest.h */; settings = {ATTRIBUTES = (Public, ); }; };
B59FB19420B8B2A800BAC4EF /* TradeItComplete1FARequest.h in Headers */ = {isa = PBXBuildFile; fileRef = B59FB19120B8B2A800BAC4EF /* TradeItComplete1FARequest.h */; settings = {ATTRIBUTES = (Public, ); }; };
B59FB19520B8B2A800BAC4EF /* TradeItComplete1FARequest.m in Sources */ = {isa = PBXBuildFile; fileRef = B59FB19220B8B2A800BAC4EF /* TradeItComplete1FARequest.m */; };
B59FB19620B8B2A800BAC4EF /* TradeItComplete1FARequest.m in Sources */ = {isa = PBXBuildFile; fileRef = B59FB19220B8B2A800BAC4EF /* TradeItComplete1FARequest.m */; };
B5A6E17A1F60300C00093161 /* TradeItOrdersViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A6E1791F60300C00093161 /* TradeItOrdersViewController.swift */; };
B5A6E17B1F60300C00093161 /* TradeItOrdersViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A6E1791F60300C00093161 /* TradeItOrdersViewController.swift */; };
B5AFC1F11F33A1BC0043E20F /* TradeItRequestFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5AFC1F01F33A1BC0043E20F /* TradeItRequestFactory.swift */; };
Expand Down Expand Up @@ -1244,10 +1252,14 @@
B5749B531F46475300FCE1B5 /* CachedLinkedBrokerAccount.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CachedLinkedBrokerAccount.m; sourceTree = "<group>"; };
B57ABA2F1DBEA9C1009B82A3 /* LocalAuthentication.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LocalAuthentication.framework; path = System/Library/Frameworks/LocalAuthentication.framework; sourceTree = SDKROOT; };
B57ABA311DBEAA39009B82A3 /* TradeItDeviceManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TradeItDeviceManager.swift; sourceTree = "<group>"; };
B58ADB3020AF666D006BD374 /* TradeItVerifyOAuthURLResult.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TradeItVerifyOAuthURLResult.h; sourceTree = "<group>"; };
B58ADB3120AF666D006BD374 /* TradeItVerifyOAuthURLResult.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TradeItVerifyOAuthURLResult.m; sourceTree = "<group>"; };
B58BC7231DDBA6780079ED8B /* TradeItWebViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TradeItWebViewController.swift; sourceTree = "<group>"; };
B58BC7251DDBBE260079ED8B /* TradeItUserAgentProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TradeItUserAgentProvider.h; sourceTree = "<group>"; };
B58BC7261DDBBE260079ED8B /* TradeItUserAgentProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TradeItUserAgentProvider.m; sourceTree = "<group>"; };
B59F0CC51EA69D3E00C0F56F /* TradeItSubtitleWithDetailsCellTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TradeItSubtitleWithDetailsCellTableViewCell.swift; sourceTree = "<group>"; };
B59FB19120B8B2A800BAC4EF /* TradeItComplete1FARequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TradeItComplete1FARequest.h; sourceTree = "<group>"; };
B59FB19220B8B2A800BAC4EF /* TradeItComplete1FARequest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TradeItComplete1FARequest.m; sourceTree = "<group>"; };
B5A6E1791F60300C00093161 /* TradeItOrdersViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TradeItOrdersViewController.swift; sourceTree = "<group>"; };
B5AFC1F01F33A1BC0043E20F /* TradeItRequestFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TradeItRequestFactory.swift; sourceTree = "<group>"; };
B5AFC1F31F33A6EE0043E20F /* TradeitEmsEnvironments.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TradeitEmsEnvironments.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -2027,6 +2039,8 @@
759FA1DE20A38DA900A4AD07 /* TradeItCryptoPreviewTradeRequest.m */,
E09C598720D46227003991E2 /* TradeItCryptoQuoteRequest.h */,
E09C598820D46227003991E2 /* TradeItCryptoQuoteRequest.m */,
B59FB19120B8B2A800BAC4EF /* TradeItComplete1FARequest.h */,
B59FB19220B8B2A800BAC4EF /* TradeItComplete1FARequest.m */,
);
name = Requests;
sourceTree = "<group>";
Expand Down Expand Up @@ -2086,6 +2100,8 @@
759FA1EA20A5CF0500A4AD07 /* TradeItCryptoPreviewTradeResult.m */,
E09C598120D4522D003991E2 /* TradeItCryptoQuoteResult.h */,
E09C598220D4522D003991E2 /* TradeItCryptoQuoteResult.m */,
B58ADB3020AF666D006BD374 /* TradeItVerifyOAuthURLResult.h */,
B58ADB3120AF666D006BD374 /* TradeItVerifyOAuthURLResult.m */,
);
name = Responses;
sourceTree = "<group>";
Expand Down Expand Up @@ -2209,6 +2225,7 @@
75BAABEC1DB7EF2F00E5435C /* TradeItSymbolLookupResult.h in Headers */,
75AB47651F003AA000A8BEC6 /* TradeItFxOrderCapabilitiesResult.h in Headers */,
B5E4626E1F58C24000C8ABA8 /* TradeItOrderLeg.h in Headers */,
B59FB19320B8B2A800BAC4EF /* TradeItComplete1FARequest.h in Headers */,
75BAABB11DB7EF2F00E5435C /* TradeItFxPosition.h in Headers */,
75BAABBC1DB7EF2F00E5435C /* TradeItLinkedLogin.h in Headers */,
75BAAB951DB7EF2F00E5435C /* TradeItAuthenticationRequest.h in Headers */,
Expand All @@ -2226,6 +2243,7 @@
759FA1E520A38F1200A4AD07 /* TradeItCryptoPreviewTradeDetails.h in Headers */,
75BAAB9B1DB7EF2F00E5435C /* TradeItAuthLinkResult.h in Headers */,
75BAABD01DB7EF2F00E5435C /* TradeItPreviewTradeResult.h in Headers */,
B58ADB3220AF666D006BD374 /* TradeItVerifyOAuthURLResult.h in Headers */,
757007511F43981E00B95044 /* TopGradientView.h in Headers */,
7591A9051EFAC56E008EB943 /* TradeItFxOrderLeg.h in Headers */,
75BAABE41DB7EF2F00E5435C /* TradeItSecurityQuestionResult.h in Headers */,
Expand Down Expand Up @@ -2308,6 +2326,7 @@
75AB47661F003AA000A8BEC6 /* TradeItFxOrderCapabilitiesResult.h in Headers */,
FC6E7A411DCD1F8B005225CC /* TradeItFxPosition.h in Headers */,
B5E4626F1F58C24000C8ABA8 /* TradeItOrderLeg.h in Headers */,
B59FB19420B8B2A800BAC4EF /* TradeItComplete1FARequest.h in Headers */,
FA80FFCC1DF21F2800C54091 /* TradeItOAuthLoginPopupUrlForMobileResult.h in Headers */,
FC6E7A461DCD1F8B005225CC /* TradeItLinkedLogin.h in Headers */,
FC6E7A471DCD1F8B005225CC /* TradeItAuthenticationRequest.h in Headers */,
Expand All @@ -2325,6 +2344,7 @@
759FA1E620A38F1200A4AD07 /* TradeItCryptoPreviewTradeDetails.h in Headers */,
FC6E7A511DCD1F8B005225CC /* TradeItAuthLinkResult.h in Headers */,
FC6E7A521DCD1F8B005225CC /* TradeItPreviewTradeResult.h in Headers */,
B58ADB3320AF666D006BD374 /* TradeItVerifyOAuthURLResult.h in Headers */,
757007521F43981E00B95044 /* TopGradientView.h in Headers */,
7591A9061EFAC56E008EB943 /* TradeItFxOrderLeg.h in Headers */,
FC6E7A541DCD1F8B005225CC /* TradeItSecurityQuestionResult.h in Headers */,
Expand Down Expand Up @@ -2965,6 +2985,7 @@
75BAAB941DB7EF2F00E5435C /* TradeItAuthenticationInfo.m in Sources */,
B5B8EBB61E8C29630098EC3D /* TradeItLinkedBrokerErrorTableViewCell.swift in Sources */,
7579DF3820AB7F37009B873B /* TradeItYahooCryptoTradingTicketViewController.swift in Sources */,
B58ADB3420AF666D006BD374 /* TradeItVerifyOAuthURLResult.m in Sources */,
75BAAAE41DB7EEB400E5435C /* TradeItTradingConfirmationViewController.swift in Sources */,
754200431EF8246E00B15E92 /* TicketRow.swift in Sources */,
75BAAB8E1DB7EF2F00E5435C /* TradeItAccountOverviewResult.m in Sources */,
Expand Down Expand Up @@ -3002,6 +3023,7 @@
75AB47671F003AA000A8BEC6 /* TradeItFxOrderCapabilitiesResult.m in Sources */,
75BAABB01DB7EF2F00E5435C /* TradeItFxAccountOverview.m in Sources */,
75BAAAA91DB7EEB400E5435C /* TradeItAccountSelectionTableViewCell.swift in Sources */,
B59FB19520B8B2A800BAC4EF /* TradeItComplete1FARequest.m in Sources */,
75BAABB21DB7EF2F00E5435C /* TradeItFxPosition.m in Sources */,
75E2022F1F19428E003660AF /* TradeItBrokerLogo.m in Sources */,
BAD1CF79207813E6008BF987 /* TradeItBrandedAccountNameCell.swift in Sources */,
Expand Down Expand Up @@ -3250,6 +3272,7 @@
FC6E79B81DCD1F8B005225CC /* TradeItAccountOverviewResult.m in Sources */,
FC6E79B91DCD1F8B005225CC /* TradeItPortfolioEquityPositionPresenter.swift in Sources */,
FC6E79BA1DCD1F8B005225CC /* TradeItPosition.m in Sources */,
B58ADB3520AF666D006BD374 /* TradeItVerifyOAuthURLResult.m in Sources */,
754200441EF8246E00B15E92 /* TicketRow.swift in Sources */,
75D94D1E1E7331E200EAE775 /* TradeItPortfolioAccountDetailsTableViewCell.swift in Sources */,
FC6E79BB1DCD1F8B005225CC /* TradeItUpdateLinkRequest.m in Sources */,
Expand Down Expand Up @@ -3288,6 +3311,7 @@
FC6E79D21DCD1F8B005225CC /* TradeItAccountSelectionViewController.swift in Sources */,
FC6E79D41DCD1F8B005225CC /* TradeItDeviceManager.swift in Sources */,
75E202301F19428E003660AF /* TradeItBrokerLogo.m in Sources */,
B59FB19620B8B2A800BAC4EF /* TradeItComplete1FARequest.m in Sources */,
B5BEEFAE1F20096300BAC0DF /* UIView+TradeIt.swift in Sources */,
FC6E79D51DCD1F8B005225CC /* Array+TradeIt.swift in Sources */,
BAD1CF7A207813E6008BF987 /* TradeItBrandedAccountNameCell.swift in Sources */,
Expand Down
Loading