diff --git a/packages/analytics/RNFBAnalytics.podspec b/packages/analytics/RNFBAnalytics.podspec index 03884638bf..f3a7e7dd8d 100644 --- a/packages/analytics/RNFBAnalytics.podspec +++ b/packages/analytics/RNFBAnalytics.podspec @@ -10,6 +10,7 @@ if coreVersionDetected != coreVersionRequired end firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget'] firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget'] +firebase_tvos_target = appPackage['sdkVersions']['ios']['tvosTarget'] Pod::Spec.new do |s| s.name = "RNFBAnalytics" @@ -25,6 +26,7 @@ Pod::Spec.new do |s| s.social_media_url = 'http://twitter.com/invertaseio' s.ios.deployment_target = firebase_ios_target s.macos.deployment_target = firebase_macos_target + s.tvos.deployment_target = firebase_tvos_target s.source_files = 'ios/**/*.{h,m}' # React Native dependencies diff --git a/packages/app-check/RNFBAppCheck.podspec b/packages/app-check/RNFBAppCheck.podspec index fedf148cf4..e573382124 100644 --- a/packages/app-check/RNFBAppCheck.podspec +++ b/packages/app-check/RNFBAppCheck.podspec @@ -10,6 +10,7 @@ if coreVersionDetected != coreVersionRequired end firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget'] firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget'] +firebase_tvos_target = appPackage['sdkVersions']['ios']['tvosTarget'] Pod::Spec.new do |s| s.name = "RNFBAppCheck" @@ -25,6 +26,7 @@ Pod::Spec.new do |s| s.social_media_url = 'http://twitter.com/invertaseio' s.ios.deployment_target = firebase_ios_target s.macos.deployment_target = firebase_macos_target + s.tvos.deployment_target = firebase_tvos_target s.source_files = 'ios/**/*.{h,m}' # React Native dependencies diff --git a/packages/app-check/ios/RNFBAppCheck/RNFBAppCheckProvider.m b/packages/app-check/ios/RNFBAppCheck/RNFBAppCheckProvider.m index 6722366e4c..07c3ace612 100644 --- a/packages/app-check/ios/RNFBAppCheck/RNFBAppCheckProvider.m +++ b/packages/app-check/ios/RNFBAppCheck/RNFBAppCheckProvider.m @@ -55,18 +55,19 @@ - (void)configure:(FIRApp *)app } if ([providerName isEqualToString:@"appAttest"]) { - if (@available(iOS 14.0, macCatalyst 14.0, tvOS 15.0, watchOS 9.0, *)) { + if (@available(iOS 14.0, macOS 11.0, macCatalyst 14.0, tvOS 15.0, watchOS 9.0, *)) { self.delegateProvider = [[FIRAppAttestProvider alloc] initWithApp:app]; } else { // This is not a valid configuration. - DLog(@"AppAttest unavailable: it requires iOS14+, macCatalyst14+ or tvOS15+. Installing " + DLog(@"AppAttest unavailable: it requires iOS14+, macOS 11+, macCatalyst14+ or tvOS15+. " + @"Installing " @"debug provider to guarantee invalid tokens in this invalid configuration."); self.delegateProvider = [[FIRAppCheckDebugProvider alloc] initWithApp:app]; } } if ([providerName isEqualToString:@"appAttestWithDeviceCheckFallback"]) { - if (@available(iOS 14.0, *)) { + if (@available(iOS 14.0, macOS 11.0, macCatalyst 14.0, tvOS 15.0, watchOS 9.0, *)) { self.delegateProvider = [[FIRAppAttestProvider alloc] initWithApp:app]; } else { self.delegateProvider = [[FIRDeviceCheckProvider alloc] initWithApp:app]; diff --git a/packages/app/RNFBApp.podspec b/packages/app/RNFBApp.podspec index 725c0a03c1..c380d1380b 100644 --- a/packages/app/RNFBApp.podspec +++ b/packages/app/RNFBApp.podspec @@ -4,6 +4,7 @@ package = JSON.parse(File.read(File.join(__dir__, 'package.json'))) firebase_sdk_version = package['sdkVersions']['ios']['firebase'] firebase_ios_target = package['sdkVersions']['ios']['iosTarget'] firebase_macos_target = package['sdkVersions']['ios']['macosTarget'] +firebase_tvos_target = package['sdkVersions']['ios']['tvosTarget'] Pod::Spec.new do |s| s.name = "RNFBApp" @@ -19,6 +20,7 @@ Pod::Spec.new do |s| s.social_media_url = 'http://twitter.com/invertaseio' s.ios.deployment_target = firebase_ios_target s.macos.deployment_target = firebase_macos_target + s.tvos.deployment_target = firebase_tvos_target s.cocoapods_version = '>= 1.12.0' s.source_files = "ios/**/*.{h,m}" diff --git a/packages/app/package.json b/packages/app/package.json index 9f416f10c8..1fdd88846a 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -76,7 +76,8 @@ "ios": { "firebase": "11.4.0", "iosTarget": "13.0", - "macosTarget": "10.15" + "macosTarget": "10.15", + "tvosTarget": "13.0" }, "android": { "minSdk": 21, diff --git a/packages/auth/RNFBAuth.podspec b/packages/auth/RNFBAuth.podspec index e9c3b8c141..31b054b1b6 100644 --- a/packages/auth/RNFBAuth.podspec +++ b/packages/auth/RNFBAuth.podspec @@ -10,6 +10,7 @@ if coreVersionDetected != coreVersionRequired end firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget'] firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget'] +firebase_tvos_target = appPackage['sdkVersions']['ios']['tvosTarget'] Pod::Spec.new do |s| s.name = "RNFBAuth" @@ -25,6 +26,7 @@ Pod::Spec.new do |s| s.social_media_url = 'http://twitter.com/invertaseio' s.ios.deployment_target = firebase_ios_target s.macos.deployment_target = firebase_macos_target + s.tvos.deployment_target = firebase_tvos_target s.source_files = 'ios/**/*.{h,m}' # React Native dependencies diff --git a/packages/auth/ios/RNFBAuth/RNFBAuthModule.m b/packages/auth/ios/RNFBAuth/RNFBAuthModule.m index 7425a1c021..54068faa68 100644 --- a/packages/auth/ios/RNFBAuth/RNFBAuthModule.m +++ b/packages/auth/ios/RNFBAuth/RNFBAuthModule.m @@ -55,8 +55,10 @@ static __strong NSMutableDictionary *emulatorConfigs; // Used for caching credentials between method calls. static __strong NSMutableDictionary *credentials; +#if TARGET_OS_IOS static __strong NSMutableDictionary *cachedResolver; static __strong NSMutableDictionary *cachedSessions; +#endif @implementation RNFBAuthModule #pragma mark - @@ -76,8 +78,10 @@ - (id)init { idTokenHandlers = [[NSMutableDictionary alloc] init]; emulatorConfigs = [[NSMutableDictionary alloc] init]; credentials = [[NSMutableDictionary alloc] init]; +#if TARGET_OS_IOS cachedResolver = [[NSMutableDictionary alloc] init]; cachedSessions = [[NSMutableDictionary alloc] init]; +#endif }); return self; } @@ -103,8 +107,10 @@ - (void)invalidate { [idTokenHandlers removeAllObjects]; [credentials removeAllObjects]; +#if TARGET_OS_IOS [cachedResolver removeAllObjects]; [cachedSessions removeAllObjects]; +#endif } #pragma mark - @@ -415,6 +421,7 @@ - (void)invalidate { } } +#if TARGET_OS_IOS RCT_EXPORT_METHOD(updatePhoneNumber : (FIRApp *)firebaseApp : (NSString *)provider @@ -455,6 +462,7 @@ - (void)invalidate { [self promiseNoUser:resolve rejecter:reject isError:YES]; } } +#endif RCT_EXPORT_METHOD(updateProfile : (FIRApp *)firebaseApp @@ -617,6 +625,7 @@ - (void)invalidate { [builder setCustomParameters:provider[@"customParameters"]]; } +#if TARGET_OS_IOS [builder getCredentialWithUIDelegate:nil completion:^(FIRAuthCredential *_Nullable credential, NSError *_Nullable error) { @@ -647,6 +656,7 @@ - (void)invalidate { }]; } }]; +#endif } RCT_EXPORT_METHOD(confirmPasswordReset @@ -817,6 +827,7 @@ - (void)invalidate { }]; } +#if TARGET_OS_IOS RCT_EXPORT_METHOD(signInWithPhoneNumber : (FIRApp *)firebaseApp : (NSString *)phoneNumber @@ -1053,6 +1064,7 @@ - (void)invalidate { } }]; } +#endif RCT_EXPORT_METHOD(linkWithCredential : (FIRApp *)firebaseApp @@ -1122,6 +1134,7 @@ - (void)invalidate { [builder setCustomParameters:provider[@"parameters"]]; } +#if TARGET_OS_IOS [builder getCredentialWithUIDelegate:nil completion:^(FIRAuthCredential *_Nullable credential, NSError *_Nullable error) { @@ -1151,6 +1164,7 @@ - (void)invalidate { }]; } }]; +#endif } RCT_EXPORT_METHOD(unlink @@ -1248,7 +1262,7 @@ - (void)invalidate { if (provider[@"parameters"]) { [builder setCustomParameters:provider[@"parameters"]]; } - +#if TARGET_OS_IOS [builder getCredentialWithUIDelegate:nil completion:^(FIRAuthCredential *_Nullable credential, NSError *_Nullable error) { @@ -1279,6 +1293,7 @@ - (void)invalidate { }]; } }]; +#endif } RCT_EXPORT_METHOD(fetchSignInMethodsForEmail @@ -1375,10 +1390,12 @@ - (FIRAuthCredential *)getCredentialForProvider:(NSString *)provider } else if ([provider compare:@"github.com" options:NSCaseInsensitiveSearch] == NSOrderedSame) { credential = [FIRGitHubAuthProvider credentialWithToken:authToken]; } else if ([provider compare:@"phone" options:NSCaseInsensitiveSearch] == NSOrderedSame) { +#if TARGET_OS_IOS DLog(@"using app credGen: %@", firebaseApp.name) credential = [[FIRPhoneAuthProvider providerWithAuth:[FIRAuth authWithApp:firebaseApp]] credentialWithVerificationID:authToken verificationCode:authTokenSecret]; +#endif } else if ([provider compare:@"oauth" options:NSCaseInsensitiveSearch] == NSOrderedSame) { credential = [FIROAuthProvider credentialWithProviderID:@"oauth" IDToken:authToken @@ -1423,6 +1440,7 @@ - (void)promiseNoUser:(RCTPromiseResolveBlock)resolve } } +#if TARGET_OS_IOS - (NSDictionary *)multiFactorResolverToDict:(FIRMultiFactorResolver *)resolver { // Temporarily store the non-serializable session for later NSString *sessionHash = [NSString stringWithFormat:@"%@", @([resolver.session hash])]; @@ -1433,6 +1451,7 @@ - (NSDictionary *)multiFactorResolverToDict:(FIRMultiFactorResolver *)resolver { @"auth" : resolver.auth }; } +#endif - (NSString *)getJSFactorId:(NSString *)factorId { if ([factorId isEqualToString:@"1"]) { @@ -1543,6 +1562,7 @@ - (NSDictionary *)getJSError:(NSError *)error { } NSDictionary *resolverDict = nil; +#if TARGET_OS_IOS if ([error userInfo][FIRAuthErrorUserInfoMultiFactorResolverKey] != nil) { FIRMultiFactorResolver *resolver = error.userInfo[FIRAuthErrorUserInfoMultiFactorResolverKey]; resolverDict = [self multiFactorResolverToDict:resolver]; @@ -1550,6 +1570,7 @@ - (NSDictionary *)getJSError:(NSError *)error { NSString *sessionKey = [NSString stringWithFormat:@"%@", @([resolver.session hash])]; cachedResolver[sessionKey] = resolver; } +#endif return @{ @"code" : code, @@ -1696,11 +1717,14 @@ - (NSDictionary *)firebaseUserToDict:(FIRUser *)user { @"refreshToken" : user.refreshToken, @"tenantId" : user.tenantID ? (id)user.tenantID : [NSNull null], keyUid : user.uid, +#if TARGET_OS_IOS @"multiFactor" : @{@"enrolledFactors" : [self convertMultiFactorData:user.multiFactor.enrolledFactors]} +#endif }; } +#if TARGET_OS_IOS - (NSArray *)convertMultiFactorData:(NSArray *)hints { NSMutableArray *enrolledFactors = [NSMutableArray array]; @@ -1720,6 +1744,7 @@ - (NSDictionary *)firebaseUserToDict:(FIRUser *)user { } return enrolledFactors; } +#endif - (NSDictionary *)authCredentialToDict:(FIRAuthCredential *)authCredential { NSString *authCredentialHash = [NSString stringWithFormat:@"%@", @([authCredential hash])]; diff --git a/packages/crashlytics/RNFBCrashlytics.podspec b/packages/crashlytics/RNFBCrashlytics.podspec index 6aaf1d4b19..ebb0956d48 100644 --- a/packages/crashlytics/RNFBCrashlytics.podspec +++ b/packages/crashlytics/RNFBCrashlytics.podspec @@ -11,6 +11,8 @@ if coreVersionDetected != coreVersionRequired end firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget'] firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget'] +firebase_tvos_target = appPackage['sdkVersions']['ios']['tvosTarget'] +firebase_sdk_version = appPackage['sdkVersions']['ios']['firebase'] Pod::Spec.new do |s| s.name = "RNFBCrashlytics" @@ -26,6 +28,7 @@ Pod::Spec.new do |s| s.social_media_url = 'http://twitter.com/invertaseio' s.ios.deployment_target = firebase_ios_target s.macos.deployment_target = firebase_macos_target + s.tvos.deployment_target = firebase_tvos_target s.source_files = 'ios/**/*.{h,m}' # React Native dependencies diff --git a/packages/database/RNFBDatabase.podspec b/packages/database/RNFBDatabase.podspec index ebcf6fbf89..c23dae9b9b 100644 --- a/packages/database/RNFBDatabase.podspec +++ b/packages/database/RNFBDatabase.podspec @@ -10,6 +10,8 @@ if coreVersionDetected != coreVersionRequired end firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget'] firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget'] +firebase_tvos_target = appPackage['sdkVersions']['ios']['tvosTarget'] +firebase_sdk_version = appPackage['sdkVersions']['ios']['firebase'] Pod::Spec.new do |s| s.name = "RNFBDatabase" @@ -25,6 +27,7 @@ Pod::Spec.new do |s| s.social_media_url = 'http://twitter.com/invertaseio' s.ios.deployment_target = firebase_ios_target s.macos.deployment_target = firebase_macos_target + s.tvos.deployment_target = firebase_tvos_target s.source_files = 'ios/**/*.{h,m}' # React Native dependencies diff --git a/packages/firestore/RNFBFirestore.podspec b/packages/firestore/RNFBFirestore.podspec index ca4181c3de..b38c43c59a 100644 --- a/packages/firestore/RNFBFirestore.podspec +++ b/packages/firestore/RNFBFirestore.podspec @@ -10,6 +10,7 @@ if coreVersionDetected != coreVersionRequired end firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget'] firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget'] +firebase_tvos_target = appPackage['sdkVersions']['ios']['tvosTarget'] Pod::Spec.new do |s| s.name = "RNFBFirestore" @@ -25,6 +26,7 @@ Pod::Spec.new do |s| s.social_media_url = 'http://twitter.com/invertaseio' s.ios.deployment_target = firebase_ios_target s.macos.deployment_target = firebase_macos_target + s.tvos.deployment_target = firebase_tvos_target s.source_files = 'ios/**/*.{h,m}' # React Native dependencies diff --git a/packages/functions/RNFBFunctions.podspec b/packages/functions/RNFBFunctions.podspec index 3a9b548d1e..8abfa22bb7 100644 --- a/packages/functions/RNFBFunctions.podspec +++ b/packages/functions/RNFBFunctions.podspec @@ -10,6 +10,7 @@ if coreVersionDetected != coreVersionRequired end firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget'] firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget'] +firebase_tvos_target = appPackage['sdkVersions']['ios']['tvosTarget'] Pod::Spec.new do |s| s.name = "RNFBFunctions" @@ -25,6 +26,7 @@ Pod::Spec.new do |s| s.social_media_url = 'http://twitter.com/invertaseio' s.ios.deployment_target = firebase_ios_target s.macos.deployment_target = firebase_macos_target + s.tvos.deployment_target = firebase_tvos_target s.source_files = 'ios/**/*.{h,m}' # React Native dependencies diff --git a/packages/in-app-messaging/RNFBInAppMessaging.podspec b/packages/in-app-messaging/RNFBInAppMessaging.podspec index 41f49e2193..deac486472 100644 --- a/packages/in-app-messaging/RNFBInAppMessaging.podspec +++ b/packages/in-app-messaging/RNFBInAppMessaging.podspec @@ -10,6 +10,8 @@ if coreVersionDetected != coreVersionRequired end firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget'] firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget'] +firebase_tvos_target = appPackage['sdkVersions']['ios']['tvosTarget'] +firebase_sdk_version = appPackage['sdkVersions']['ios']['firebase'] Pod::Spec.new do |s| s.name = "RNFBInAppMessaging" @@ -25,6 +27,7 @@ Pod::Spec.new do |s| s.social_media_url = 'http://twitter.com/invertaseio' s.ios.deployment_target = firebase_ios_target s.macos.deployment_target = firebase_macos_target + s.tvos.deployment_target = firebase_tvos_target s.source_files = 'ios/**/*.{h,m}' # React Native dependencies diff --git a/packages/installations/RNFBInstallations.podspec b/packages/installations/RNFBInstallations.podspec index 9e091b5cd6..0a50c152bc 100644 --- a/packages/installations/RNFBInstallations.podspec +++ b/packages/installations/RNFBInstallations.podspec @@ -10,6 +10,8 @@ if coreVersionDetected != coreVersionRequired end firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget'] firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget'] +firebase_tvos_target = appPackage['sdkVersions']['ios']['tvosTarget'] +firebase_sdk_version = appPackage['sdkVersions']['ios']['firebase'] Pod::Spec.new do |s| s.name = "RNFBInstallations" @@ -25,6 +27,7 @@ Pod::Spec.new do |s| s.social_media_url = 'http://twitter.com/invertaseio' s.ios.deployment_target = firebase_ios_target s.macos.deployment_target = firebase_macos_target + s.tvos.deployment_target = firebase_tvos_target s.source_files = 'ios/**/*.{h,m}' # React Native dependencies diff --git a/packages/ml/RNFBML.podspec b/packages/ml/RNFBML.podspec index b236bfdb23..f2a8fec773 100644 --- a/packages/ml/RNFBML.podspec +++ b/packages/ml/RNFBML.podspec @@ -11,6 +11,8 @@ if coreVersionDetected != coreVersionRequired end firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget'] firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget'] +firebase_tvos_target = appPackage['sdkVersions']['ios']['tvosTarget'] +firebase_sdk_version = appPackage['sdkVersions']['ios']['firebase'] Pod::Spec.new do |s| s.name = "RNFBML" @@ -26,6 +28,7 @@ Pod::Spec.new do |s| s.social_media_url = 'http://twitter.com/invertaseio' s.ios.deployment_target = firebase_ios_target s.macos.deployment_target = firebase_macos_target + s.tvos.deployment_target = firebase_tvos_target s.source_files = 'ios/**/*.{h,m}' # React Native dependencies diff --git a/packages/perf/RNFBPerf.podspec b/packages/perf/RNFBPerf.podspec index 6e82c40aee..40e1ae5477 100644 --- a/packages/perf/RNFBPerf.podspec +++ b/packages/perf/RNFBPerf.podspec @@ -10,6 +10,8 @@ if coreVersionDetected != coreVersionRequired end firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget'] firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget'] +firebase_tvos_target = appPackage['sdkVersions']['ios']['tvosTarget'] +firebase_sdk_version = appPackage['sdkVersions']['ios']['firebase'] Pod::Spec.new do |s| s.name = "RNFBPerf" @@ -25,6 +27,7 @@ Pod::Spec.new do |s| s.social_media_url = 'http://twitter.com/invertaseio' s.ios.deployment_target = firebase_ios_target s.macos.deployment_target = firebase_macos_target + s.tvos.deployment_target = firebase_tvos_target s.source_files = 'ios/**/*.{h,m}' # React Native dependencies diff --git a/packages/remote-config/RNFBRemoteConfig.podspec b/packages/remote-config/RNFBRemoteConfig.podspec index 71344a8131..7afa44c6b0 100644 --- a/packages/remote-config/RNFBRemoteConfig.podspec +++ b/packages/remote-config/RNFBRemoteConfig.podspec @@ -10,6 +10,8 @@ if coreVersionDetected != coreVersionRequired end firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget'] firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget'] +firebase_tvos_target = appPackage['sdkVersions']['ios']['tvosTarget'] +firebase_sdk_version = appPackage['sdkVersions']['ios']['firebase'] Pod::Spec.new do |s| s.name = "RNFBRemoteConfig" @@ -25,6 +27,7 @@ Pod::Spec.new do |s| s.social_media_url = 'http://twitter.com/invertaseio' s.ios.deployment_target = firebase_ios_target s.macos.deployment_target = firebase_macos_target + s.tvos.deployment_target = firebase_tvos_target s.source_files = 'ios/**/*.{h,m}' # React Native dependencies diff --git a/packages/storage/RNFBStorage.podspec b/packages/storage/RNFBStorage.podspec index fc3762aff7..46a042ad97 100644 --- a/packages/storage/RNFBStorage.podspec +++ b/packages/storage/RNFBStorage.podspec @@ -10,6 +10,7 @@ if coreVersionDetected != coreVersionRequired end firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget'] firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget'] +firebase_tvos_target = appPackage['sdkVersions']['ios']['tvosTarget'] Pod::Spec.new do |s| s.name = "RNFBStorage" @@ -25,6 +26,7 @@ Pod::Spec.new do |s| s.social_media_url = 'http://twitter.com/invertaseio' s.ios.deployment_target = firebase_ios_target s.macos.deployment_target = firebase_macos_target + s.tvos.deployment_target = firebase_tvos_target s.source_files = 'ios/**/*.{h,m}' # React Native dependencies