diff --git a/android/src/main/java/io/invertase/firebase/auth/RNFirebaseAuth.java b/android/src/main/java/io/invertase/firebase/auth/RNFirebaseAuth.java index cbfc8986..f4b89a90 100644 --- a/android/src/main/java/io/invertase/firebase/auth/RNFirebaseAuth.java +++ b/android/src/main/java/io/invertase/firebase/auth/RNFirebaseAuth.java @@ -1024,7 +1024,7 @@ class RNFirebaseAuth extends ReactContextBaseJavaModule { actionType = "PASSWORD_RESET"; break; case ActionCodeResult.SIGN_IN_WITH_EMAIL_LINK: - actionType = "EMAIL_SIGNING"; + actionType = "EMAIL_SIGNIN"; break; } diff --git a/bridge/ios/Podfile b/bridge/ios/Podfile index 33575460..e54784fd 100644 --- a/bridge/ios/Podfile +++ b/bridge/ios/Podfile @@ -20,7 +20,7 @@ target 'testing' do pod 'Firebase/AdMob' pod 'Firebase/Auth' - pod 'Firebase/Core', '~> 4.13.0' + pod 'Firebase/Core' pod 'Firebase/Crash' pod 'Firebase/Database' pod 'Firebase/Functions' diff --git a/bridge/ios/Podfile.lock b/bridge/ios/Podfile.lock index d8174502..21cdc817 100644 --- a/bridge/ios/Podfile.lock +++ b/bridge/ios/Podfile.lock @@ -8,86 +8,90 @@ PODS: - Crashlytics (3.10.1): - Fabric (~> 1.7.5) - Fabric (1.7.6) - - Firebase/AdMob (4.13.0): + - Firebase/AdMob (5.0.1): - Firebase/Core - Google-Mobile-Ads-SDK (= 7.30.0) - - Firebase/Auth (4.13.0): + - Firebase/Auth (5.0.1): + - Firebase/CoreOnly + - FirebaseAuth (= 5.0.0) + - Firebase/Core (5.0.1): + - Firebase/CoreOnly + - FirebaseAnalytics (= 5.0.0) + - Firebase/CoreOnly (5.0.1): + - FirebaseCore (= 5.0.1) + - Firebase/Crash (5.0.1): - Firebase/Core - - FirebaseAuth (= 4.6.1) - - Firebase/Core (4.13.0): - - FirebaseAnalytics (= 4.2.0) - - FirebaseCore (= 4.0.20) - - Firebase/Crash (4.13.0): + - FirebaseCrash (= 3.0.0) + - Firebase/Database (5.0.1): + - Firebase/CoreOnly + - FirebaseDatabase (= 5.0.0) + - Firebase/DynamicLinks (5.0.1): - Firebase/Core - - FirebaseCrash (= 2.0.2) - - Firebase/Database (4.13.0): + - FirebaseDynamicLinks (= 3.0.0) + - Firebase/Firestore (5.0.1): + - Firebase/CoreOnly + - FirebaseFirestore (= 0.12.1) + - Firebase/Functions (5.0.1): + - Firebase/CoreOnly + - FirebaseFunctions (= 2.0.0) + - Firebase/Invites (5.0.1): - Firebase/Core - - FirebaseDatabase (= 4.1.5) - - Firebase/DynamicLinks (4.13.0): + - FirebaseInvites (= 3.0.0) + - Firebase/Messaging (5.0.1): + - Firebase/CoreOnly + - FirebaseMessaging (= 3.0.0) + - Firebase/Performance (5.0.1): - Firebase/Core - - FirebaseDynamicLinks (= 2.3.2) - - Firebase/Firestore (4.13.0): + - FirebasePerformance (= 2.0.0) + - Firebase/RemoteConfig (5.0.1): - Firebase/Core - - FirebaseFirestore (= 0.11.0) - - Firebase/Functions (4.13.0): - - Firebase/Core - - FirebaseFunctions (= 1.0.0) - - Firebase/Invites (4.13.0): - - Firebase/Core - - FirebaseInvites (= 2.0.2) - - Firebase/Messaging (4.13.0): - - Firebase/Core - - FirebaseMessaging (= 2.2.0) - - Firebase/Performance (4.13.0): - - Firebase/Core - - FirebasePerformance (= 1.1.3) - - Firebase/RemoteConfig (4.13.0): - - Firebase/Core - - FirebaseRemoteConfig (= 2.1.3) - - Firebase/Storage (4.13.0): - - Firebase/Core - - FirebaseStorage (= 2.2.0) - - FirebaseABTesting (1.0.0): - - FirebaseCore (~> 4.0) - - Protobuf (~> 3.1) - - FirebaseAnalytics (4.2.0): - - FirebaseCore (~> 4.0) - - FirebaseInstanceID (~> 2.0) + - FirebaseRemoteConfig (= 3.0.0) + - Firebase/Storage (5.0.1): + - Firebase/CoreOnly + - FirebaseStorage (= 3.0.0) + - FirebaseABTesting (2.0.0): + - FirebaseCore (~> 5.0) + - Protobuf (~> 3.5) + - FirebaseAnalytics (5.0.0): + - FirebaseCore (~> 5.0) + - FirebaseInstanceID (~> 3.0) - GoogleToolboxForMac/NSData+zlib (~> 2.1) - nanopb (~> 0.3) - - FirebaseAuth (4.6.1): - - FirebaseAnalytics (~> 4.2) - - GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1) + - FirebaseAuth (5.0.0): + - FirebaseCore (~> 5.0) - GTMSessionFetcher/Core (~> 1.1) - - FirebaseCore (4.0.20): + - FirebaseCore (5.0.1): - GoogleToolboxForMac/NSData+zlib (~> 2.1) - - FirebaseCrash (2.0.2): - - FirebaseAnalytics (~> 4.0) - - FirebaseInstanceID (~> 2.0) + - FirebaseCrash (3.0.0): + - FirebaseAnalytics (~> 5.0) + - FirebaseInstanceID (~> 3.0) - GoogleToolboxForMac/Logger (~> 2.1) - GoogleToolboxForMac/NSData+zlib (~> 2.1) - - Protobuf (~> 3.1) - - FirebaseDatabase (4.1.5): - - FirebaseAnalytics (~> 4.1) - - FirebaseCore (~> 4.0) + - Protobuf (~> 3.5) + - FirebaseDatabase (5.0.0): + - FirebaseCore (~> 5.0) - leveldb-library (~> 1.18) - - FirebaseDynamicLinks (2.3.2): - - FirebaseAnalytics (~> 4.0) - - FirebaseFirestore (0.11.0): - - FirebaseAnalytics (~> 4.1) - - FirebaseCore (~> 4.0) + - FirebaseDynamicLinks (3.0.0): + - FirebaseAnalytics (~> 5.0) + - FirebaseFirestore (0.12.1): + - FirebaseCore (~> 5.0) + - FirebaseFirestore/abseil-cpp (= 0.12.1) - gRPC-ProtoRPC (~> 1.0) - leveldb-library (~> 1.18) - - Protobuf (~> 3.5) - - FirebaseFunctions (1.0.0): - - FirebaseAnalytics (~> 4.1) - - FirebaseCore (~> 4.0) + - Protobuf (~> 3.1) + - FirebaseFirestore/abseil-cpp (0.12.1): + - FirebaseCore (~> 5.0) + - gRPC-ProtoRPC (~> 1.0) + - leveldb-library (~> 1.18) + - Protobuf (~> 3.1) + - FirebaseFunctions (2.0.0): + - FirebaseCore (~> 5.0) - GTMSessionFetcher/Core (~> 1.1) - - FirebaseInstanceID (2.0.10): - - FirebaseCore (~> 4.0) - - FirebaseInvites (2.0.2): - - FirebaseAnalytics (~> 4.0) - - FirebaseDynamicLinks (~> 2.2) + - FirebaseInstanceID (3.0.0): + - FirebaseCore (~> 5.0) + - FirebaseInvites (3.0.0): + - FirebaseAnalytics (~> 5.0) + - FirebaseDynamicLinks (~> 3.0) - GoogleAPIClientForREST (~> 1.0) - GoogleSignIn (~> 4.1) - GoogleToolboxForMac/Logger (~> 2.1) @@ -98,36 +102,34 @@ PODS: - GTMOAuth2 (~> 1.0) - GTMSessionFetcher/Core (~> 1.1) - GTMSessionFetcher/Full (~> 1.1) + - Protobuf (~> 3.5) + - FirebaseMessaging (3.0.0): + - FirebaseCore (~> 5.0) + - FirebaseInstanceID (~> 3.0) + - GoogleToolboxForMac/Logger (~> 2.1) - Protobuf (~> 3.1) - - FirebaseMessaging (2.2.0): - - FirebaseAnalytics (~> 4.1) - - FirebaseCore (~> 4.0) - - FirebaseInstanceID (~> 2.0) - - GoogleToolboxForMac/Logger (~> 2.1) - - Protobuf (~> 3.5) - - FirebasePerformance (1.1.3): - - FirebaseAnalytics (~> 4.1) - - FirebaseInstanceID (~> 2.0) - - FirebaseSwizzlingUtilities/ISASwizzling (~> 1.0) - - FirebaseSwizzlingUtilities/MethodSwizzling (~> 1.0) + - FirebasePerformance (2.0.0): + - FirebaseAnalytics (~> 5.0) + - FirebaseInstanceID (~> 3.0) + - FirebaseSwizzlingUtilities/ISASwizzling (~> 2.0) + - FirebaseSwizzlingUtilities/MethodSwizzling (~> 2.0) - GoogleToolboxForMac/Logger (~> 2.1) - GoogleToolboxForMac/NSData+zlib (~> 2.1) - GTMSessionFetcher/Core (~> 1.1) - Protobuf (~> 3.5) - - FirebaseRemoteConfig (2.1.3): - - FirebaseABTesting (~> 1.0) - - FirebaseAnalytics (~> 4.1) - - FirebaseCore (~> 4.0) - - FirebaseInstanceID (~> 2.0) + - FirebaseRemoteConfig (3.0.0): + - FirebaseABTesting (~> 2.0) + - FirebaseAnalytics (~> 5.0) + - FirebaseCore (~> 5.0) + - FirebaseInstanceID (~> 3.0) - GoogleToolboxForMac/NSData+zlib (~> 2.1) - Protobuf (~> 3.5) - - FirebaseStorage (2.2.0): - - FirebaseAnalytics (~> 4.1) - - FirebaseCore (~> 4.0) + - FirebaseStorage (3.0.0): + - FirebaseCore (~> 5.0) - GTMSessionFetcher/Core (~> 1.1) - - FirebaseSwizzlingUtilities/ISASwizzling (1.0.1) - - FirebaseSwizzlingUtilities/MethodSwizzling (1.0.1): - - FirebaseCore (~> 4.0) + - FirebaseSwizzlingUtilities/ISASwizzling (2.0.0) + - FirebaseSwizzlingUtilities/MethodSwizzling (2.0.0): + - FirebaseCore (~> 5.0) - Google-Mobile-Ads-SDK (7.30.0) - GoogleAPIClientForREST (1.3.4): - GoogleAPIClientForREST/Core (= 1.3.4) @@ -218,7 +220,7 @@ DEPENDENCIES: - Fabric (~> 1.7.5) - Firebase/AdMob - Firebase/Auth - - Firebase/Core (~> 4.13.0) + - Firebase/Core - Firebase/Crash - Firebase/Database - Firebase/DynamicLinks @@ -248,23 +250,23 @@ SPEC CHECKSUMS: BoringSSL: 60dd24df4af296bf41d78e5841dbb95d75f88c0d Crashlytics: aee1a064cbbf99b32efa3f056a5f458d846bc8ff Fabric: f8d42c893bb187326a7968b62abe55c36a987a46 - Firebase: 5ec5e863d269d82d66b4bf56856726f8fb8f0fb3 - FirebaseABTesting: d07d0ee833b842d5153549e4c7e2e2cb1c23a3f9 - FirebaseAnalytics: 7ef69e76a5142f643aeb47c780e1cdce4e23632e - FirebaseAuth: bf22cacf22c60ab454bf2636f556d8892b10b53f - FirebaseCore: 90cb1c53d69b556f112a1bf72b5fcfaad7650790 - FirebaseCrash: a7d980468dc8aa2db9792493c3e02722d601f6ab - FirebaseDatabase: 5f0bc6134c5c237cf55f9e1249d406770a75eafd - FirebaseDynamicLinks: 38b68641d24e78d0277a9205d988ce22875d5a25 - FirebaseFirestore: e92a096ce80c7b4b905d4e9d41dbd944adc9d2a5 - FirebaseFunctions: 3745fada03bd706a9b5c0b9ae7b2d490fa594d21 - FirebaseInstanceID: 8d20d890d65c917f9f7d9950b6e10a760ad34321 - FirebaseInvites: ae15e0636f9eb42bdf5c1ef4c8f7bd4a88f9878b - FirebaseMessaging: 75cdb862e86c30e0913a2ff307e48d49357c5b73 - FirebasePerformance: 85bdc3f3d630deb629e85695fcab23364d68f5db - FirebaseRemoteConfig: 3e95fb7c072308492e85fa41d59d38b3d6fd2372 - FirebaseStorage: 0c223481c8f89ed300cf1239ddd2d9833622c65f - FirebaseSwizzlingUtilities: 6006111d30248d2321ffac0231e246663e704ea3 + Firebase: d6861c2059d8c32d1e6dd8932e22ada346d90a3a + FirebaseABTesting: 1f50b8d50f5e3469eea54e7463a7b7fe221d1f5e + FirebaseAnalytics: 19812b49fa5f283dd6b23edf8a14b5d477029ab8 + FirebaseAuth: acbeef02fe7c3a26624e309849f3fe30c84115af + FirebaseCore: cafc814b2d84fc8733f09e653041cc2165332ad7 + FirebaseCrash: 8900571fd763fd5bdda04522ec53da979456e3ce + FirebaseDatabase: 697eb53e5b4fe7cd4fa8756c1f82a9fca011345f + FirebaseDynamicLinks: c70e8ef2f267f13459db89b8816b13a06b2278d2 + FirebaseFirestore: f686b8e83f3cf8bbc37db6e98e01029a14f01f55 + FirebaseFunctions: 141da172b7491276d9da8715b8ca88f9e439ffb6 + FirebaseInstanceID: 83e0040351565df711a5db3d8ebe5ea21aca998a + FirebaseInvites: d7534f94d0610b892bac8ee0cf4218a14be46c28 + FirebaseMessaging: f2360a966ecfb0d14facf0fbdf306efc2df0ddbe + FirebasePerformance: 1ec6c40e5dad2543ca4c4f25d15168bde6322c2c + FirebaseRemoteConfig: 3c57e4644bd6976b671ae0b725cd709f198bd1f5 + FirebaseStorage: 7ca4bb7b58a25fa647b04f524033fc7cb7eb272b + FirebaseSwizzlingUtilities: 6c22677c50d0b6f5f0dc637c1233f13694a3003f Google-Mobile-Ads-SDK: 7404f68120ae8682afeb5af001fbf4aad731c78e GoogleAPIClientForREST: f7951c455df271bc6259b3ddb4073d0026475ccf GoogleSignIn: d9ef55b10f0aa401a5de2747f59b725e4b9732ac @@ -282,6 +284,6 @@ SPEC CHECKSUMS: RNFirebase: 2b25fd2e60269f26bb0a76c71dcc942b35a77df0 yoga: a23273df0088bf7f2bb7e5d7b00044ea57a2a54a -PODFILE CHECKSUM: 529baa60fa4c9087d932f99050e201c5e917469b +PODFILE CHECKSUM: 582ceaad051470812ad9203e13b5ea8ad20c78ac COCOAPODS: 1.4.0 diff --git a/ios/RNFirebase/analytics/RNFirebaseAnalytics.m b/ios/RNFirebase/analytics/RNFirebaseAnalytics.m index 2347bc16..f896b06d 100644 --- a/ios/RNFirebase/analytics/RNFirebaseAnalytics.m +++ b/ios/RNFirebase/analytics/RNFirebaseAnalytics.m @@ -2,7 +2,7 @@ #if __has_include() #import -#import +#import @implementation RNFirebaseAnalytics RCT_EXPORT_MODULE(); diff --git a/ios/RNFirebase/auth/RNFirebaseAuth.m b/ios/RNFirebase/auth/RNFirebaseAuth.m index 207c8df9..85b7c180 100644 --- a/ios/RNFirebase/auth/RNFirebaseAuth.m +++ b/ios/RNFirebase/auth/RNFirebaseAuth.m @@ -128,15 +128,7 @@ RCT_EXPORT_METHOD(signOut: RCT_EXPORT_METHOD(signInAnonymously:(NSString *) appDisplayName resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { - FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName]; - - [[FIRAuth authWithApp:firApp] signInAnonymouslyWithCompletion:^(FIRUser *user, NSError *error) { - if (error) { - [self promiseRejectAuthException:reject error:error]; - } else { - [self promiseWithUser:resolve rejecter:reject user:user]; - } - }]; + [self signInAnonymously:appDisplayName withData:false resolver:resolve rejecter:reject]; } /** @@ -149,13 +141,22 @@ RCT_EXPORT_METHOD(signInAnonymously:(NSString *) appDisplayName RCT_EXPORT_METHOD(signInAnonymouslyAndRetrieveData:(NSString *) appDisplayName resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { + [self signInAnonymously:appDisplayName withData:true resolver:resolve rejecter:reject]; +} + +-(void)signInAnonymously:(NSString *)appDisplayName + withData:(BOOL)withData + resolver:(RCTPromiseResolveBlock) resolve + rejecter:(RCTPromiseRejectBlock) reject { FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName]; - [[FIRAuth authWithApp:firApp] signInAnonymouslyAndRetrieveDataWithCompletion:^(FIRAuthDataResult *authResult, NSError *error) { + [[FIRAuth authWithApp:firApp] signInAnonymouslyWithCompletion:^(FIRAuthDataResult *authResult, NSError *error) { if (error) { [self promiseRejectAuthException:reject error:error]; - } else { + } else if (withData) { [self promiseWithAuthResult:resolve rejecter:reject authResult:authResult]; + } else { + [self promiseWithUser:resolve rejecter:reject user:authResult.user]; } }]; } @@ -174,15 +175,7 @@ RCT_EXPORT_METHOD(signInWithEmailAndPassword:(NSString *) appDisplayName pass:(NSString *) password resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { - FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName]; - - [[FIRAuth authWithApp:firApp] signInWithEmail:email password:password completion:^(FIRUser *user, NSError *error) { - if (error) { - [self promiseRejectAuthException:reject error:error]; - } else { - [self promiseWithUser:resolve rejecter:reject user:user]; - } - }]; + [self signInWithEmail:appDisplayName email:email password:password withData:false resolver:resolve rejecter:reject]; } /** @@ -196,16 +189,27 @@ RCT_EXPORT_METHOD(signInWithEmailAndPassword:(NSString *) appDisplayName */ RCT_EXPORT_METHOD(signInAndRetrieveDataWithEmailAndPassword:(NSString *) appDisplayName email:(NSString *) email - pass:(NSString *) password + password:(NSString *) password resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { + [self signInWithEmail:appDisplayName email:email password:password withData:true resolver:resolve rejecter:reject]; +} + +-(void)signInWithEmail:(NSString *)appDisplayName + email:(NSString *)email + password:(NSString *)password + withData:(BOOL)withData + resolver:(RCTPromiseResolveBlock) resolve + rejecter:(RCTPromiseRejectBlock) reject { FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName]; - [[FIRAuth authWithApp:firApp] signInAndRetrieveDataWithEmail:email password:password completion:^(FIRAuthDataResult *authResult, NSError *error) { + [[FIRAuth authWithApp:firApp] signInWithEmail:email password:password completion:^(FIRAuthDataResult *authResult, NSError *error) { if (error) { [self promiseRejectAuthException:reject error:error]; - } else { + } else if (withData) { [self promiseWithAuthResult:resolve rejecter:reject authResult:authResult]; + } else { + [self promiseWithUser:resolve rejecter:reject user:authResult.user]; } }]; } @@ -249,15 +253,7 @@ RCT_EXPORT_METHOD(createUserWithEmailAndPassword:(NSString *) appDisplayName pass:(NSString *) password resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { - FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName]; - - [[FIRAuth authWithApp:firApp] createUserWithEmail:email password:password completion:^(FIRUser *user, NSError *error) { - if (error) { - [self promiseRejectAuthException:reject error:error]; - } else { - [self promiseWithUser:resolve rejecter:reject user:user]; - } - }]; + [self createUserWithEmail:appDisplayName email:email password:password withData:false resolver:resolve rejecter:reject]; } /** @@ -271,18 +267,28 @@ RCT_EXPORT_METHOD(createUserWithEmailAndPassword:(NSString *) appDisplayName */ RCT_EXPORT_METHOD(createUserAndRetrieveDataWithEmailAndPassword:(NSString *) appDisplayName email:(NSString *) email - pass:(NSString *) password + password:(NSString *) password resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { + [self createUserWithEmail:appDisplayName email:email password:password withData:true resolver:resolve rejecter:reject]; +} + +-(void)createUserWithEmail:(NSString *)appDisplayName + email:(NSString *)email + password:(NSString *)password + withData:(BOOL)withData + resolver:(RCTPromiseResolveBlock) resolve + rejecter:(RCTPromiseRejectBlock) reject { FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName]; - [[FIRAuth authWithApp:firApp] createUserAndRetrieveDataWithEmail:email password:password - completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { - if (error) { - [self promiseRejectAuthException:reject error:error]; - } else { - [self promiseWithAuthResult:resolve rejecter:reject authResult:authResult]; - } + [[FIRAuth authWithApp:firApp] createUserWithEmail:email password:password completion:^(FIRAuthDataResult *authResult, NSError *error) { + if (error) { + [self promiseRejectAuthException:reject error:error]; + } else if (withData) { + [self promiseWithAuthResult:resolve rejecter:reject authResult:authResult]; + } else { + [self promiseWithUser:resolve rejecter:reject user:authResult.user]; + } }]; } @@ -536,21 +542,7 @@ RCT_EXPORT_METHOD(signInWithCredential:(NSString *) appDisplayName secret:(NSString *) authSecret resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { - FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName]; - - FIRAuthCredential *credential = [self getCredentialForProvider:provider token:authToken secret:authSecret]; - - if (credential == nil) { - return reject(@"auth/invalid-credential", @"The supplied auth credential is malformed, has expired or is not currently supported.", nil); - } - - [[FIRAuth authWithApp:firApp] signInWithCredential:credential completion:^(FIRUser *user, NSError *error) { - if (error) { - [self promiseRejectAuthException:reject error:error]; - } else { - [self promiseWithUser:resolve rejecter:reject user:user]; - } - }]; + [self signInWithCredential:appDisplayName provider:provider token:authToken secret:authSecret withData:false resolver:resolve rejecter:reject]; } /** @@ -569,6 +561,16 @@ RCT_EXPORT_METHOD(signInAndRetrieveDataWithCredential:(NSString *) appDisplayNam secret:(NSString *) authSecret resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { + [self signInWithCredential:appDisplayName provider:provider token:authToken secret:authSecret withData:true resolver:resolve rejecter:reject]; +} + +-(void)signInWithCredential:(NSString *)appDisplayName + provider:(NSString *) provider + token:(NSString *) authToken + secret:(NSString *) authSecret + withData:(BOOL)withData + resolver:(RCTPromiseResolveBlock) resolve + rejecter:(RCTPromiseRejectBlock) reject { FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName]; FIRAuthCredential *credential = [self getCredentialForProvider:provider token:authToken secret:authSecret]; @@ -580,8 +582,10 @@ RCT_EXPORT_METHOD(signInAndRetrieveDataWithCredential:(NSString *) appDisplayNam [[FIRAuth authWithApp:firApp] signInAndRetrieveDataWithCredential:credential completion:^(FIRAuthDataResult *authResult, NSError *error) { if (error) { [self promiseRejectAuthException:reject error:error]; - } else { + } else if (withData) { [self promiseWithAuthResult:resolve rejecter:reject authResult:authResult]; + } else { + [self promiseWithUser:resolve rejecter:reject user:authResult.user]; } }]; } @@ -764,15 +768,7 @@ RCT_EXPORT_METHOD(signInAndRetrieveDataWithCustomToken:(NSString *) appDisplayNa customToken:(NSString *) customToken resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { - FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName]; - - [[FIRAuth authWithApp:firApp] signInAndRetrieveDataWithCustomToken:customToken completion:^(FIRAuthDataResult *authResult, NSError *error) { - if (error) { - [self promiseRejectAuthException:reject error:error]; - } else { - [self promiseWithAuthResult:resolve rejecter:reject authResult:authResult]; - } - }]; + [self signInWithCustomToken:appDisplayName customToken:customToken withData:true resolver:resolve rejecter:reject]; } /** @@ -786,13 +782,23 @@ RCT_EXPORT_METHOD(signInWithCustomToken:(NSString *) appDisplayName customToken:(NSString *) customToken resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { + [self signInWithCustomToken:appDisplayName customToken:customToken withData:false resolver:resolve rejecter:reject]; +} + +-(void)signInWithCustomToken:(NSString *)appDisplayName + customToken:(NSString *) customToken + withData:(BOOL)withData + resolver:(RCTPromiseResolveBlock) resolve + rejecter:(RCTPromiseRejectBlock) reject { FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName]; - [[FIRAuth authWithApp:firApp] signInWithCustomToken:customToken completion:^(FIRUser *user, NSError *error) { + [[FIRAuth authWithApp:firApp] signInWithCustomToken:customToken completion:^(FIRAuthDataResult *authResult, NSError *error) { if (error) { [self promiseRejectAuthException:reject error:error]; + } else if (withData) { + [self promiseWithAuthResult:resolve rejecter:reject authResult:authResult]; } else { - [self promiseWithUser:resolve rejecter:reject user:user]; + [self promiseWithUser:resolve rejecter:reject user:authResult.user]; } }]; } @@ -868,11 +874,11 @@ RCT_EXPORT_METHOD(_confirmVerificationCode:(NSString *) appDisplayName NSString *verificationId = [defaults stringForKey:@"authVerificationID"]; FIRAuthCredential *credential = [[FIRPhoneAuthProvider provider] credentialWithVerificationID:verificationId verificationCode:verificationCode]; - [[FIRAuth authWithApp:firApp] signInWithCredential:credential completion:^(FIRUser *user, NSError *error) { + [[FIRAuth authWithApp:firApp] signInAndRetrieveDataWithCredential:credential completion:^(FIRAuthDataResult *authResult, NSError *error) { if (error) { [self promiseRejectAuthException:reject error:error]; } else { - [self promiseWithUser:resolve rejecter:reject user:user]; + [self promiseWithUser:resolve rejecter:reject user:authResult.user]; } }]; } @@ -893,26 +899,7 @@ RCT_EXPORT_METHOD(linkWithCredential:(NSString *) appDisplayName authSecret:(NSString *) authSecret resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { - FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName]; - FIRAuthCredential *credential = [self getCredentialForProvider:provider token:authToken secret:authSecret]; - - if (credential == nil) { - return reject(@"auth/invalid-credential", @"The supplied auth credential is malformed, has expired or is not currently supported.", nil); - } - - FIRUser *user = [FIRAuth authWithApp:firApp].currentUser; - - if (user) { - [user linkWithCredential:credential completion:^(FIRUser *_Nullable _user, NSError *_Nullable error) { - if (error) { - [self promiseRejectAuthException:reject error:error]; - } else { - [self promiseWithUser:resolve rejecter:reject user:_user]; - } - }]; - } else { - [self promiseNoUser:resolve rejecter:reject isError:YES]; - } + [self linkWithCredential:appDisplayName provider:provider authToken:authToken authSecret:authSecret withData:false resolver:resolve rejecter:reject]; } /** @@ -931,23 +918,35 @@ RCT_EXPORT_METHOD(linkAndRetrieveDataWithCredential:(NSString *) appDisplayName authSecret:(NSString *) authSecret resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { + [self linkWithCredential:appDisplayName provider:provider authToken:authToken authSecret:authSecret withData:true resolver:resolve rejecter:reject]; +} + +-(void)linkWithCredential:(NSString *)appDisplayName + provider:(NSString *)provider + authToken:(NSString *)authToken + authSecret:(NSString *)authSecret + withData:(BOOL)withData + resolver:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)reject { FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName]; FIRAuthCredential *credential = [self getCredentialForProvider:provider token:authToken secret:authSecret]; - + if (credential == nil) { return reject(@"auth/invalid-credential", @"The supplied auth credential is malformed, has expired or is not currently supported.", nil); } - + FIRUser *user = [FIRAuth authWithApp:firApp].currentUser; if (user) { [user linkAndRetrieveDataWithCredential:credential completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { - if (error) { - [self promiseRejectAuthException:reject error:error]; - } else { - [self promiseWithAuthResult:resolve rejecter:reject authResult:authResult]; - } - }]; + if (error) { + [self promiseRejectAuthException:reject error:error]; + } else if (withData) { + [self promiseWithAuthResult:resolve rejecter:reject authResult:authResult]; + } else { + [self promiseWithUser:resolve rejecter:reject user:authResult.user]; + } + }]; } else { [self promiseNoUser:resolve rejecter:reject isError:YES]; } @@ -1003,28 +1002,7 @@ RCT_EXPORT_METHOD(reauthenticateWithCredential:(NSString *) appDisplayName authSecret:(NSString *) authSecret resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { - FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName]; - - FIRAuthCredential *credential = [self getCredentialForProvider:provider token:authToken secret:authSecret]; - - if (credential == nil) { - return reject(@"auth/invalid-credential", @"The supplied auth credential is malformed, has expired or is not currently supported.", nil); - } - - FIRUser *user = [FIRAuth authWithApp:firApp].currentUser; - - if (user) { - [user reauthenticateWithCredential:credential completion:^(NSError *_Nullable error) { - if (error) { - [self promiseRejectAuthException:reject error:error]; - } else { - FIRUser *userAfterAuth = [FIRAuth authWithApp:firApp].currentUser; - [self promiseWithUser:resolve rejecter:reject user:userAfterAuth]; - } - }]; - } else { - [self promiseNoUser:resolve rejecter:reject isError:YES]; - } + [self reauthenticateWithCredential:appDisplayName provider:provider authToken:authToken authSecret:authSecret withData:false resolver:resolve rejecter:reject]; } /** @@ -1043,6 +1021,16 @@ RCT_EXPORT_METHOD(reauthenticateAndRetrieveDataWithCredential:(NSString *) appDi authSecret:(NSString *) authSecret resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { + [self reauthenticateWithCredential:appDisplayName provider:provider authToken:authToken authSecret:authSecret withData:true resolver:resolve rejecter:reject]; +} + +-(void)reauthenticateWithCredential:(NSString *) appDisplayName + provider:(NSString *) provider + authToken:(NSString *) authToken + authSecret:(NSString *) authSecret + withData:(BOOL) withData + resolver:(RCTPromiseResolveBlock) resolve + rejecter:(RCTPromiseRejectBlock) reject { FIRApp *firApp = [RNFirebaseUtil getApp:appDisplayName]; FIRAuthCredential *credential = [self getCredentialForProvider:provider token:authToken secret:authSecret]; @@ -1057,8 +1045,10 @@ RCT_EXPORT_METHOD(reauthenticateAndRetrieveDataWithCredential:(NSString *) appDi [user reauthenticateAndRetrieveDataWithCredential:credential completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { if (error) { [self promiseRejectAuthException:reject error:error]; - } else { + } else if (withData) { [self promiseWithAuthResult:resolve rejecter:reject authResult:authResult]; + } else { + [self promiseWithUser:resolve rejecter:reject user:authResult.user]; } }]; } else { diff --git a/ios/RNFirebase/firestore/RNFirebaseFirestore.m b/ios/RNFirebase/firestore/RNFirebaseFirestore.m index f391ec97..5ee87978 100644 --- a/ios/RNFirebase/firestore/RNFirebaseFirestore.m +++ b/ios/RNFirebase/firestore/RNFirebaseFirestore.m @@ -164,7 +164,7 @@ RCT_EXPORT_METHOD(transactionBegin:(NSString *)appDisplayName } else if ([type isEqualToString:@"set"]) { NSDictionary *options = command[@"options"]; if (options && options[@"merge"]) { - [transaction setData:data forDocument:ref options:[FIRSetOptions merge]]; + [transaction setData:data forDocument:ref merge:true]; } else { [transaction setData:data forDocument:ref]; } @@ -280,7 +280,7 @@ RCT_EXPORT_METHOD(documentBatch:(NSString *)appDisplayName } else if ([type isEqualToString:@"SET"]) { NSDictionary *options = write[@"options"]; if (options && options[@"merge"]) { - batch = [batch setData:data forDocument:ref options:[FIRSetOptions merge]]; + batch = [batch setData:data forDocument:ref merge:true]; } else { batch = [batch setData:data forDocument:ref]; } diff --git a/ios/RNFirebase/firestore/RNFirebaseFirestoreCollectionReference.m b/ios/RNFirebase/firestore/RNFirebaseFirestoreCollectionReference.m index 278619ff..333f403b 100644 --- a/ios/RNFirebase/firestore/RNFirebaseFirestoreCollectionReference.m +++ b/ios/RNFirebase/firestore/RNFirebaseFirestoreCollectionReference.m @@ -65,16 +65,14 @@ queryListenOptions:(NSDictionary *) queryListenOptions { } }; - FIRQueryListenOptions *options = [[FIRQueryListenOptions alloc] init]; + bool includeMetadataChanges; if (queryListenOptions && queryListenOptions[@"includeMetadataChanges"]) { - [options includeDocumentMetadataChanges:true]; - [options includeQueryMetadataChanges:true]; + includeMetadataChanges = true; } else { - [options includeDocumentMetadataChanges:false]; - [options includeQueryMetadataChanges:false]; + includeMetadataChanges = false; } - id listener = [_query addSnapshotListenerWithOptions:options listener:listenerBlock]; + id listener = [_query addSnapshotListenerWithIncludeMetadataChanges:includeMetadataChanges listener:listenerBlock]; _listeners[listenerId] = listener; } } diff --git a/ios/RNFirebase/firestore/RNFirebaseFirestoreDocumentReference.m b/ios/RNFirebase/firestore/RNFirebaseFirestoreDocumentReference.m index 49646047..e691689d 100644 --- a/ios/RNFirebase/firestore/RNFirebaseFirestoreDocumentReference.m +++ b/ios/RNFirebase/firestore/RNFirebaseFirestoreDocumentReference.m @@ -65,11 +65,13 @@ static NSMutableDictionary *_listeners; [self handleDocumentSnapshotEvent:listenerId documentSnapshot:snapshot]; } }; - FIRDocumentListenOptions *options = [[FIRDocumentListenOptions alloc] init]; + bool includeMetadataChanges; if (docListenOptions && docListenOptions[@"includeMetadataChanges"]) { - [options includeMetadataChanges:TRUE]; + includeMetadataChanges = true; + } else { + includeMetadataChanges = false; } - id listener = [_ref addSnapshotListenerWithOptions:options listener:listenerBlock]; + id listener = [_ref addSnapshotListenerWithIncludeMetadataChanges:includeMetadataChanges listener:listenerBlock]; _listeners[listenerId] = listener; } } @@ -80,7 +82,7 @@ static NSMutableDictionary *_listeners; rejecter:(RCTPromiseRejectBlock) reject { NSDictionary *dictionary = [RNFirebaseFirestoreDocumentReference parseJSMap:[RNFirebaseFirestore getFirestoreForApp:_appDisplayName] jsMap:data]; if (options && options[@"merge"]) { - [_ref setData:dictionary options:[FIRSetOptions merge] completion:^(NSError * _Nullable error) { + [_ref setData:dictionary merge:true completion:^(NSError * _Nullable error) { [RNFirebaseFirestoreDocumentReference handleWriteResponse:error resolver:resolve rejecter:reject]; }]; } else { diff --git a/ios/RNFirebase/storage/RNFirebaseStorage.m b/ios/RNFirebase/storage/RNFirebaseStorage.m index 9ffb263d..8048f7f9 100644 --- a/ios/RNFirebase/storage/RNFirebaseStorage.m +++ b/ios/RNFirebase/storage/RNFirebaseStorage.m @@ -118,7 +118,11 @@ RCT_EXPORT_METHOD(downloadFile:(NSString *) appDisplayName rejecter:(RCTPromiseRejectBlock) reject) { FIRStorageReference *fileRef = [self getReference:path appDisplayName:appDisplayName]; NSURL *localFile = [NSURL fileURLWithPath:localPath]; - FIRStorageDownloadTask *downloadTask = [fileRef writeToFile:localFile]; + + __block FIRStorageDownloadTask *downloadTask; + dispatch_sync(dispatch_get_main_queue(), ^{ + downloadTask = [fileRef writeToFile:localFile]; + }); // listen for state changes, errors, and completion of the download. [downloadTask observeStatus:FIRStorageTaskStatusResume handler:^(FIRStorageTaskSnapshot *snapshot) { @@ -293,13 +297,19 @@ RCT_EXPORT_METHOD(putFile:(NSString *) appDisplayName - (void)uploadFile:(NSString *)appDisplayName url:(NSURL *)url firmetadata:(FIRStorageMetadata *)firmetadata path:(NSString *)path resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject { FIRStorageReference *fileRef = [self getReference:path appDisplayName:appDisplayName]; - FIRStorageUploadTask *uploadTask = [fileRef putFile:url metadata:firmetadata]; + __block FIRStorageUploadTask *uploadTask; + dispatch_sync(dispatch_get_main_queue(), ^{ + uploadTask = [fileRef putFile:url metadata:firmetadata]; + }); [self addUploadObservers:appDisplayName uploadTask:uploadTask path:path resolver:resolve rejecter:reject]; } - (void)uploadData:(NSString *)appDisplayName data:(NSData *)data firmetadata:(FIRStorageMetadata *)firmetadata path:(NSString *)path resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject { FIRStorageReference *fileRef = [self getReference:path appDisplayName:appDisplayName]; - FIRStorageUploadTask *uploadTask = [fileRef putData:data metadata:firmetadata]; + __block FIRStorageUploadTask *uploadTask; + dispatch_sync(dispatch_get_main_queue(), ^{ + uploadTask = [fileRef putData:data metadata:firmetadata]; + }); [self addUploadObservers:appDisplayName uploadTask:uploadTask path:path resolver:resolve rejecter:reject]; } @@ -307,27 +317,31 @@ RCT_EXPORT_METHOD(putFile:(NSString *) appDisplayName // listen for state changes, errors, and completion of the upload. [uploadTask observeStatus:FIRStorageTaskStatusResume handler:^(FIRStorageTaskSnapshot *snapshot) { // upload resumed, also fires when the upload starts - NSDictionary *event = [self getUploadTaskAsDictionary:snapshot]; - [self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:event]; + [self getUploadTaskAsDictionary:snapshot handler:^(NSDictionary *event) { + [self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:event]; + }]; }]; [uploadTask observeStatus:FIRStorageTaskStatusPause handler:^(FIRStorageTaskSnapshot *snapshot) { // upload paused - NSDictionary *event = [self getUploadTaskAsDictionary:snapshot]; - [self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:event]; + [self getUploadTaskAsDictionary:snapshot handler:^(NSDictionary *event) { + [self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:event]; + }]; }]; [uploadTask observeStatus:FIRStorageTaskStatusProgress handler:^(FIRStorageTaskSnapshot *snapshot) { // upload reported progress - NSDictionary *event = [self getUploadTaskAsDictionary:snapshot]; - [self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:event]; + [self getUploadTaskAsDictionary:snapshot handler:^(NSDictionary *event) { + [self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:event]; + }]; }]; [uploadTask observeStatus:FIRStorageTaskStatusSuccess handler:^(FIRStorageTaskSnapshot *snapshot) { // upload completed successfully - NSDictionary *resp = [self getUploadTaskAsDictionary:snapshot]; - [self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:resp]; - [self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_UPLOAD_SUCCESS props:resp]; - resolve(resp); + [self getUploadTaskAsDictionary:snapshot handler:^(NSDictionary *event) { + [self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_STATE_CHANGED props:event]; + [self sendJSEvent:appDisplayName type:STORAGE_EVENT path:path title:STORAGE_UPLOAD_SUCCESS props:event]; + resolve(event); + }]; }]; [uploadTask observeStatus:FIRStorageTaskStatusFailure handler:^(FIRStorageTaskSnapshot *snapshot) { @@ -352,10 +366,14 @@ RCT_EXPORT_METHOD(putFile:(NSString *) appDisplayName return @{@"bytesTransferred": @(task.progress.completedUnitCount), @"ref": task.reference.fullPath, @"state": [self getTaskStatus:task.status], @"totalBytes": @(task.progress.totalUnitCount)}; } -- (NSDictionary *)getUploadTaskAsDictionary:(FIRStorageTaskSnapshot *)task { - NSString *downloadUrl = [task.metadata.downloadURL absoluteString]; - NSDictionary *metadata = [task.metadata dictionaryRepresentation]; - return @{@"bytesTransferred": @(task.progress.completedUnitCount), @"downloadURL": downloadUrl != nil ? downloadUrl : [NSNull null], @"metadata": metadata != nil ? metadata : [NSNull null], @"ref": task.reference.fullPath, @"state": [self getTaskStatus:task.status], @"totalBytes": @(task.progress.totalUnitCount)}; +- (void)getUploadTaskAsDictionary:(FIRStorageTaskSnapshot *)task + handler:(void(^)(NSDictionary *))handler { + [[task reference] downloadURLWithCompletion:^(NSURL * _Nullable URL, NSError * _Nullable error) { + NSString *downloadUrl = [URL absoluteString]; + NSDictionary *metadata = [task.metadata dictionaryRepresentation]; + NSDictionary *dictionary = @{@"bytesTransferred": @(task.progress.completedUnitCount), @"downloadURL": downloadUrl != nil ? downloadUrl : [NSNull null], @"metadata": metadata != nil ? metadata : [NSNull null], @"ref": task.reference.fullPath, @"state": [self getTaskStatus:task.status], @"totalBytes": @(task.progress.totalUnitCount)}; + handler(dictionary); + }]; } - (FIRStorageMetadata *)buildMetadataFromMap:(NSDictionary *)metadata { diff --git a/tests/ios/Podfile b/tests/ios/Podfile index e46efdb3..d9fce16f 100644 --- a/tests/ios/Podfile +++ b/tests/ios/Podfile @@ -21,7 +21,7 @@ target 'ReactNativeFirebaseDemo' do pod 'Firebase/AdMob' pod 'Firebase/Auth' - pod 'Firebase/Core', '~> 4.13.0' + pod 'Firebase/Core' pod 'Firebase/Crash' pod 'Firebase/Database' pod 'Firebase/DynamicLinks' diff --git a/tests/ios/Podfile.lock b/tests/ios/Podfile.lock index dc849001..a3777029 100644 --- a/tests/ios/Podfile.lock +++ b/tests/ios/Podfile.lock @@ -10,79 +10,84 @@ PODS: - Fabric (~> 1.7.5) - DoubleConversion (1.1.5) - Fabric (1.7.6) - - Firebase/AdMob (4.13.0): + - Firebase/AdMob (5.0.1): - Firebase/Core - Google-Mobile-Ads-SDK (= 7.30.0) - - Firebase/Auth (4.13.0): + - Firebase/Auth (5.0.1): + - Firebase/CoreOnly + - FirebaseAuth (= 5.0.0) + - Firebase/Core (5.0.1): + - Firebase/CoreOnly + - FirebaseAnalytics (= 5.0.0) + - Firebase/CoreOnly (5.0.1): + - FirebaseCore (= 5.0.1) + - Firebase/Crash (5.0.1): - Firebase/Core - - FirebaseAuth (= 4.6.1) - - Firebase/Core (4.13.0): - - FirebaseAnalytics (= 4.2.0) - - FirebaseCore (= 4.0.20) - - Firebase/Crash (4.13.0): + - FirebaseCrash (= 3.0.0) + - Firebase/Database (5.0.1): + - Firebase/CoreOnly + - FirebaseDatabase (= 5.0.0) + - Firebase/DynamicLinks (5.0.1): - Firebase/Core - - FirebaseCrash (= 2.0.2) - - Firebase/Database (4.13.0): + - FirebaseDynamicLinks (= 3.0.0) + - Firebase/Firestore (5.0.1): + - Firebase/CoreOnly + - FirebaseFirestore (= 0.12.1) + - Firebase/Invites (5.0.1): - Firebase/Core - - FirebaseDatabase (= 4.1.5) - - Firebase/DynamicLinks (4.13.0): + - FirebaseInvites (= 3.0.0) + - Firebase/Messaging (5.0.1): + - Firebase/CoreOnly + - FirebaseMessaging (= 3.0.0) + - Firebase/Performance (5.0.1): - Firebase/Core - - FirebaseDynamicLinks (= 2.3.2) - - Firebase/Firestore (4.13.0): + - FirebasePerformance (= 2.0.0) + - Firebase/RemoteConfig (5.0.1): - Firebase/Core - - FirebaseFirestore (= 0.11.0) - - Firebase/Invites (4.13.0): - - Firebase/Core - - FirebaseInvites (= 2.0.2) - - Firebase/Messaging (4.13.0): - - Firebase/Core - - FirebaseMessaging (= 2.2.0) - - Firebase/Performance (4.13.0): - - Firebase/Core - - FirebasePerformance (= 1.1.3) - - Firebase/RemoteConfig (4.13.0): - - Firebase/Core - - FirebaseRemoteConfig (= 2.1.3) - - Firebase/Storage (4.13.0): - - Firebase/Core - - FirebaseStorage (= 2.2.0) - - FirebaseABTesting (1.0.0): - - FirebaseCore (~> 4.0) - - Protobuf (~> 3.1) - - FirebaseAnalytics (4.2.0): - - FirebaseCore (~> 4.0) - - FirebaseInstanceID (~> 2.0) + - FirebaseRemoteConfig (= 3.0.0) + - Firebase/Storage (5.0.1): + - Firebase/CoreOnly + - FirebaseStorage (= 3.0.0) + - FirebaseABTesting (2.0.0): + - FirebaseCore (~> 5.0) + - Protobuf (~> 3.5) + - FirebaseAnalytics (5.0.0): + - FirebaseCore (~> 5.0) + - FirebaseInstanceID (~> 3.0) - GoogleToolboxForMac/NSData+zlib (~> 2.1) - nanopb (~> 0.3) - - FirebaseAuth (4.6.1): - - FirebaseAnalytics (~> 4.2) - - GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1) + - FirebaseAuth (5.0.0): + - FirebaseCore (~> 5.0) - GTMSessionFetcher/Core (~> 1.1) - - FirebaseCore (4.0.20): + - FirebaseCore (5.0.1): - GoogleToolboxForMac/NSData+zlib (~> 2.1) - - FirebaseCrash (2.0.2): - - FirebaseAnalytics (~> 4.0) - - FirebaseInstanceID (~> 2.0) + - FirebaseCrash (3.0.0): + - FirebaseAnalytics (~> 5.0) + - FirebaseInstanceID (~> 3.0) - GoogleToolboxForMac/Logger (~> 2.1) - GoogleToolboxForMac/NSData+zlib (~> 2.1) - - Protobuf (~> 3.1) - - FirebaseDatabase (4.1.5): - - FirebaseAnalytics (~> 4.1) - - FirebaseCore (~> 4.0) + - Protobuf (~> 3.5) + - FirebaseDatabase (5.0.0): + - FirebaseCore (~> 5.0) - leveldb-library (~> 1.18) - - FirebaseDynamicLinks (2.3.2): - - FirebaseAnalytics (~> 4.0) - - FirebaseFirestore (0.11.0): - - FirebaseAnalytics (~> 4.1) - - FirebaseCore (~> 4.0) + - FirebaseDynamicLinks (3.0.0): + - FirebaseAnalytics (~> 5.0) + - FirebaseFirestore (0.12.1): + - FirebaseCore (~> 5.0) + - FirebaseFirestore/abseil-cpp (= 0.12.1) - gRPC-ProtoRPC (~> 1.0) - leveldb-library (~> 1.18) - - Protobuf (~> 3.5) - - FirebaseInstanceID (2.0.10): - - FirebaseCore (~> 4.0) - - FirebaseInvites (2.0.2): - - FirebaseAnalytics (~> 4.0) - - FirebaseDynamicLinks (~> 2.2) + - Protobuf (~> 3.1) + - FirebaseFirestore/abseil-cpp (0.12.1): + - FirebaseCore (~> 5.0) + - gRPC-ProtoRPC (~> 1.0) + - leveldb-library (~> 1.18) + - Protobuf (~> 3.1) + - FirebaseInstanceID (3.0.0): + - FirebaseCore (~> 5.0) + - FirebaseInvites (3.0.0): + - FirebaseAnalytics (~> 5.0) + - FirebaseDynamicLinks (~> 3.0) - GoogleAPIClientForREST (~> 1.0) - GoogleSignIn (~> 4.1) - GoogleToolboxForMac/Logger (~> 2.1) @@ -93,36 +98,34 @@ PODS: - GTMOAuth2 (~> 1.0) - GTMSessionFetcher/Core (~> 1.1) - GTMSessionFetcher/Full (~> 1.1) + - Protobuf (~> 3.5) + - FirebaseMessaging (3.0.0): + - FirebaseCore (~> 5.0) + - FirebaseInstanceID (~> 3.0) + - GoogleToolboxForMac/Logger (~> 2.1) - Protobuf (~> 3.1) - - FirebaseMessaging (2.2.0): - - FirebaseAnalytics (~> 4.1) - - FirebaseCore (~> 4.0) - - FirebaseInstanceID (~> 2.0) - - GoogleToolboxForMac/Logger (~> 2.1) - - Protobuf (~> 3.5) - - FirebasePerformance (1.1.3): - - FirebaseAnalytics (~> 4.1) - - FirebaseInstanceID (~> 2.0) - - FirebaseSwizzlingUtilities/ISASwizzling (~> 1.0) - - FirebaseSwizzlingUtilities/MethodSwizzling (~> 1.0) + - FirebasePerformance (2.0.0): + - FirebaseAnalytics (~> 5.0) + - FirebaseInstanceID (~> 3.0) + - FirebaseSwizzlingUtilities/ISASwizzling (~> 2.0) + - FirebaseSwizzlingUtilities/MethodSwizzling (~> 2.0) - GoogleToolboxForMac/Logger (~> 2.1) - GoogleToolboxForMac/NSData+zlib (~> 2.1) - GTMSessionFetcher/Core (~> 1.1) - Protobuf (~> 3.5) - - FirebaseRemoteConfig (2.1.3): - - FirebaseABTesting (~> 1.0) - - FirebaseAnalytics (~> 4.1) - - FirebaseCore (~> 4.0) - - FirebaseInstanceID (~> 2.0) + - FirebaseRemoteConfig (3.0.0): + - FirebaseABTesting (~> 2.0) + - FirebaseAnalytics (~> 5.0) + - FirebaseCore (~> 5.0) + - FirebaseInstanceID (~> 3.0) - GoogleToolboxForMac/NSData+zlib (~> 2.1) - Protobuf (~> 3.5) - - FirebaseStorage (2.2.0): - - FirebaseAnalytics (~> 4.1) - - FirebaseCore (~> 4.0) + - FirebaseStorage (3.0.0): + - FirebaseCore (~> 5.0) - GTMSessionFetcher/Core (~> 1.1) - - FirebaseSwizzlingUtilities/ISASwizzling (1.0.1) - - FirebaseSwizzlingUtilities/MethodSwizzling (1.0.1): - - FirebaseCore (~> 4.0) + - FirebaseSwizzlingUtilities/ISASwizzling (2.0.0) + - FirebaseSwizzlingUtilities/MethodSwizzling (2.0.0): + - FirebaseCore (~> 5.0) - Folly (2016.09.26.00): - boost-for-react-native - DoubleConversion @@ -232,7 +235,7 @@ DEPENDENCIES: - Fabric (~> 1.7.5) - Firebase/AdMob - Firebase/Auth - - Firebase/Core (~> 4.13.0) + - Firebase/Core - Firebase/Crash - Firebase/Database - Firebase/DynamicLinks @@ -264,22 +267,22 @@ SPEC CHECKSUMS: Crashlytics: aee1a064cbbf99b32efa3f056a5f458d846bc8ff DoubleConversion: e22e0762848812a87afd67ffda3998d9ef29170c Fabric: f8d42c893bb187326a7968b62abe55c36a987a46 - Firebase: 5ec5e863d269d82d66b4bf56856726f8fb8f0fb3 - FirebaseABTesting: d07d0ee833b842d5153549e4c7e2e2cb1c23a3f9 - FirebaseAnalytics: 7ef69e76a5142f643aeb47c780e1cdce4e23632e - FirebaseAuth: bf22cacf22c60ab454bf2636f556d8892b10b53f - FirebaseCore: 90cb1c53d69b556f112a1bf72b5fcfaad7650790 - FirebaseCrash: a7d980468dc8aa2db9792493c3e02722d601f6ab - FirebaseDatabase: 5f0bc6134c5c237cf55f9e1249d406770a75eafd - FirebaseDynamicLinks: 38b68641d24e78d0277a9205d988ce22875d5a25 - FirebaseFirestore: e92a096ce80c7b4b905d4e9d41dbd944adc9d2a5 - FirebaseInstanceID: 8d20d890d65c917f9f7d9950b6e10a760ad34321 - FirebaseInvites: ae15e0636f9eb42bdf5c1ef4c8f7bd4a88f9878b - FirebaseMessaging: 75cdb862e86c30e0913a2ff307e48d49357c5b73 - FirebasePerformance: 85bdc3f3d630deb629e85695fcab23364d68f5db - FirebaseRemoteConfig: 3e95fb7c072308492e85fa41d59d38b3d6fd2372 - FirebaseStorage: 0c223481c8f89ed300cf1239ddd2d9833622c65f - FirebaseSwizzlingUtilities: 6006111d30248d2321ffac0231e246663e704ea3 + Firebase: d6861c2059d8c32d1e6dd8932e22ada346d90a3a + FirebaseABTesting: 1f50b8d50f5e3469eea54e7463a7b7fe221d1f5e + FirebaseAnalytics: 19812b49fa5f283dd6b23edf8a14b5d477029ab8 + FirebaseAuth: acbeef02fe7c3a26624e309849f3fe30c84115af + FirebaseCore: cafc814b2d84fc8733f09e653041cc2165332ad7 + FirebaseCrash: 8900571fd763fd5bdda04522ec53da979456e3ce + FirebaseDatabase: 697eb53e5b4fe7cd4fa8756c1f82a9fca011345f + FirebaseDynamicLinks: c70e8ef2f267f13459db89b8816b13a06b2278d2 + FirebaseFirestore: f686b8e83f3cf8bbc37db6e98e01029a14f01f55 + FirebaseInstanceID: 83e0040351565df711a5db3d8ebe5ea21aca998a + FirebaseInvites: d7534f94d0610b892bac8ee0cf4218a14be46c28 + FirebaseMessaging: f2360a966ecfb0d14facf0fbdf306efc2df0ddbe + FirebasePerformance: 1ec6c40e5dad2543ca4c4f25d15168bde6322c2c + FirebaseRemoteConfig: 3c57e4644bd6976b671ae0b725cd709f198bd1f5 + FirebaseStorage: 7ca4bb7b58a25fa647b04f524033fc7cb7eb272b + FirebaseSwizzlingUtilities: 6c22677c50d0b6f5f0dc637c1233f13694a3003f Folly: 211775e49d8da0ca658aebc8eab89d642935755c glog: 1de0bb937dccdc981596d3b5825ebfb765017ded Google-Mobile-Ads-SDK: 7404f68120ae8682afeb5af001fbf4aad731c78e @@ -299,6 +302,6 @@ SPEC CHECKSUMS: RNFirebase: 2b25fd2e60269f26bb0a76c71dcc942b35a77df0 yoga: 55da126afc384965b96bff46652464373b330add -PODFILE CHECKSUM: a735e7f8f0a5379462d2f204447550e182793a34 +PODFILE CHECKSUM: b776d6f4d08bbd51cda6d929b57bfaa8031e7ead COCOAPODS: 1.4.0