From 6b4e618d7a73b60008960d6ea92c072a45989159 Mon Sep 17 00:00:00 2001 From: _henrik Date: Sun, 4 Oct 2020 15:18:19 +0200 Subject: [PATCH 1/3] Access to FIRAuthErrorUserInfoUpdatedCredentialKey with Apple Sign In --- packages/auth/ios/RNFBAuth/RNFBAuthModule.m | 31 ++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/packages/auth/ios/RNFBAuth/RNFBAuthModule.m b/packages/auth/ios/RNFBAuth/RNFBAuthModule.m index 279084be54..cafbc8a4cb 100644 --- a/packages/auth/ios/RNFBAuth/RNFBAuthModule.m +++ b/packages/auth/ios/RNFBAuth/RNFBAuthModule.m @@ -50,6 +50,8 @@ static __strong NSMutableDictionary *authStateHandlers; static __strong NSMutableDictionary *idTokenHandlers; +// Used for caching credentials between method calls. +static __strong NSMutableDictionary *credentials; @implementation RNFBAuthModule #pragma mark - @@ -67,6 +69,7 @@ - (id)init { dispatch_once(&onceToken, ^{ authStateHandlers = [[NSMutableDictionary alloc] init]; idTokenHandlers = [[NSMutableDictionary alloc] init]; + credentials = [[NSMutableDictionary alloc] init]; }); return self; } @@ -88,6 +91,8 @@ - (void)invalidate { [[FIRAuth authWithApp:firebaseApp] removeIDTokenDidChangeListener:[idTokenHandlers valueForKey:key]]; } [idTokenHandlers removeAllObjects]; + + [credentials removeAllObjects]; } #pragma mark - @@ -922,7 +927,10 @@ - (void)invalidate { - (FIRAuthCredential *)getCredentialForProvider:(NSString *)provider token:(NSString *)authToken secret:(NSString *)authTokenSecret { FIRAuthCredential *credential; - if ([provider compare:@"twitter.com" options:NSCaseInsensitiveSearch] == NSOrderedSame) { + // First check if we cached an authToken + if (credentials[authToken] != nil && ![credentials[authToken] isEqual:[NSNull null]]) { + credential = credentials[authToken]; + } else if ([provider compare:@"twitter.com" options:NSCaseInsensitiveSearch] == NSOrderedSame) { credential = [FIRTwitterAuthProvider credentialWithToken:authToken secret:authTokenSecret]; } else if ([provider compare:@"facebook.com" options:NSCaseInsensitiveSearch] == NSOrderedSame) { credential = [FIRFacebookAuthProvider credentialWithAccessToken:authToken]; @@ -979,6 +987,7 @@ - (void)promiseRejectAuthException:(RCTPromiseRejectBlock)reject error:(NSError @"code": [jsError valueForKey:@"code"], @"message": [jsError valueForKey:@"message"], @"nativeErrorMessage": [jsError valueForKey:@"nativeErrorMessage"], + @"authCredential": [jsError valueForKey:@"authCredential"], }]; } @@ -1042,10 +1051,17 @@ - (NSDictionary *)getJSError:(NSError *)error { default:break; } + NSDictionary *authCredentialDict = nil; + if ([error userInfo][FIRAuthErrorUserInfoUpdatedCredentialKey] != nil) { + FIRAuthCredential *authCredential = [error userInfo][FIRAuthErrorUserInfoUpdatedCredentialKey]; + authCredentialDict = [self authCredentialToDict:authCredential]; + } + return @{ @"code": code, @"message": message, @"nativeErrorMessage": nativeErrorMessage, + @"authCredential" : authCredentialDict != nil ? (id) authCredentialDict : [NSNull null], }; } @@ -1183,6 +1199,19 @@ - (NSDictionary *)firebaseUserToDict:(FIRUser *)user { }; } +- (NSDictionary*) authCredentialToDict:(FIRAuthCredential *)authCredential { + NSString *authCredentialHash = [NSString stringWithFormat:@"%@", @([authCredential hash])]; + + // Temporarily store the non-serializable credential for later + credentials[authCredentialHash] = authCredential; + + return @{ + keyProviderId: authCredential.provider, + @"token": authCredentialHash, + @"secret": [NSNull null], + }; +} + - (FIRActionCodeSettings *)buildActionCodeSettings:(NSDictionary *)actionCodeSettings { FIRActionCodeSettings *settings = [[FIRActionCodeSettings alloc] init]; From cd4d0b7aee47b81ec3544d9629d12566277a3a8a Mon Sep 17 00:00:00 2001 From: _henrik Date: Wed, 7 Oct 2020 21:42:13 +0200 Subject: [PATCH 2/3] Updates type definition --- packages/auth/lib/index.d.ts | 11 ++ tests/ios/Podfile | 2 +- tests/ios/Podfile.lock | 149 ++++++++++---------- tests/ios/testing.xcodeproj/project.pbxproj | 38 ++++- 4 files changed, 124 insertions(+), 76 deletions(-) diff --git a/packages/auth/lib/index.d.ts b/packages/auth/lib/index.d.ts index 286111a020..8c317ed0d5 100644 --- a/packages/auth/lib/index.d.ts +++ b/packages/auth/lib/index.d.ts @@ -52,6 +52,16 @@ export namespace FirebaseAuthTypes { import FirebaseModule = ReactNativeFirebase.FirebaseModule; import NativeFirebaseError = ReactNativeFirebase.NativeFirebaseError; + export interface NativeFirebaseAuthError extends NativeFirebaseError { + userInfo: { + /** + * When trying to sign in or link with an AuthCredential which was already associated with an account, + * you might receive an updated credential (depending of provider) which you can use to recover from the error. + */ + authCredential: AuthCredential | null; + }; + } + /** * Interface that represents the credentials returned by an auth provider. Implementations specify the details * about each auth provider's credential requirements. @@ -980,6 +990,7 @@ export namespace FirebaseAuthTypes { * @error auth/wrong-password Thrown if the password used in a auth.EmailAuthProvider.credential is not correct or when the user associated with the email does not have a password. * @error auth/invalid-verification-code Thrown if the credential is a auth.PhoneAuthProvider.credential and the verification code of the credential is not valid. * @error auth/invalid-verification-id Thrown if the credential is a auth.PhoneAuthProvider.credential and the verification ID of the credential is not valid. + * @throws on iOS {@link auth.NativeFirebaseAuthError}, on Android {@link auth.NativeFirebaseError} * @param credential A created {@link auth.AuthCredential}. */ linkWithCredential(credential: AuthCredential): Promise; diff --git a/tests/ios/Podfile b/tests/ios/Podfile index 18f7a8d7c3..1279f82081 100644 --- a/tests/ios/Podfile +++ b/tests/ios/Podfile @@ -45,7 +45,7 @@ target 'testing' do pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' use_native_modules! - pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :branch => 'master' + pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '6.31.0' end post_install do |installer| diff --git a/tests/ios/Podfile.lock b/tests/ios/Podfile.lock index ef5b7d4e00..39874f4aa6 100644 --- a/tests/ios/Podfile.lock +++ b/tests/ios/Podfile.lock @@ -90,7 +90,7 @@ PODS: - GoogleUtilities/Network (~> 6.7) - "GoogleUtilities/NSData+zlib (~> 6.7)" - nanopb (~> 1.30906.0) - - FirebaseAuth (6.9.0): + - FirebaseAuth (6.9.2): - FirebaseCore (~> 6.10) - GoogleUtilities/AppDelegateSwizzler (~> 6.7) - GoogleUtilities/Environment (~> 6.7) @@ -99,8 +99,8 @@ PODS: - FirebaseCoreDiagnostics (~> 1.6) - GoogleUtilities/Environment (~> 6.7) - GoogleUtilities/Logger (~> 6.7) - - FirebaseCoreDiagnostics (1.6.0): - - GoogleDataTransport (~> 7.2) + - FirebaseCoreDiagnostics (1.7.0): + - GoogleDataTransport (~> 7.4) - GoogleUtilities/Environment (~> 6.7) - GoogleUtilities/Logger (~> 6.7) - nanopb (~> 1.30906.0) @@ -113,7 +113,7 @@ PODS: - FirebaseDatabase (6.5.0): - FirebaseCore (~> 6.10) - leveldb-library (~> 1.22) - - FirebaseDynamicLinks (4.3.0): + - FirebaseDynamicLinks (4.3.1): - FirebaseCore (~> 6.10) - FirebaseFirestore (1.17.0) - FirebaseFunctions (2.8.0): @@ -130,7 +130,7 @@ PODS: - GoogleUtilities/Environment (~> 6.7) - GoogleUtilities/UserDefaults (~> 6.7) - PromisesObjC (~> 1.2) - - FirebaseInstanceID (4.6.0): + - FirebaseInstanceID (4.7.0): - FirebaseCore (~> 6.10) - FirebaseInstallations (~> 1.6) - GoogleUtilities/Environment (~> 6.7) @@ -216,12 +216,12 @@ PODS: - DoubleConversion - glog - glog (0.3.5) - - Google-Mobile-Ads-SDK (7.64.0): + - Google-Mobile-Ads-SDK (7.66.0): - GoogleAppMeasurement (~> 6.0) - GoogleUserMessagingPlatform (~> 1.1) - - GoogleAPIClientForREST/Core (1.4.2): + - GoogleAPIClientForREST/Core (1.4.3): - GTMSessionFetcher (>= 1.1.7) - - GoogleAPIClientForREST/Vision (1.4.2): + - GoogleAPIClientForREST/Vision (1.4.3): - GoogleAPIClientForREST/Core - GTMSessionFetcher (>= 1.1.7) - GoogleAppMeasurement (6.8.0): @@ -230,7 +230,7 @@ PODS: - GoogleUtilities/Network (~> 6.7) - "GoogleUtilities/NSData+zlib (~> 6.7)" - nanopb (~> 1.30906.0) - - GoogleDataTransport (7.3.0): + - GoogleDataTransport (7.4.0): - nanopb (~> 1.30906.0) - GoogleToolboxForMac/DebugUtils (2.2.2): - GoogleToolboxForMac/Defines (= 2.2.2) @@ -244,7 +244,7 @@ PODS: - GoogleToolboxForMac/Defines (= 2.2.2) - "GoogleToolboxForMac/NSString+URLArguments (= 2.2.2)" - "GoogleToolboxForMac/NSString+URLArguments (2.2.2)" - - GoogleUserMessagingPlatform (1.1.0) + - GoogleUserMessagingPlatform (1.2.0) - GoogleUtilities/AppDelegateSwizzler (6.7.2): - GoogleUtilities/Environment - GoogleUtilities/Logger @@ -503,81 +503,82 @@ PODS: - React-cxxreact (= 0.62.2) - React-jsi (= 0.62.2) - ReactCommon/callinvoker (= 0.62.2) - - RNFBAdMob (7.5.1): + - RNFBAdMob (7.6.8): - Firebase/AdMob (= 6.31.0) - PersonalizedAdConsent (~> 1.0.4) - - React + - React-Core - RNFBApp - - RNFBAnalytics (7.4.2): + - RNFBAnalytics (7.6.7): - Firebase/Analytics (= 6.31.0) - - React + - React-Core - RNFBApp - - RNFBApp (8.3.1): + - RNFBApp (8.4.5): - Firebase/CoreOnly (= 6.31.0) - - React - - RNFBAuth (9.0.0): + - React-Core + - RNFBAuth (9.2.7): - Firebase/Auth (= 6.31.0) - - React + - React-Core - RNFBApp - - RNFBCrashlytics (8.3.4): + - RNFBCrashlytics (8.4.9): - Firebase/Crashlytics (= 6.31.0) - - React + - React-Core - RNFBApp - - RNFBDatabase (7.4.2): + - RNFBDatabase (7.5.11): - Firebase/Database (= 6.31.0) - - React + - React-Core - RNFBApp - - RNFBDynamicLinks (7.4.3): + - RNFBDynamicLinks (7.5.9): - Firebase/DynamicLinks (= 6.31.0) - - React + - GoogleUtilities/AppDelegateSwizzler + - React-Core - RNFBApp - - RNFBFirestore (7.5.3): + - RNFBFirestore (7.8.6): - Firebase/Firestore (= 6.31.0) - - React + - React-Core - RNFBApp - - RNFBFunctions (7.3.2): + - RNFBFunctions (7.4.8): - Firebase/Functions (= 6.31.0) - - React + - React-Core - RNFBApp - - RNFBIid (7.3.3): + - RNFBIid (7.4.8): - Firebase/CoreOnly (= 6.31.0) - FirebaseInstanceID - - React + - React-Core - RNFBApp - - RNFBInAppMessaging (7.3.3): + - RNFBInAppMessaging (7.5.6): - Firebase/InAppMessaging (= 6.31.0) - - React + - React-Core - RNFBApp - - RNFBMessaging (7.7.3): + - RNFBMessaging (7.8.11): - Firebase/Messaging (= 6.31.0) - - React + - React-Core - RNFBApp - - RNFBMLNaturalLanguage (7.3.2): + - RNFBMLNaturalLanguage (7.4.8): - Firebase/MLCommon (= 6.31.0) - Firebase/MLNaturalLanguage (= 6.31.0) - Firebase/MLNLLanguageID (= 6.31.0) - Firebase/MLNLSmartReply (= 6.31.0) - - React + - React-Core - RNFBApp - - RNFBMLVision (7.3.2): + - RNFBMLVision (7.4.8): - Firebase/MLVision (= 6.31.0) - Firebase/MLVisionBarcodeModel (= 6.31.0) - Firebase/MLVisionFaceModel (= 6.31.0) - Firebase/MLVisionLabelModel (= 6.31.0) - Firebase/MLVisionTextModel (= 6.31.0) - - React + - React-Core - RNFBApp - - RNFBPerf (7.3.2): + - RNFBPerf (7.4.8): - Firebase/Performance (= 6.31.0) - - React + - React-Core - RNFBApp - - RNFBRemoteConfig (8.1.4): + - RNFBRemoteConfig (9.0.10): - Firebase/RemoteConfig (= 6.31.0) - - React + - React-Core - RNFBApp - - RNFBStorage (7.3.3): + - RNFBStorage (7.4.8): - Firebase/Storage (= 6.31.0) - - React + - React-Core - RNFBApp - Yoga (1.14.0) @@ -585,7 +586,7 @@ DEPENDENCIES: - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`) - - FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, branch `master`) + - FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, tag `6.31.0`) - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - Jet (from `../node_modules/jet/ios`) @@ -681,8 +682,8 @@ EXTERNAL SOURCES: FBReactNativeSpec: :path: "../node_modules/react-native/Libraries/FBReactNativeSpec" FirebaseFirestore: - :branch: master :git: https://github.com/invertase/firestore-ios-sdk-frameworks.git + :tag: 6.31.0 Folly: :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec" glog: @@ -766,8 +767,8 @@ EXTERNAL SOURCES: CHECKOUT OPTIONS: FirebaseFirestore: - :commit: 640fa0a865e5338b5135a2f785b29c6030cb0f44 :git: https://github.com/invertase/firestore-ios-sdk-frameworks.git + :tag: 6.31.0 SPEC CHECKSUMS: boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c @@ -777,17 +778,17 @@ SPEC CHECKSUMS: Firebase: 87483fa19acfdf99244523f2389e931927b91457 FirebaseABTesting: 8a9d8df3acc2b43f4a22014ddf9f601bca6af699 FirebaseAnalytics: 0ca9aa2af7cc4dc92392b7a78bfc49feaa2eb60f - FirebaseAuth: 09f086fae98643f1ef235674cf3ae171ce26f5ba + FirebaseAuth: c92d49ada7948d1a23466e3db17bc4c2039dddc3 FirebaseCore: 6fb954e350af0885803d5aa49865d15d9a6b264c - FirebaseCoreDiagnostics: 7415bfb3883b3500c5a95c42b6ba66baae78f600 + FirebaseCoreDiagnostics: 770ac5958e1372ce67959ae4b4f31d8e127c3ac1 FirebaseCrashlytics: d2a350ec7fd4a332031b906b0802a7a73697630b FirebaseDatabase: d85b47213273708e48c972012b39105f76229588 - FirebaseDynamicLinks: bab0682388b983f9b0044a1fb555606ddb0e9b7e + FirebaseDynamicLinks: 6eac37d86910382eafb6315d952cc44c9e176094 FirebaseFirestore: 3e12ae0ccfb2d7c860c9b4ce60610c373bfe5a5f FirebaseFunctions: e0694e614a5e3300120a10d925e2cd3be60a9c81 FirebaseInAppMessaging: 9da48721c6ad1b5bdc2b1108f2d3d561eb2245ca FirebaseInstallations: 466c7b4d1f58fe16707693091da253726a731ed2 - FirebaseInstanceID: 84f5f5762f1bee94ca2254f693bbf5aec6666504 + FirebaseInstanceID: ac5a82fcd21f804dbfc8f318eff9e1d7a9916e49 FirebaseMessaging: 82d75b3770a78bbce470769a6980429608b4c407 FirebaseMLCommon: d218d75dd1c6c4e447f731ac22da56b88cb79431 FirebaseMLNaturalLanguage: 32cccde63dfdf82341d570b3d4b24e746303d4cd @@ -803,12 +804,12 @@ SPEC CHECKSUMS: FirebaseStorage: 33b92875a9b556824886cc7a65120c7d2cb3a8d8 Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51 glog: 1f3da668190260b06b429bb211bfbee5cd790c28 - Google-Mobile-Ads-SDK: aec52559ce73ddf1e6478d1904dd71a741f1bc61 - GoogleAPIClientForREST: 9f49df9fac7867b459187e687fed3066b2be049a + Google-Mobile-Ads-SDK: 7d7074359c040f5add4e0963bf860e14690060d0 + GoogleAPIClientForREST: e2d95a611ac06a90d143c93bfd8597719f8b0938 GoogleAppMeasurement: ecc30d0ab5b66d7d18e85ce1b8e2b345db60626d - GoogleDataTransport: e85fb700c9b027079ce182c3d08e12e0f9618bb4 + GoogleDataTransport: b7f406340a291370045a270c599e53c6fa6ec20f GoogleToolboxForMac: 800648f8b3127618c1b59c7f97684427630c5ea3 - GoogleUserMessagingPlatform: 9dc714d2e1f0aa727b9cc52d266dc1b155f4c3f2 + GoogleUserMessagingPlatform: c85530d930ba509583aa5a6d50a10aca22cf8502 GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3 GTMSessionFetcher: 6f5c8abbab8a9bce4bb3f057e317728ec6182b10 Jet: 84fd0e2e9d49457fc04bc79b5d8857737a01c507 @@ -836,25 +837,25 @@ SPEC CHECKSUMS: React-RCTText: fae545b10cfdb3d247c36c56f61a94cfd6dba41d React-RCTVibration: 4356114dbcba4ce66991096e51a66e61eda51256 ReactCommon: ed4e11d27609d571e7eee8b65548efc191116eb3 - RNFBAdMob: c767a4c30812979d51a1e350003722d3a811a550 - RNFBAnalytics: f7d6f25ac9f1d83759321d4c401857f3cbdccfaa - RNFBApp: 2b2da83e647ae2e8f306f5ee663e00e51583030d - RNFBAuth: dca65cff95aff7b75b7e3a955878e95d26fb52d3 - RNFBCrashlytics: fe658d261d9d20355cf7b5cc1c3c1738c6313e9c - RNFBDatabase: 42dcfb2ff23b768ccd6582dc4727969b5aefe350 - RNFBDynamicLinks: 72d17bb3981964021fafb06bdf55ad876c9aabd2 - RNFBFirestore: e5b6433bd60c51f7da292c4f93ba0de232cda8de - RNFBFunctions: 21344252a4a374605f8709723ccfe5094c3c8490 - RNFBIid: 535d5968b0b0d1ab567e7b9765a303063cd5cec0 - RNFBInAppMessaging: 994bd97d09c1aeeedea6f0a0fe006c1ddc8394d2 - RNFBMessaging: cd8904591c08a5fcce5ae58bd5924bc7febb3b44 - RNFBMLNaturalLanguage: 3ea14b22ea5cf48abb2ad18d9762103a16aa9b77 - RNFBMLVision: 94849d488fb3a8eebe8b9ff85e27a9195e31734b - RNFBPerf: d9340cffcd1021bf4feec8ee64c7c4a70a24e7f8 - RNFBRemoteConfig: 13c46ae1fe0d6ff60c2ba8da990ada925ef1a2c4 - RNFBStorage: 1e818e7c2d5b6514389d8a81931e251ac8006e4a + RNFBAdMob: 8105239a2dd3e1e328409b33fb7e1f7f169c0a56 + RNFBAnalytics: f034dc2bdfbd8ccef7c604b5cd00d68e4620829b + RNFBApp: 45ad08e0138095b964c6237cb35f1e6b1e3ad9ca + RNFBAuth: d23785e842b49ddeb5ce655d6d87a50a701361e6 + RNFBCrashlytics: 46149d0088f6afd1ce70f2b4adbc754871484523 + RNFBDatabase: 5d372d65303a26932d7a8f13c137513864ad61c2 + RNFBDynamicLinks: 9607e28754efa74c86b72d0bc16bfa15606ebb0e + RNFBFirestore: ce736de396a38f87eb5350fea3127d718446449a + RNFBFunctions: 76647de1f28448ce3fbe854c60871c859a5c60fa + RNFBIid: 480a4e88fee33bc512bba3f0b8e2c5940e5aa214 + RNFBInAppMessaging: cbc2f03ee742b1461413c4eb57079c74e21d6883 + RNFBMessaging: a9773fa794cd185a710a7c33c34481b8cb2d394d + RNFBMLNaturalLanguage: 34da64ba56998ff42419f3e1a59abb8db6f10813 + RNFBMLVision: eca56297eba2b22f6b5c99669204c7bab7558be8 + RNFBPerf: 6f9172724e67e094bcd33334ab1bda8fe81c508c + RNFBRemoteConfig: 4bd40833203d1d458663d12805c8a5ebdb6e2080 + RNFBStorage: b54e785a0ddecfc941eb69756a623a8b53535c92 Yoga: 3ebccbdd559724312790e7742142d062476b698e -PODFILE CHECKSUM: 51062414d4f230ae385561d26f3c88e6c8a3ce28 +PODFILE CHECKSUM: c5269a02c1a9245a1efde0968628aad28b78b992 -COCOAPODS: 1.10.0.beta.2 +COCOAPODS: 1.9.3 diff --git a/tests/ios/testing.xcodeproj/project.pbxproj b/tests/ios/testing.xcodeproj/project.pbxproj index 9b2dc67d3f..600313a482 100644 --- a/tests/ios/testing.xcodeproj/project.pbxproj +++ b/tests/ios/testing.xcodeproj/project.pbxproj @@ -156,6 +156,7 @@ buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "testing" */; buildPhases = ( 5F2F59C00A957B6F2EB00832 /* [CP] Check Pods Manifest.lock */, + F87DA57D875C44EE0F5E22B4 /* [CP] Prepare Artifacts */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, @@ -165,6 +166,7 @@ D60DF7E84815282F7C392B53 /* [CP] Copy Pods Resources */, 971DB9796AADE306A50F9133 /* [CP-User] [RNFB] Core Configuration */, E7DAD84A6BA0C83CFE863484 /* [CP-User] [RNFB] Crashlytics Configuration */, + 74D4292B4F9FD1130000B825 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -279,6 +281,23 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + 74D4292B4F9FD1130000B825 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-testing/Pods-testing-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-testing/Pods-testing-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-testing/Pods-testing-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 7D57265F10EEF7CD92D7973F /* Copy Detox Framework */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -301,7 +320,7 @@ name = "[CP-User] [RNFB] Core Configuration"; runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n _JSON_OUTPUT_BASE64=$(python -c 'import json,sys,base64;print(base64.b64encode(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"').read())['${_JSON_ROOT}'])))' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes usful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\n\n # config.admob_delay_app_measurement_init\n _ADMOB_DELAY_APP_MEASUREMENT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_delay_app_measurement_init\")\n if [[ $_ADMOB_DELAY_APP_MEASUREMENT == \"true\" ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADDelayAppMeasurementInit\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"YES\")\n fi\n\n # config.admob_ios_app_id\n _ADMOB_IOS_APP_ID=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_ios_app_id\")\n if [[ $_ADMOB_IOS_APP_ID ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADApplicationIdentifier\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_ADMOB_IOS_APP_ID\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally \n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n\n"; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n _JSON_OUTPUT_BASE64=$(python -c 'import json,sys,base64;print(base64.b64encode(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"').read())['${_JSON_ROOT}'])))' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\n\n # config.admob_delay_app_measurement_init\n _ADMOB_DELAY_APP_MEASUREMENT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_delay_app_measurement_init\")\n if [[ $_ADMOB_DELAY_APP_MEASUREMENT == \"true\" ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADDelayAppMeasurementInit\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"YES\")\n fi\n\n # config.admob_ios_app_id\n _ADMOB_IOS_APP_ID=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_ios_app_id\")\n if [[ $_ADMOB_IOS_APP_ID ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADApplicationIdentifier\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_ADMOB_IOS_APP_ID\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; }; D60DF7E84815282F7C392B53 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; @@ -330,6 +349,23 @@ shellPath = /bin/sh; shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; }; + F87DA57D875C44EE0F5E22B4 /* [CP] Prepare Artifacts */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-testing/Pods-testing-artifacts-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Prepare Artifacts"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-testing/Pods-testing-artifacts-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-testing/Pods-testing-artifacts.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ From 52b97be68541ccdfa8ce648fd50b279b352bf357 Mon Sep 17 00:00:00 2001 From: _henrik Date: Wed, 7 Oct 2020 22:21:21 +0200 Subject: [PATCH 3/3] Undo changes on test directory --- tests/ios/Podfile | 2 +- tests/ios/Podfile.lock | 149 ++++++++++---------- tests/ios/testing.xcodeproj/project.pbxproj | 38 +---- 3 files changed, 76 insertions(+), 113 deletions(-) diff --git a/tests/ios/Podfile b/tests/ios/Podfile index 1279f82081..18f7a8d7c3 100644 --- a/tests/ios/Podfile +++ b/tests/ios/Podfile @@ -45,7 +45,7 @@ target 'testing' do pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' use_native_modules! - pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '6.31.0' + pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :branch => 'master' end post_install do |installer| diff --git a/tests/ios/Podfile.lock b/tests/ios/Podfile.lock index 39874f4aa6..ef5b7d4e00 100644 --- a/tests/ios/Podfile.lock +++ b/tests/ios/Podfile.lock @@ -90,7 +90,7 @@ PODS: - GoogleUtilities/Network (~> 6.7) - "GoogleUtilities/NSData+zlib (~> 6.7)" - nanopb (~> 1.30906.0) - - FirebaseAuth (6.9.2): + - FirebaseAuth (6.9.0): - FirebaseCore (~> 6.10) - GoogleUtilities/AppDelegateSwizzler (~> 6.7) - GoogleUtilities/Environment (~> 6.7) @@ -99,8 +99,8 @@ PODS: - FirebaseCoreDiagnostics (~> 1.6) - GoogleUtilities/Environment (~> 6.7) - GoogleUtilities/Logger (~> 6.7) - - FirebaseCoreDiagnostics (1.7.0): - - GoogleDataTransport (~> 7.4) + - FirebaseCoreDiagnostics (1.6.0): + - GoogleDataTransport (~> 7.2) - GoogleUtilities/Environment (~> 6.7) - GoogleUtilities/Logger (~> 6.7) - nanopb (~> 1.30906.0) @@ -113,7 +113,7 @@ PODS: - FirebaseDatabase (6.5.0): - FirebaseCore (~> 6.10) - leveldb-library (~> 1.22) - - FirebaseDynamicLinks (4.3.1): + - FirebaseDynamicLinks (4.3.0): - FirebaseCore (~> 6.10) - FirebaseFirestore (1.17.0) - FirebaseFunctions (2.8.0): @@ -130,7 +130,7 @@ PODS: - GoogleUtilities/Environment (~> 6.7) - GoogleUtilities/UserDefaults (~> 6.7) - PromisesObjC (~> 1.2) - - FirebaseInstanceID (4.7.0): + - FirebaseInstanceID (4.6.0): - FirebaseCore (~> 6.10) - FirebaseInstallations (~> 1.6) - GoogleUtilities/Environment (~> 6.7) @@ -216,12 +216,12 @@ PODS: - DoubleConversion - glog - glog (0.3.5) - - Google-Mobile-Ads-SDK (7.66.0): + - Google-Mobile-Ads-SDK (7.64.0): - GoogleAppMeasurement (~> 6.0) - GoogleUserMessagingPlatform (~> 1.1) - - GoogleAPIClientForREST/Core (1.4.3): + - GoogleAPIClientForREST/Core (1.4.2): - GTMSessionFetcher (>= 1.1.7) - - GoogleAPIClientForREST/Vision (1.4.3): + - GoogleAPIClientForREST/Vision (1.4.2): - GoogleAPIClientForREST/Core - GTMSessionFetcher (>= 1.1.7) - GoogleAppMeasurement (6.8.0): @@ -230,7 +230,7 @@ PODS: - GoogleUtilities/Network (~> 6.7) - "GoogleUtilities/NSData+zlib (~> 6.7)" - nanopb (~> 1.30906.0) - - GoogleDataTransport (7.4.0): + - GoogleDataTransport (7.3.0): - nanopb (~> 1.30906.0) - GoogleToolboxForMac/DebugUtils (2.2.2): - GoogleToolboxForMac/Defines (= 2.2.2) @@ -244,7 +244,7 @@ PODS: - GoogleToolboxForMac/Defines (= 2.2.2) - "GoogleToolboxForMac/NSString+URLArguments (= 2.2.2)" - "GoogleToolboxForMac/NSString+URLArguments (2.2.2)" - - GoogleUserMessagingPlatform (1.2.0) + - GoogleUserMessagingPlatform (1.1.0) - GoogleUtilities/AppDelegateSwizzler (6.7.2): - GoogleUtilities/Environment - GoogleUtilities/Logger @@ -503,82 +503,81 @@ PODS: - React-cxxreact (= 0.62.2) - React-jsi (= 0.62.2) - ReactCommon/callinvoker (= 0.62.2) - - RNFBAdMob (7.6.8): + - RNFBAdMob (7.5.1): - Firebase/AdMob (= 6.31.0) - PersonalizedAdConsent (~> 1.0.4) - - React-Core + - React - RNFBApp - - RNFBAnalytics (7.6.7): + - RNFBAnalytics (7.4.2): - Firebase/Analytics (= 6.31.0) - - React-Core + - React - RNFBApp - - RNFBApp (8.4.5): + - RNFBApp (8.3.1): - Firebase/CoreOnly (= 6.31.0) - - React-Core - - RNFBAuth (9.2.7): + - React + - RNFBAuth (9.0.0): - Firebase/Auth (= 6.31.0) - - React-Core + - React - RNFBApp - - RNFBCrashlytics (8.4.9): + - RNFBCrashlytics (8.3.4): - Firebase/Crashlytics (= 6.31.0) - - React-Core + - React - RNFBApp - - RNFBDatabase (7.5.11): + - RNFBDatabase (7.4.2): - Firebase/Database (= 6.31.0) - - React-Core + - React - RNFBApp - - RNFBDynamicLinks (7.5.9): + - RNFBDynamicLinks (7.4.3): - Firebase/DynamicLinks (= 6.31.0) - - GoogleUtilities/AppDelegateSwizzler - - React-Core + - React - RNFBApp - - RNFBFirestore (7.8.6): + - RNFBFirestore (7.5.3): - Firebase/Firestore (= 6.31.0) - - React-Core + - React - RNFBApp - - RNFBFunctions (7.4.8): + - RNFBFunctions (7.3.2): - Firebase/Functions (= 6.31.0) - - React-Core + - React - RNFBApp - - RNFBIid (7.4.8): + - RNFBIid (7.3.3): - Firebase/CoreOnly (= 6.31.0) - FirebaseInstanceID - - React-Core + - React - RNFBApp - - RNFBInAppMessaging (7.5.6): + - RNFBInAppMessaging (7.3.3): - Firebase/InAppMessaging (= 6.31.0) - - React-Core + - React - RNFBApp - - RNFBMessaging (7.8.11): + - RNFBMessaging (7.7.3): - Firebase/Messaging (= 6.31.0) - - React-Core + - React - RNFBApp - - RNFBMLNaturalLanguage (7.4.8): + - RNFBMLNaturalLanguage (7.3.2): - Firebase/MLCommon (= 6.31.0) - Firebase/MLNaturalLanguage (= 6.31.0) - Firebase/MLNLLanguageID (= 6.31.0) - Firebase/MLNLSmartReply (= 6.31.0) - - React-Core + - React - RNFBApp - - RNFBMLVision (7.4.8): + - RNFBMLVision (7.3.2): - Firebase/MLVision (= 6.31.0) - Firebase/MLVisionBarcodeModel (= 6.31.0) - Firebase/MLVisionFaceModel (= 6.31.0) - Firebase/MLVisionLabelModel (= 6.31.0) - Firebase/MLVisionTextModel (= 6.31.0) - - React-Core + - React - RNFBApp - - RNFBPerf (7.4.8): + - RNFBPerf (7.3.2): - Firebase/Performance (= 6.31.0) - - React-Core + - React - RNFBApp - - RNFBRemoteConfig (9.0.10): + - RNFBRemoteConfig (8.1.4): - Firebase/RemoteConfig (= 6.31.0) - - React-Core + - React - RNFBApp - - RNFBStorage (7.4.8): + - RNFBStorage (7.3.3): - Firebase/Storage (= 6.31.0) - - React-Core + - React - RNFBApp - Yoga (1.14.0) @@ -586,7 +585,7 @@ DEPENDENCIES: - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`) - - FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, tag `6.31.0`) + - FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, branch `master`) - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - Jet (from `../node_modules/jet/ios`) @@ -682,8 +681,8 @@ EXTERNAL SOURCES: FBReactNativeSpec: :path: "../node_modules/react-native/Libraries/FBReactNativeSpec" FirebaseFirestore: + :branch: master :git: https://github.com/invertase/firestore-ios-sdk-frameworks.git - :tag: 6.31.0 Folly: :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec" glog: @@ -767,8 +766,8 @@ EXTERNAL SOURCES: CHECKOUT OPTIONS: FirebaseFirestore: + :commit: 640fa0a865e5338b5135a2f785b29c6030cb0f44 :git: https://github.com/invertase/firestore-ios-sdk-frameworks.git - :tag: 6.31.0 SPEC CHECKSUMS: boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c @@ -778,17 +777,17 @@ SPEC CHECKSUMS: Firebase: 87483fa19acfdf99244523f2389e931927b91457 FirebaseABTesting: 8a9d8df3acc2b43f4a22014ddf9f601bca6af699 FirebaseAnalytics: 0ca9aa2af7cc4dc92392b7a78bfc49feaa2eb60f - FirebaseAuth: c92d49ada7948d1a23466e3db17bc4c2039dddc3 + FirebaseAuth: 09f086fae98643f1ef235674cf3ae171ce26f5ba FirebaseCore: 6fb954e350af0885803d5aa49865d15d9a6b264c - FirebaseCoreDiagnostics: 770ac5958e1372ce67959ae4b4f31d8e127c3ac1 + FirebaseCoreDiagnostics: 7415bfb3883b3500c5a95c42b6ba66baae78f600 FirebaseCrashlytics: d2a350ec7fd4a332031b906b0802a7a73697630b FirebaseDatabase: d85b47213273708e48c972012b39105f76229588 - FirebaseDynamicLinks: 6eac37d86910382eafb6315d952cc44c9e176094 + FirebaseDynamicLinks: bab0682388b983f9b0044a1fb555606ddb0e9b7e FirebaseFirestore: 3e12ae0ccfb2d7c860c9b4ce60610c373bfe5a5f FirebaseFunctions: e0694e614a5e3300120a10d925e2cd3be60a9c81 FirebaseInAppMessaging: 9da48721c6ad1b5bdc2b1108f2d3d561eb2245ca FirebaseInstallations: 466c7b4d1f58fe16707693091da253726a731ed2 - FirebaseInstanceID: ac5a82fcd21f804dbfc8f318eff9e1d7a9916e49 + FirebaseInstanceID: 84f5f5762f1bee94ca2254f693bbf5aec6666504 FirebaseMessaging: 82d75b3770a78bbce470769a6980429608b4c407 FirebaseMLCommon: d218d75dd1c6c4e447f731ac22da56b88cb79431 FirebaseMLNaturalLanguage: 32cccde63dfdf82341d570b3d4b24e746303d4cd @@ -804,12 +803,12 @@ SPEC CHECKSUMS: FirebaseStorage: 33b92875a9b556824886cc7a65120c7d2cb3a8d8 Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51 glog: 1f3da668190260b06b429bb211bfbee5cd790c28 - Google-Mobile-Ads-SDK: 7d7074359c040f5add4e0963bf860e14690060d0 - GoogleAPIClientForREST: e2d95a611ac06a90d143c93bfd8597719f8b0938 + Google-Mobile-Ads-SDK: aec52559ce73ddf1e6478d1904dd71a741f1bc61 + GoogleAPIClientForREST: 9f49df9fac7867b459187e687fed3066b2be049a GoogleAppMeasurement: ecc30d0ab5b66d7d18e85ce1b8e2b345db60626d - GoogleDataTransport: b7f406340a291370045a270c599e53c6fa6ec20f + GoogleDataTransport: e85fb700c9b027079ce182c3d08e12e0f9618bb4 GoogleToolboxForMac: 800648f8b3127618c1b59c7f97684427630c5ea3 - GoogleUserMessagingPlatform: c85530d930ba509583aa5a6d50a10aca22cf8502 + GoogleUserMessagingPlatform: 9dc714d2e1f0aa727b9cc52d266dc1b155f4c3f2 GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3 GTMSessionFetcher: 6f5c8abbab8a9bce4bb3f057e317728ec6182b10 Jet: 84fd0e2e9d49457fc04bc79b5d8857737a01c507 @@ -837,25 +836,25 @@ SPEC CHECKSUMS: React-RCTText: fae545b10cfdb3d247c36c56f61a94cfd6dba41d React-RCTVibration: 4356114dbcba4ce66991096e51a66e61eda51256 ReactCommon: ed4e11d27609d571e7eee8b65548efc191116eb3 - RNFBAdMob: 8105239a2dd3e1e328409b33fb7e1f7f169c0a56 - RNFBAnalytics: f034dc2bdfbd8ccef7c604b5cd00d68e4620829b - RNFBApp: 45ad08e0138095b964c6237cb35f1e6b1e3ad9ca - RNFBAuth: d23785e842b49ddeb5ce655d6d87a50a701361e6 - RNFBCrashlytics: 46149d0088f6afd1ce70f2b4adbc754871484523 - RNFBDatabase: 5d372d65303a26932d7a8f13c137513864ad61c2 - RNFBDynamicLinks: 9607e28754efa74c86b72d0bc16bfa15606ebb0e - RNFBFirestore: ce736de396a38f87eb5350fea3127d718446449a - RNFBFunctions: 76647de1f28448ce3fbe854c60871c859a5c60fa - RNFBIid: 480a4e88fee33bc512bba3f0b8e2c5940e5aa214 - RNFBInAppMessaging: cbc2f03ee742b1461413c4eb57079c74e21d6883 - RNFBMessaging: a9773fa794cd185a710a7c33c34481b8cb2d394d - RNFBMLNaturalLanguage: 34da64ba56998ff42419f3e1a59abb8db6f10813 - RNFBMLVision: eca56297eba2b22f6b5c99669204c7bab7558be8 - RNFBPerf: 6f9172724e67e094bcd33334ab1bda8fe81c508c - RNFBRemoteConfig: 4bd40833203d1d458663d12805c8a5ebdb6e2080 - RNFBStorage: b54e785a0ddecfc941eb69756a623a8b53535c92 + RNFBAdMob: c767a4c30812979d51a1e350003722d3a811a550 + RNFBAnalytics: f7d6f25ac9f1d83759321d4c401857f3cbdccfaa + RNFBApp: 2b2da83e647ae2e8f306f5ee663e00e51583030d + RNFBAuth: dca65cff95aff7b75b7e3a955878e95d26fb52d3 + RNFBCrashlytics: fe658d261d9d20355cf7b5cc1c3c1738c6313e9c + RNFBDatabase: 42dcfb2ff23b768ccd6582dc4727969b5aefe350 + RNFBDynamicLinks: 72d17bb3981964021fafb06bdf55ad876c9aabd2 + RNFBFirestore: e5b6433bd60c51f7da292c4f93ba0de232cda8de + RNFBFunctions: 21344252a4a374605f8709723ccfe5094c3c8490 + RNFBIid: 535d5968b0b0d1ab567e7b9765a303063cd5cec0 + RNFBInAppMessaging: 994bd97d09c1aeeedea6f0a0fe006c1ddc8394d2 + RNFBMessaging: cd8904591c08a5fcce5ae58bd5924bc7febb3b44 + RNFBMLNaturalLanguage: 3ea14b22ea5cf48abb2ad18d9762103a16aa9b77 + RNFBMLVision: 94849d488fb3a8eebe8b9ff85e27a9195e31734b + RNFBPerf: d9340cffcd1021bf4feec8ee64c7c4a70a24e7f8 + RNFBRemoteConfig: 13c46ae1fe0d6ff60c2ba8da990ada925ef1a2c4 + RNFBStorage: 1e818e7c2d5b6514389d8a81931e251ac8006e4a Yoga: 3ebccbdd559724312790e7742142d062476b698e -PODFILE CHECKSUM: c5269a02c1a9245a1efde0968628aad28b78b992 +PODFILE CHECKSUM: 51062414d4f230ae385561d26f3c88e6c8a3ce28 -COCOAPODS: 1.9.3 +COCOAPODS: 1.10.0.beta.2 diff --git a/tests/ios/testing.xcodeproj/project.pbxproj b/tests/ios/testing.xcodeproj/project.pbxproj index 600313a482..9b2dc67d3f 100644 --- a/tests/ios/testing.xcodeproj/project.pbxproj +++ b/tests/ios/testing.xcodeproj/project.pbxproj @@ -156,7 +156,6 @@ buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "testing" */; buildPhases = ( 5F2F59C00A957B6F2EB00832 /* [CP] Check Pods Manifest.lock */, - F87DA57D875C44EE0F5E22B4 /* [CP] Prepare Artifacts */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, @@ -166,7 +165,6 @@ D60DF7E84815282F7C392B53 /* [CP] Copy Pods Resources */, 971DB9796AADE306A50F9133 /* [CP-User] [RNFB] Core Configuration */, E7DAD84A6BA0C83CFE863484 /* [CP-User] [RNFB] Crashlytics Configuration */, - 74D4292B4F9FD1130000B825 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -281,23 +279,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 74D4292B4F9FD1130000B825 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-testing/Pods-testing-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-testing/Pods-testing-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-testing/Pods-testing-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; 7D57265F10EEF7CD92D7973F /* Copy Detox Framework */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -320,7 +301,7 @@ name = "[CP-User] [RNFB] Core Configuration"; runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n _JSON_OUTPUT_BASE64=$(python -c 'import json,sys,base64;print(base64.b64encode(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"').read())['${_JSON_ROOT}'])))' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\n\n # config.admob_delay_app_measurement_init\n _ADMOB_DELAY_APP_MEASUREMENT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_delay_app_measurement_init\")\n if [[ $_ADMOB_DELAY_APP_MEASUREMENT == \"true\" ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADDelayAppMeasurementInit\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"YES\")\n fi\n\n # config.admob_ios_app_id\n _ADMOB_IOS_APP_ID=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_ios_app_id\")\n if [[ $_ADMOB_IOS_APP_ID ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADApplicationIdentifier\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_ADMOB_IOS_APP_ID\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n _JSON_OUTPUT_BASE64=$(python -c 'import json,sys,base64;print(base64.b64encode(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"').read())['${_JSON_ROOT}'])))' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes usful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\n\n # config.admob_delay_app_measurement_init\n _ADMOB_DELAY_APP_MEASUREMENT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_delay_app_measurement_init\")\n if [[ $_ADMOB_DELAY_APP_MEASUREMENT == \"true\" ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADDelayAppMeasurementInit\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"YES\")\n fi\n\n # config.admob_ios_app_id\n _ADMOB_IOS_APP_ID=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_ios_app_id\")\n if [[ $_ADMOB_IOS_APP_ID ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADApplicationIdentifier\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_ADMOB_IOS_APP_ID\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally \n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n\n"; }; D60DF7E84815282F7C392B53 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; @@ -349,23 +330,6 @@ shellPath = /bin/sh; shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; }; - F87DA57D875C44EE0F5E22B4 /* [CP] Prepare Artifacts */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-testing/Pods-testing-artifacts-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Prepare Artifacts"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-testing/Pods-testing-artifacts-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-testing/Pods-testing-artifacts.sh\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */