From 610fafd813c612c0251d430780efeffa47764f28 Mon Sep 17 00:00:00 2001 From: Mike McDonald Date: Sat, 20 Feb 2016 12:28:46 -0800 Subject: [PATCH 1/2] Clang format FTW --- .../Auth/API/FirebaseLoginViewController.h | 5 +- .../FirebaseFacebookAuthProvider.m | 4 +- .../FirebaseGoogleAuthProvider.m | 4 +- .../FirebaseLoginViewController.m | 25 ++++--- .../Core/API/FirebaseTableViewDataSource.h | 2 - .../FirebaseCollectionViewDataSource.m | 72 +++++++++---------- .../FirebaseTableViewDataSource.m | 58 +++++++-------- 7 files changed, 87 insertions(+), 83 deletions(-) diff --git a/FirebaseUI/Auth/API/FirebaseLoginViewController.h b/FirebaseUI/Auth/API/FirebaseLoginViewController.h index a747fed43a4..cb4399b6fae 100644 --- a/FirebaseUI/Auth/API/FirebaseLoginViewController.h +++ b/FirebaseUI/Auth/API/FirebaseLoginViewController.h @@ -116,7 +116,7 @@ /** * Dismissal callback on success or failure. */ -@property (nonatomic, copy) void (^dismissCallback)(FAuthData *user, NSError *error); +@property(nonatomic, copy) void (^dismissCallback)(FAuthData *user, NSError *error); /** * The Firebase database reference which to authenticate against. @@ -169,7 +169,8 @@ /** * Callback that fires when after the controller is dismissed (either on success or on failure). - * If successful, the user field will be populated; if an error occurred the error field will be populated. + * If successful, the user field will be populated; if an error occurred the error field will be + * populated. * @param callback A block that returns a user on success or an error on failure. * @return void */ diff --git a/FirebaseUI/Auth/Implementation/FirebaseFacebookAuthProvider.m b/FirebaseUI/Auth/Implementation/FirebaseFacebookAuthProvider.m index 794d7c7c752..396b7df70aa 100644 --- a/FirebaseUI/Auth/Implementation/FirebaseFacebookAuthProvider.m +++ b/FirebaseUI/Auth/Implementation/FirebaseFacebookAuthProvider.m @@ -53,8 +53,8 @@ - (void)configureProvider { if (!(facebookAppId && facebookDisplayName)) { [NSException raise:NSInternalInconsistencyException format:@"Please set FacebookAppID, FacebookDisplayName, and\nURL types > Url " - @"Schemes in `Supporting Files/Info.plist` according to " - @"https://developers.facebook.com/docs/ios/getting-started"]; + @"Schemes in `Supporting Files/Info.plist` according to " + @"https://developers.facebook.com/docs/ios/getting-started"]; } _loginManager = [[FBSDKLoginManager alloc] init]; diff --git a/FirebaseUI/Auth/Implementation/FirebaseGoogleAuthProvider.m b/FirebaseUI/Auth/Implementation/FirebaseGoogleAuthProvider.m index 988229a4b0a..b13e92a1640 100644 --- a/FirebaseUI/Auth/Implementation/FirebaseGoogleAuthProvider.m +++ b/FirebaseUI/Auth/Implementation/FirebaseGoogleAuthProvider.m @@ -57,8 +57,8 @@ - (void)configureProvider { if (!(clientIdExists && reversedClientIdExists)) { [NSException raise:NSInternalInconsistencyException format:@"Please add `GoogleService-Info.plist` to `Supporting Files` and\nURL " - @"types > Url Schemes in `Supporting Files/Info.plist` according to " - @"https://developers.google.com/identity/sign-in/ios/start-integrating"]; + @"types > Url Schemes in `Supporting Files/Info.plist` according to " + @"https://developers.google.com/identity/sign-in/ios/start-integrating"]; } } diff --git a/FirebaseUI/Auth/Implementation/FirebaseLoginViewController.m b/FirebaseUI/Auth/Implementation/FirebaseLoginViewController.m index 6109e1b31eb..c0d319ad92b 100644 --- a/FirebaseUI/Auth/Implementation/FirebaseLoginViewController.m +++ b/FirebaseUI/Auth/Implementation/FirebaseLoginViewController.m @@ -42,7 +42,8 @@ - (instancetype)initWithRef:(Firebase *)ref; self = [super init]; if (self) { self.ref = ref; - self.dismissCallback = ^(FAuthData *user, NSError *error){}; + self.dismissCallback = ^(FAuthData *user, NSError *error) { + }; _socialProviders = [[NSMutableArray alloc] initWithCapacity:3]; } return self; @@ -54,7 +55,8 @@ - (void)viewDidLoad { // Throw an exception if no IDPs are enabled if (self.passwordAuthProvider == nil && [_socialProviders count] == 0) { [NSException raise:NSInternalInconsistencyException - format:@"Please enable at least one authentication provider in your FirebaseLoginViewController"]; + format:@"Please enable at least one authentication provider in your " + @"FirebaseLoginViewController"]; } // Add cancel button @@ -133,15 +135,16 @@ - (instancetype)enableProvider:(FAuthProvider)provider { case FAuthProviderFacebook: if (!self.facebookAuthProvider) { self.facebookAuthProvider = - [[FirebaseFacebookAuthProvider alloc] initWithRef:self.ref authDelegate:self]; + [[FirebaseFacebookAuthProvider alloc] initWithRef:self.ref authDelegate:self]; [_socialProviders addObject:self.facebookAuthProvider]; } break; case FAuthProviderGoogle: if (!self.googleAuthProvider) { - self.googleAuthProvider = - [[FirebaseGoogleAuthProvider alloc] initWithRef:self.ref authDelegate:self uiDelegate:self]; + self.googleAuthProvider = [[FirebaseGoogleAuthProvider alloc] initWithRef:self.ref + authDelegate:self + uiDelegate:self]; [_socialProviders addObject:self.googleAuthProvider]; } break; @@ -158,7 +161,7 @@ - (instancetype)enableProvider:(FAuthProvider)provider { case FAuthProviderPassword: if (!self.passwordAuthProvider) { self.passwordAuthProvider = - [[FirebasePasswordAuthProvider alloc] initWithRef:self.ref authDelegate:self]; + [[FirebasePasswordAuthProvider alloc] initWithRef:self.ref authDelegate:self]; } break; @@ -191,7 +194,8 @@ - (void)loginButtonPressed:(id)button { break; case FAuthProviderPassword: - [self.passwordAuthProvider loginWithEmail:self.emailTextField.text andPassword:self.passwordTextField.text]; + [self.passwordAuthProvider loginWithEmail:self.emailTextField.text + andPassword:self.passwordTextField.text]; break; default: @@ -217,9 +221,10 @@ - (void)cancelButtonPressed { } - (void)dismissViewControllerWithUser:(FAuthData *)user andError:(NSError *)error { - [self dismissViewControllerAnimated:YES completion:^{ - self.dismissCallback(user, error); - }]; + [self dismissViewControllerAnimated:YES + completion:^{ + self.dismissCallback(user, error); + }]; } #pragma mark - diff --git a/FirebaseUI/Core/API/FirebaseTableViewDataSource.h b/FirebaseUI/Core/API/FirebaseTableViewDataSource.h index 9703afabb96..ec2e51dda98 100644 --- a/FirebaseUI/Core/API/FirebaseTableViewDataSource.h +++ b/FirebaseUI/Core/API/FirebaseTableViewDataSource.h @@ -390,8 +390,6 @@ cellReuseIdentifier:(__NON_NULL NSString *)identifier view:(__NON_NULL UITableView *)tableView; - - /** * This method populates the fields of a UITableViewCell or subclass given a * model object (or diff --git a/FirebaseUI/Core/Implementation/FirebaseCollectionViewDataSource.m b/FirebaseUI/Core/Implementation/FirebaseCollectionViewDataSource.m index 40d64ee1926..b82d5d01072 100644 --- a/FirebaseUI/Core/Implementation/FirebaseCollectionViewDataSource.m +++ b/FirebaseUI/Core/Implementation/FirebaseCollectionViewDataSource.m @@ -43,19 +43,19 @@ - (instancetype)initWithRef:(Firebase *)ref cellReuseIdentifier:(NSString *)identifier view:(UICollectionView *)collectionView { return [self initWithQuery:ref - modelClass:nil - cellClass:nil - cellReuseIdentifier:identifier - view:collectionView]; + modelClass:nil + cellClass:nil + cellReuseIdentifier:identifier + view:collectionView]; } - (instancetype)initWithRef:(Firebase *)ref prototypeReuseIdentifier:(NSString *)identifier view:(UICollectionView *)collectionView { return [self initWithQuery:ref - modelClass:nil - prototypeReuseIdentifier:identifier - view:collectionView]; + modelClass:nil + prototypeReuseIdentifier:identifier + view:collectionView]; } - (instancetype)initWithRef:(Firebase *)ref @@ -63,10 +63,10 @@ - (instancetype)initWithRef:(Firebase *)ref cellReuseIdentifier:(NSString *)identifier view:(UICollectionView *)collectionView { return [self initWithQuery:ref - modelClass:nil - cellClass:cell - cellReuseIdentifier:identifier - view:collectionView]; + modelClass:nil + cellClass:cell + cellReuseIdentifier:identifier + view:collectionView]; } - (instancetype)initWithRef:(Firebase *)ref @@ -74,10 +74,10 @@ - (instancetype)initWithRef:(Firebase *)ref cellReuseIdentifier:(NSString *)identifier view:(UICollectionView *)collectionView { return [self initWithQuery:ref - modelClass:nil - nibNamed:nibName - cellReuseIdentifier:identifier - view:collectionView]; + modelClass:nil + nibNamed:nibName + cellReuseIdentifier:identifier + view:collectionView]; } - (instancetype)initWithRef:(Firebase *)ref @@ -85,10 +85,10 @@ - (instancetype)initWithRef:(Firebase *)ref cellReuseIdentifier:(NSString *)identifier view:(UICollectionView *)collectionView { return [self initWithQuery:ref - modelClass:model - cellClass:nil - cellReuseIdentifier:identifier - view:collectionView]; + modelClass:model + cellClass:nil + cellReuseIdentifier:identifier + view:collectionView]; } - (instancetype)initWithRef:(Firebase *)ref @@ -96,9 +96,9 @@ - (instancetype)initWithRef:(Firebase *)ref prototypeReuseIdentifier:(NSString *)identifier view:(UICollectionView *)collectionView { return [self initWithQuery:ref - modelClass:model - prototypeReuseIdentifier:identifier - view:collectionView]; + modelClass:model + prototypeReuseIdentifier:identifier + view:collectionView]; } - (instancetype)initWithRef:(Firebase *)ref @@ -126,13 +126,13 @@ - (instancetype)initWithRef:(Firebase *)ref } - (instancetype)initWithQuery:(FQuery *)query - cellReuseIdentifier:(NSString *)identifier - view:(UICollectionView *)collectionView { + cellReuseIdentifier:(NSString *)identifier + view:(UICollectionView *)collectionView { return [self initWithQuery:query - modelClass:nil - cellClass:nil - cellReuseIdentifier:identifier - view:collectionView]; + modelClass:nil + cellClass:nil + cellReuseIdentifier:identifier + view:collectionView]; } - (instancetype)initWithQuery:(FQuery *)query @@ -192,10 +192,10 @@ - (instancetype)initWithQuery:(FQuery *)query } - (instancetype)initWithQuery:(FQuery *)query - modelClass:(Class)model - cellClass:(Class)cell - cellReuseIdentifier:(NSString *)identifier - view:(UICollectionView *)collectionView { + modelClass:(Class)model + cellClass:(Class)cell + cellReuseIdentifier:(NSString *)identifier + view:(UICollectionView *)collectionView { FirebaseArray *array = [[FirebaseArray alloc] initWithQuery:query]; self = [super initWithArray:array]; if (self) { @@ -223,10 +223,10 @@ - (instancetype)initWithQuery:(FQuery *)query } - (instancetype)initWithQuery:(FQuery *)query - modelClass:(Class)model - nibNamed:(NSString *)nibName - cellReuseIdentifier:(NSString *)identifier - view:(UICollectionView *)collectionView { + modelClass:(Class)model + nibNamed:(NSString *)nibName + cellReuseIdentifier:(NSString *)identifier + view:(UICollectionView *)collectionView { FirebaseArray *array = [[FirebaseArray alloc] initWithQuery:query]; self = [super initWithArray:array]; if (self) { diff --git a/FirebaseUI/Core/Implementation/FirebaseTableViewDataSource.m b/FirebaseUI/Core/Implementation/FirebaseTableViewDataSource.m index d4698f6c537..4311474efdc 100644 --- a/FirebaseUI/Core/Implementation/FirebaseTableViewDataSource.m +++ b/FirebaseUI/Core/Implementation/FirebaseTableViewDataSource.m @@ -43,20 +43,20 @@ - (instancetype)initWithRef:(Firebase *)ref cellReuseIdentifier:(NSString *)identifier view:(UITableView *)tableView { return [self initWithQuery:ref - modelClass:nil - cellClass:nil - cellReuseIdentifier:identifier - view:tableView]; + modelClass:nil + cellClass:nil + cellReuseIdentifier:identifier + view:tableView]; } - (instancetype)initWithRef:(Firebase *)ref prototypeReuseIdentifier:(NSString *)identifier view:(UITableView *)tableView { return [self initWithQuery:ref - modelClass:nil - cellClass:nil - cellReuseIdentifier:identifier - view:tableView]; + modelClass:nil + cellClass:nil + cellReuseIdentifier:identifier + view:tableView]; } - (instancetype)initWithRef:(Firebase *)ref @@ -64,10 +64,10 @@ - (instancetype)initWithRef:(Firebase *)ref cellReuseIdentifier:(NSString *)identifier view:(UITableView *)tableView { return [self initWithQuery:ref - modelClass:nil - cellClass:cell - cellReuseIdentifier:identifier - view:tableView]; + modelClass:nil + cellClass:cell + cellReuseIdentifier:identifier + view:tableView]; } - (instancetype)initWithRef:(Firebase *)ref @@ -75,10 +75,10 @@ - (instancetype)initWithRef:(Firebase *)ref cellReuseIdentifier:(NSString *)identifier view:(UITableView *)tableView { return [self initWithQuery:ref - modelClass:nil - nibNamed:nibName - cellReuseIdentifier:identifier - view:tableView]; + modelClass:nil + nibNamed:nibName + cellReuseIdentifier:identifier + view:tableView]; } - (instancetype)initWithRef:(Firebase *)ref @@ -86,10 +86,10 @@ - (instancetype)initWithRef:(Firebase *)ref cellReuseIdentifier:(NSString *)identifier view:(UITableView *)tableView { return [self initWithQuery:ref - modelClass:model - cellClass:nil - cellReuseIdentifier:identifier - view:tableView]; + modelClass:model + cellClass:nil + cellReuseIdentifier:identifier + view:tableView]; } - (instancetype)initWithRef:(Firebase *)ref @@ -97,10 +97,10 @@ - (instancetype)initWithRef:(Firebase *)ref prototypeReuseIdentifier:(NSString *)identifier view:(UITableView *)tableView { return [self initWithQuery:ref - modelClass:model - cellClass:nil - cellReuseIdentifier:identifier - view:tableView]; + modelClass:model + cellClass:nil + cellReuseIdentifier:identifier + view:tableView]; } - (instancetype)initWithRef:(Firebase *)ref @@ -111,7 +111,7 @@ - (instancetype)initWithRef:(Firebase *)ref return [self initWithQuery:ref modelClass:model cellClass:cell - cellReuseIdentifier:identifier + cellReuseIdentifier:identifier view:tableView]; } @@ -121,10 +121,10 @@ - (instancetype)initWithRef:(Firebase *)ref cellReuseIdentifier:(NSString *)identifier view:(UITableView *)tableView { return [self initWithQuery:ref - modelClass:model - nibNamed:nibName - cellReuseIdentifier:identifier - view:tableView]; + modelClass:model + nibNamed:nibName + cellReuseIdentifier:identifier + view:tableView]; } - (instancetype)initWithQuery:(FQuery *)query From 0e6c5374a26610775d4857163ec29ec329b1bf1c Mon Sep 17 00:00:00 2001 From: Mike McDonald Date: Sun, 21 Feb 2016 00:05:55 -0800 Subject: [PATCH 2/2] FirebaseUI 0.3.2, adds support for multiple auth subspecs (/Facebook, /Google, /Twitter, /Password) --- FirebaseUI.podspec | 50 +++++++++++++--- FirebaseUI.xcodeproj/project.pbxproj | 6 +- FirebaseUI/Auth/API/FirebaseAppDelegate.h | 6 ++ FirebaseUI/Auth/API/FirebaseAuthConstants.h | 7 +-- .../Auth/API/FirebaseLoginViewController.h | 59 +++++++++++++++++-- .../Auth/Implementation/FirebaseAppDelegate.m | 15 ++++- .../FirebaseLoginViewController.m | 20 ++++++- README.md | 15 ++++- build.sh | 4 +- 9 files changed, 150 insertions(+), 32 deletions(-) diff --git a/FirebaseUI.podspec b/FirebaseUI.podspec index 992eb148f40..bdb28a48942 100644 --- a/FirebaseUI.podspec +++ b/FirebaseUI.podspec @@ -1,29 +1,61 @@ Pod::Spec.new do |s| s.name = "FirebaseUI" - s.version = "0.3.1" + s.version = "0.3.2" s.summary = "UI binding libraries for Firebase." s.homepage = "https://github.com/firebase/FirebaseUI-iOS" s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { "Firebase" => "support@firebase.com" } s.social_media_url = "https://twitter.com/firebase" - s.source = { :git => "https://github.com/firebase/FirebaseUI-iOS.git", :tag => 'v0.3.1' } + s.source = { :git => "https://github.com/firebase/FirebaseUI-iOS.git", :tag => 'v0.3.2' } s.platform = :ios s.ios.deployment_target = "8.0" s.dependency "Firebase", "~>2.2" s.ios.framework = "UIKit" s.xcconfig = { 'FRAMEWORK_SEARCH_PATHS' => '"$(PODS_ROOT)/Firebase"' } s.requires_arc = true + s.default_subspecs = 'Core', 'Auth' s.subspec 'Core' do |core| core.source_files = "FirebaseUI/{Core,Util}/**/*.{h,m}" end s.subspec 'Auth' do |auth| - auth.source_files = "FirebaseUI/Auth/**/*.{h,m}" - auth.resources = "FirebaseUI/Auth/Resources/*" - auth.dependency "FBSDKCoreKit" - auth.dependency "FBSDKLoginKit" - auth.dependency "Google/SignIn" - auth.ios.framework = "Accounts" + auth.dependency "FirebaseUI/Facebook" + auth.dependency "FirebaseUI/Google" + auth.dependency "FirebaseUI/Twitter" + auth.dependency "FirebaseUI/Password" end - end + + s.subspec 'AuthHelper' do |helper| + helper.source_files = "FirebaseUI/Auth/**/{FirebaseAppDelegate,FirebaseLoginViewController,FirebaseAuthConstants,FirebaseAuthDelegate,FirebaseAuthProvider,FirebaseLoginButton}.{h,m}" + helper.resources = "FirebaseUI/Auth/Resources/*" + end + + s.subspec 'Facebook' do |facebook| + facebook.source_files = "FirebaseUI/Auth/**/FirebaseFacebookAuthProvider.{h,m}" + facebook.dependency "FirebaseUI/AuthHelper" + facebook.dependency "FBSDKCoreKit" + facebook.dependency "FBSDKLoginKit" + facebook.xcconfig = {"OTHER_CFLAGS" => "-DFIREBASEUI_ENABLE_FACEBOOK_AUTH=1"} + end + + s.subspec 'Google' do |google| + google.source_files = "FirebaseUI/Auth/**/FirebaseGoogleAuthProvider.{h,m}" + google.dependency "FirebaseUI/AuthHelper" + google.dependency "Google/SignIn" + google.xcconfig = {"OTHER_CFLAGS" => "-DFIREBASEUI_ENABLE_GOOGLE_AUTH=1 -DLOCAL_BUILD=0"} + end + + s.subspec 'Twitter' do |twitter| + twitter.source_files = "FirebaseUI/Auth/**/{FirebaseTwitterAuthProvider,TwitterAuthDelegate}.{h,m}" + twitter.dependency "FirebaseUI/AuthHelper" + twitter.ios.framework = "Accounts" + twitter.xcconfig = {"OTHER_CFLAGS" => "-DFIREBASEUI_ENABLE_TWITTER_AUTH=1"} + end + + s.subspec 'Password' do |password| + password.source_files = "FirebaseUI/Auth/**/FirebasePasswordAuthProvider.{h,m}" + password.dependency "FirebaseUI/AuthHelper" + password.xcconfig = {"OTHER_CFLAGS" => "-DFIREBASEUI_ENABLE_PASSWORD_AUTH=1"} + end +end diff --git a/FirebaseUI.xcodeproj/project.pbxproj b/FirebaseUI.xcodeproj/project.pbxproj index 668075d4c97..b174430766a 100644 --- a/FirebaseUI.xcodeproj/project.pbxproj +++ b/FirebaseUI.xcodeproj/project.pbxproj @@ -546,6 +546,7 @@ GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", + "LOCAL_BUILD=1", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -614,10 +615,7 @@ "$(PROJECT_DIR)/target/Products/Release-iphonesimulator", "$(PROJECT_DIR)/sdk/google_signin_sdk_2_2_0", ); - GCC_PREPROCESSOR_DEFINITIONS = ( - "LOCAL_BUILD=1", - "$(inherited)", - ); + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; GCC_TREAT_WARNINGS_AS_ERRORS = YES; GCC_WARN_PEDANTIC = YES; IPHONEOS_DEPLOYMENT_TARGET = 7.1; diff --git a/FirebaseUI/Auth/API/FirebaseAppDelegate.h b/FirebaseUI/Auth/API/FirebaseAppDelegate.h index 37710f921ca..aa34f3618f8 100644 --- a/FirebaseUI/Auth/API/FirebaseAppDelegate.h +++ b/FirebaseUI/Auth/API/FirebaseAppDelegate.h @@ -28,19 +28,25 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +// clang-format on + #import #import +#if FIREBASEUI_ENABLE_GOOGLE_AUTH #if LOCAL_BUILD #import #import "GGLContext.h" #else #import #endif +#endif +#if FIREBASEUI_ENABLE_FACEBOOK_AUTH #import #import +#endif /** * A replacement for the AppDelegate which includes setup for the Google and Facebook SDK's diff --git a/FirebaseUI/Auth/API/FirebaseAuthConstants.h b/FirebaseUI/Auth/API/FirebaseAuthConstants.h index 78c9a29335f..13c04728af5 100644 --- a/FirebaseUI/Auth/API/FirebaseAuthConstants.h +++ b/FirebaseUI/Auth/API/FirebaseAuthConstants.h @@ -33,9 +33,6 @@ #import #import -#ifndef FirebaseAuthConstants_h -#define FirebaseAuthConstants_h - FOUNDATION_EXPORT NSString *const kTwitterApiKey; FOUNDATION_EXPORT NSString *const kFacebookAppId; @@ -63,6 +60,4 @@ typedef NS_ENUM(NSInteger, FAuthProvider) { FAuthProviderGoogle, FAuthProviderTwitter, FAuthProviderPassword -}; - -#endif /* FirebaseAuthConstants_h */ +}; \ No newline at end of file diff --git a/FirebaseUI/Auth/API/FirebaseLoginViewController.h b/FirebaseUI/Auth/API/FirebaseLoginViewController.h index cb4399b6fae..a46adb49304 100644 --- a/FirebaseUI/Auth/API/FirebaseLoginViewController.h +++ b/FirebaseUI/Auth/API/FirebaseLoginViewController.h @@ -35,18 +35,39 @@ #import +// Shared auth +#import "FirebaseAuthDelegate.h" +#import "FirebaseLoginButton.h" +#import "FirebaseAuthProvider.h" + +// Pull in Twitter +#if FIREBASEUI_ENABLE_TWITTER_AUTH +#import "FirebaseTwitterAuthProvider.h" +#endif + +// Pull in Facebook +#if FIREBASEUI_ENABLE_FACEBOOK_AUTH +#import "FirebaseFacebookAuthProvider.h" +#endif + +// Pull in Google +#if FIREBASEUI_ENABLE_GOOGLE_AUTH +#import "FirebaseGoogleAuthProvider.h" +#endif + +// Google local build issues +#if FIREBASEUI_ENABLE_GOOGLE_AUTH #if LOCAL_BUILD #import #else #import #endif +#endif -#import "FirebaseAuthDelegate.h" -#import "FirebaseTwitterAuthProvider.h" -#import "FirebaseFacebookAuthProvider.h" -#import "FirebaseGoogleAuthProvider.h" +// Pull in Password +#if FIREBASEUI_ENABLE_PASSWORD_AUTH #import "FirebasePasswordAuthProvider.h" -#import "FirebaseLoginButton.h" +#endif /** * FirebaseLoginViewController is a subclass of UIViewController that provides a @@ -55,8 +76,19 @@ * error handling. * This also serves as a template for developers interested in developing custom login UI. */ +#if FIREBASEUI_ENABLE_TWITTER_AUTH && FIREBASEUI_ENABLE_GOOGLE_AUTH @interface FirebaseLoginViewController : UIViewController +#elif FIREBASEUI_ENABLE_TWITTER_AUTH +@interface FirebaseLoginViewController +: UIViewController +#elif FIREBASEUI_ENABLE_GOOGLE_AUTH +@interface FirebaseLoginViewController +: UIViewController +#else +@interface FirebaseLoginViewController: UIViewController +#endif + /** * Container view for login activity which wraps the header text and cancel button. @@ -128,28 +160,45 @@ * requests against the Twitter API and uses the response to authenticate * against the Firebase database. */ +#if FIREBASEUI_ENABLE_TWITTER_AUTH @property(strong, nonatomic) FirebaseTwitterAuthProvider *twitterAuthProvider; +#else +@property(strong, nonatomic) FirebaseAuthProvider *twitterAuthProvider; +#endif /** * The provider object for Facebook Authentication. This object handles the * requests against the Facebook SDK and uses the response to authenticate * against the Firebase database. */ +#if FIREBASEUI_ENABLE_FACEBOOK_AUTH @property(strong, nonatomic) FirebaseFacebookAuthProvider *facebookAuthProvider; +#else +@property(strong, nonatomic) FirebaseAuthProvider *facebookAuthProvider; +#endif + /** * The provider object for Google Authentication. This object handles the * requests against the Google SDK and uses the response to authenticate * against the Firebase database. */ +#if FIREBASEUI_ENABLE_GOOGLE_AUTH @property(strong, nonatomic) FirebaseGoogleAuthProvider *googleAuthProvider; +#else +@property(strong, nonatomic) FirebaseAuthProvider *googleAuthProvider; +#endif /** * The provider object for Email/Password Authentication. This object handles the * requests to the Firebase user authentication system to authenticate users to * the Firebase database. */ +#if FIREBASEUI_ENABLE_PASSWORD_AUTH @property(strong, nonatomic) FirebasePasswordAuthProvider *passwordAuthProvider; +#else +@property(strong, nonatomic) FirebaseAuthProvider *passwordAuthProvider; +#endif /** * Create an instance of FirebaseLoginViewController, which allows for easy authentication to diff --git a/FirebaseUI/Auth/Implementation/FirebaseAppDelegate.m b/FirebaseUI/Auth/Implementation/FirebaseAppDelegate.m index 110d187ac14..5e3b577a88d 100644 --- a/FirebaseUI/Auth/Implementation/FirebaseAppDelegate.m +++ b/FirebaseUI/Auth/Implementation/FirebaseAppDelegate.m @@ -33,13 +33,18 @@ @implementation FirebaseAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + +#if FIREBASEUI_ENABLE_GOOGLE_AUTH // Configure Google NSError* configureError; [[GGLContext sharedInstance] configureWithError: &configureError]; +#endif +#if FIREBASEUI_ENABLE_FACEBOOK_AUTH // Configure Facebook [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; +#endif // Return successful app launch return YES; @@ -47,16 +52,24 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { // This is the Facebook or Google SDK returning to the app after authentication. + +#if FIREBASEUI_ENABLE_FACEBOOK_AUTH if ([url.scheme hasPrefix:@"fb"]) { return [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation]; - } else if ([url.scheme hasPrefix:@"com.google"]) { + } +#endif + +#if FIREBASEUI_ENABLE_GOOGLE_AUTH + if ([url.scheme hasPrefix:@"com.google"]) { return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:sourceApplication annotation:annotation]; } +#endif + return YES; } diff --git a/FirebaseUI/Auth/Implementation/FirebaseLoginViewController.m b/FirebaseUI/Auth/Implementation/FirebaseLoginViewController.m index c0d319ad92b..5c3acabaf01 100644 --- a/FirebaseUI/Auth/Implementation/FirebaseLoginViewController.m +++ b/FirebaseUI/Auth/Implementation/FirebaseLoginViewController.m @@ -132,6 +132,7 @@ - (void)viewDidLoad { - (instancetype)enableProvider:(FAuthProvider)provider { switch (provider) { +#if FIREBASEUI_ENABLE_FACEBOOK_AUTH case FAuthProviderFacebook: if (!self.facebookAuthProvider) { self.facebookAuthProvider = @@ -139,7 +140,9 @@ - (instancetype)enableProvider:(FAuthProvider)provider { [_socialProviders addObject:self.facebookAuthProvider]; } break; +#endif +#if FIREBASEUI_ENABLE_GOOGLE_AUTH case FAuthProviderGoogle: if (!self.googleAuthProvider) { self.googleAuthProvider = [[FirebaseGoogleAuthProvider alloc] initWithRef:self.ref @@ -148,7 +151,9 @@ - (instancetype)enableProvider:(FAuthProvider)provider { [_socialProviders addObject:self.googleAuthProvider]; } break; +#endif +#if FIREBASEUI_ENABLE_TWITTER_AUTH case FAuthProviderTwitter: if (!self.twitterAuthProvider) { self.twitterAuthProvider = [[FirebaseTwitterAuthProvider alloc] initWithRef:self.ref @@ -157,13 +162,16 @@ - (instancetype)enableProvider:(FAuthProvider)provider { [_socialProviders addObject:self.twitterAuthProvider]; } break; +#endif +#if FIREBASEUI_ENABLE_PASSWORD_AUTH case FAuthProviderPassword: if (!self.passwordAuthProvider) { self.passwordAuthProvider = [[FirebasePasswordAuthProvider alloc] initWithRef:self.ref authDelegate:self]; } break; +#endif default: [NSException raise:NSInternalInconsistencyException @@ -181,22 +189,30 @@ - (void)loginButtonPressed:(id)button { if ([button isKindOfClass:[FirebaseLoginButton class]]) { FirebaseLoginButton *loginButton = (FirebaseLoginButton *)button; switch (loginButton.provider) { +#if FIREBASEUI_ENABLE_FACEBOOK_AUTH case FAuthProviderFacebook: [self.facebookAuthProvider login]; break; +#endif +#if FIREBASEUI_ENABLE_GOOGLE_AUTH case FAuthProviderGoogle: [self.googleAuthProvider login]; break; +#endif +#if FIREBASEUI_ENABLE_TWITTER_AUTH case FAuthProviderTwitter: [self.twitterAuthProvider login]; break; +#endif +#if FIREBASEUI_ENABLE_PASSWORD_AUTH case FAuthProviderPassword: [self.passwordAuthProvider loginWithEmail:self.emailTextField.text andPassword:self.passwordTextField.text]; break; +#endif default: [NSException raise:NSInternalInconsistencyException @@ -229,7 +245,6 @@ - (void)dismissViewControllerWithUser:(FAuthData *)user andError:(NSError *)erro #pragma mark - #pragma mark Firebase Auth Delegate methods - - (void)authProvider:(id)provider onLogin:(FAuthData *)authData { _selectedAuthProvider = provider; self.emailTextField.text = @""; @@ -272,7 +287,7 @@ - (void)onLogout { #pragma mark - #pragma mark Twitter Auth Delegate methods - +#if FIREBASEUI_ENABLE_TWITTER_AUTH - (void)createTwitterAccount { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.twitter.com/signup"]]; @@ -304,5 +319,6 @@ - (void)selectTwitterAccount:(NSArray *)accounts { [self presentViewController:accountSelectController animated:YES completion:nil]; } +#endif @end \ No newline at end of file diff --git a/README.md b/README.md index d0fd56610ba..14e0f76ab79 100644 --- a/README.md +++ b/README.md @@ -15,11 +15,20 @@ the following to your `Podfile`: pod 'FirebaseUI', '~> 0.3' # Pull in all Firebase UI features ``` -If you don't want to use all of FirebaseUI, there are two subspecs, `Core` and `Auth` which can selectively install subsets of the full feature set. +If you don't want to use all of FirebaseUI, there are multiple subspecs which can selectively install subsets of the full feature set: ``` -pod 'FirebaseUI/Core', '~> 0.3' # Only pull in the "Core" FirebaseUI features -pod 'FirebaseUI/Auth', '~> 0.3' # Only pull in the "Auth" FirebaseUI features +# Only pull in the "Core" FirebaseUI features +pod 'FirebaseUI/Core', '~> 0.3' + +# Pull in the "Auth" FirebaseUI features: Facebook, Google, Twitter, and Email/Password auth +pod 'FirebaseUI/Auth', '~> 0.3' + +# Selectively pull in Auth providers +pod 'FirebaseUI/Facebook', '~> 0.3.2' +pod 'FirebaseUI/Google', '~> 0.3.2' +pod 'FirebaseUI/Twitter', '~> 0.3.2' +pod 'FirebaseUI/Password', '~> 0.3.2' ``` If you're including FirebaseUI in a Swift project, make sure you also have: diff --git a/build.sh b/build.sh index f5ec8241c08..f8076939d0b 100755 --- a/build.sh +++ b/build.sh @@ -22,7 +22,7 @@ ${XCODEBUILD} \ IPHONEOS_DEPLOYMENT_TARGET=7.0 \ ONLY_ACTIVE_ARCH=NO \ ARCHS="armv7 armv7s arm64" \ - GCC_PREPROCESSOR_DEFINITIONS='${inherited} LOCAL_BUILD=1'\ + GCC_PREPROCESSOR_DEFINITIONS='${inherited} LOCAL_BUILD=1 FIREBASE_ENABLE_FACEBOOK_AUTH=1 FIREBASE_ENABLE_GOOGLE_AUTH=1 FIREBASE_ENABLE_TWITTER_AUTH=1 FIREBASE_ENABLE_PASSWORD_AUTH=1'\ build echo "===> Building simulator binary" @@ -38,7 +38,7 @@ ${XCODEBUILD} \ IPHONEOS_DEPLOYMENT_TARGET=7.0 \ ONLY_ACTIVE_ARCH=NO \ ARCHS="i386 x86_64" \ - GCC_PREPROCESSOR_DEFINITIONS='${inherited} LOCAL_BUILD=1'\ + GCC_PREPROCESSOR_DEFINITIONS='${inherited} LOCAL_BUILD=1 FIREBASE_ENABLE_FACEBOOK_AUTH=1 FIREBASE_ENABLE_GOOGLE_AUTH=1 FIREBASE_ENABLE_TWITTER_AUTH=1 FIREBASE_ENABLE_PASSWORD_AUTH=1'\ build echo "===> Using simulator binary as base project for headers and directory structure"