@react-native-firebase/installations 25.1.0 → 26.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/RNFBInstallations.podspec +9 -7
- package/android/build.gradle +19 -0
- package/android/src/main/java/io/invertase/firebase/installations/{ReactNativeFirebaseInstallationsModule.java → NativeRNFBTurboInstallations.java} +34 -28
- package/android/src/main/java/io/invertase/firebase/installations/ReactNativeFirebaseInstallationsPackage.java +1 -1
- package/android/src/main/java/io/invertase/firebase/installations/generated/java/com/facebook/fbreact/specs/NativeRNFBTurboInstallationsSpec.java +46 -0
- package/android/src/main/java/io/invertase/firebase/installations/generated/jni/CMakeLists.txt +36 -0
- package/android/src/main/java/io/invertase/firebase/installations/generated/jni/RNFBInstallationsTurboModules-generated.cpp +44 -0
- package/android/src/main/java/io/invertase/firebase/installations/generated/jni/RNFBInstallationsTurboModules.h +31 -0
- package/android/src/main/java/io/invertase/firebase/installations/generated/jni/react/renderer/components/RNFBInstallationsTurboModules/RNFBInstallationsTurboModulesJSI-generated.cpp +42 -0
- package/android/src/main/java/io/invertase/firebase/installations/generated/jni/react/renderer/components/RNFBInstallationsTurboModules/RNFBInstallationsTurboModulesJSI.h +89 -0
- package/dist/module/index.js +81 -6
- package/dist/module/index.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/typescript/lib/index.d.ts +35 -5
- package/dist/typescript/lib/index.d.ts.map +1 -1
- package/dist/typescript/lib/types/internal.d.ts +8 -9
- package/dist/typescript/lib/types/internal.d.ts.map +1 -1
- package/dist/typescript/lib/version.d.ts +1 -1
- package/ios/RNFBInstallations/RNFBInstallationsModule.h +3 -3
- package/ios/RNFBInstallations/{RNFBInstallationsModule.m → RNFBInstallationsModule.mm} +32 -25
- package/ios/RNFBInstallations.xcodeproj/project.pbxproj +8 -8
- package/ios/generated/RCTAppDependencyProvider.h +25 -0
- package/ios/generated/RCTAppDependencyProvider.mm +55 -0
- package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
- package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
- package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
- package/ios/generated/RCTThirdPartyComponentsProvider.mm +23 -0
- package/ios/generated/RNFBInstallationsTurboModules/RNFBInstallationsTurboModules-generated.mm +53 -0
- package/ios/generated/RNFBInstallationsTurboModules/RNFBInstallationsTurboModules.h +71 -0
- package/ios/generated/RNFBInstallationsTurboModulesJSI-generated.cpp +42 -0
- package/ios/generated/RNFBInstallationsTurboModulesJSI.h +89 -0
- package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
- package/lib/index.ts +111 -8
- package/lib/types/internal.ts +10 -15
- package/lib/version.ts +1 -1
- package/package.json +22 -4
- package/react-native.config.js +10 -0
- package/specs/NativeRNFBTurboInstallations.ts +10 -0
- package/typedoc.json +1 -1
- package/dist/module/modular.js +0 -68
- package/dist/module/modular.js.map +0 -1
- package/dist/module/namespaced.js +0 -72
- package/dist/module/namespaced.js.map +0 -1
- package/dist/module/types/namespaced.js +0 -33
- package/dist/module/types/namespaced.js.map +0 -1
- package/dist/typescript/lib/modular.d.ts +0 -25
- package/dist/typescript/lib/modular.d.ts.map +0 -1
- package/dist/typescript/lib/namespaced.d.ts +0 -12
- package/dist/typescript/lib/namespaced.d.ts.map +0 -1
- package/dist/typescript/lib/types/namespaced.d.ts +0 -77
- package/dist/typescript/lib/types/namespaced.d.ts.map +0 -1
- package/lib/modular.ts +0 -80
- package/lib/namespaced.ts +0 -100
- package/lib/types/namespaced.ts +0 -112
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,27 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [26.1.0](https://github.com/invertase/react-native-firebase/compare/v26.0.0...v26.1.0) (2026-08-03)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **ios:** add SPM dependency resolution support alongside CocoaPods ([#8933](https://github.com/invertase/react-native-firebase/issues/8933)) ([44a7a9a](https://github.com/invertase/react-native-firebase/commit/44a7a9ae7b404f412e9766c0417f1df8fa971a0b))
|
|
11
|
+
|
|
12
|
+
## [26.0.0](https://github.com/invertase/react-native-firebase/compare/v25.1.0...v26.0.0) (2026-07-29)
|
|
13
|
+
|
|
14
|
+
### ⚠ BREAKING CHANGES
|
|
15
|
+
|
|
16
|
+
- **installations:** migrate installations to TurboModules
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
- **installations:** migrate installations to TurboModules ([4097d25](https://github.com/invertase/react-native-firebase/commit/4097d25eaced7bb31bca886d74531714b057feb1))
|
|
21
|
+
|
|
22
|
+
### Bug Fixes
|
|
23
|
+
|
|
24
|
+
- add codegen verify and spec-native parity tests ([49d9f1b](https://github.com/invertase/react-native-firebase/commit/49d9f1baba4fc83c1dd4983f582bbd7352d78809))
|
|
25
|
+
- **ios:** set IPHONEOS_DEPLOYMENT_TARGET to 15.0, update platform support docs/conditionals ([#9108](https://github.com/invertase/react-native-firebase/issues/9108)) ([99d0899](https://github.com/invertase/react-native-firebase/commit/99d089908e3eec6155d73ecf05ff7274ad33c46e)), closes [#8882](https://github.com/invertase/react-native-firebase/issues/8882)
|
|
26
|
+
|
|
6
27
|
## [25.1.0](https://github.com/invertase/react-native-firebase/compare/v25.0.1...v25.1.0) (2026-06-25)
|
|
7
28
|
|
|
8
29
|
**Note:** Version bump only for package @react-native-firebase/installations
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'json'
|
|
2
|
+
require_relative '../app/firebase_spm'
|
|
2
3
|
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
|
|
3
4
|
appPackage = JSON.parse(File.read(File.join('..', 'app', 'package.json')))
|
|
4
5
|
|
|
@@ -28,15 +29,16 @@ Pod::Spec.new do |s|
|
|
|
28
29
|
s.ios.deployment_target = firebase_ios_target
|
|
29
30
|
s.macos.deployment_target = firebase_macos_target
|
|
30
31
|
s.tvos.deployment_target = firebase_tvos_target
|
|
31
|
-
s.source_files = 'ios/**/*.{h,m}'
|
|
32
|
+
s.source_files = 'ios/**/*.{h,m,mm,cpp,swift}'
|
|
33
|
+
s.private_header_files = "ios/**/*.h"
|
|
34
|
+
s.exclude_files = 'ios/generated/RCTThirdPartyComponentsProvider.*', 'ios/generated/RCTAppDependencyProvider.*', 'ios/generated/RCTModuleProviders.*', 'ios/generated/RCTModulesConformingToProtocolsProvider.*', 'ios/generated/RCTUnstableModulesRequiringMainQueueSetupProvider.*'
|
|
32
35
|
|
|
33
36
|
s.dependency 'RNFBApp'
|
|
34
37
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
s.dependency "React-Core"
|
|
38
|
+
install_modules_dependencies(s);
|
|
39
|
+
|
|
40
|
+
if defined?(ENV["RCT_NEW_ARCH_ENABLED"]) != nil && (ENV["RCT_NEW_ARCH_ENABLED"] == '0')
|
|
41
|
+
raise "#{s.name} requires New Architecture. Enable New Architecture to use this module"
|
|
40
42
|
end
|
|
41
43
|
|
|
42
44
|
if defined?($FirebaseSDKVersion)
|
|
@@ -45,7 +47,7 @@ Pod::Spec.new do |s|
|
|
|
45
47
|
end
|
|
46
48
|
|
|
47
49
|
# Firebase dependencies
|
|
48
|
-
s
|
|
50
|
+
firebase_dependency(s, firebase_sdk_version, ['FirebaseInstallations'], 'Firebase/Installations')
|
|
49
51
|
|
|
50
52
|
if defined?($RNFirebaseAsStaticFramework)
|
|
51
53
|
Pod::UI.puts "#{s.name}: Using overridden static_framework value of '#{$RNFirebaseAsStaticFramework}'"
|
package/android/build.gradle
CHANGED
|
@@ -81,6 +81,7 @@ android {
|
|
|
81
81
|
sourceSets {
|
|
82
82
|
main {
|
|
83
83
|
java.srcDirs = ['src/main/java', 'src/reactnative/java']
|
|
84
|
+
java.excludes = ['**/generated/jni/**']
|
|
84
85
|
}
|
|
85
86
|
}
|
|
86
87
|
}
|
|
@@ -100,3 +101,21 @@ ReactNative.shared.applyPackageVersion()
|
|
|
100
101
|
ReactNative.shared.applyDefaultExcludes()
|
|
101
102
|
ReactNative.module.applyAndroidVersions()
|
|
102
103
|
ReactNative.module.applyReactNativeDependency("api")
|
|
104
|
+
|
|
105
|
+
def isNewArchitectureDisabled() {
|
|
106
|
+
return project.hasProperty("newArchEnabled") && project.newArchEnabled != "true"
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if (isNewArchitectureDisabled()) {
|
|
110
|
+
def ANSI_RED = "\u001B[31m";
|
|
111
|
+
def ANSI_RESET = "\u001B[0m";
|
|
112
|
+
|
|
113
|
+
println("\n\n\n")
|
|
114
|
+
println(ANSI_RED + "**************************************************************************************************************")
|
|
115
|
+
println("\n\n\n")
|
|
116
|
+
println("New Architecture support is required for @react-native-firebase/installations")
|
|
117
|
+
println("\n\n\n")
|
|
118
|
+
println("**************************************************************************************************************" + ANSI_RESET)
|
|
119
|
+
println("\n\n\n")
|
|
120
|
+
System.exit(1)
|
|
121
|
+
}
|
|
@@ -18,31 +18,38 @@ package io.invertase.firebase.installations;
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
import android.util.Log;
|
|
21
|
-
import com.facebook.
|
|
21
|
+
import com.facebook.fbreact.specs.NativeRNFBTurboInstallationsSpec;
|
|
22
|
+
import com.facebook.react.bridge.Promise;
|
|
23
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
22
24
|
import com.google.android.gms.tasks.Tasks;
|
|
23
25
|
import com.google.firebase.FirebaseApp;
|
|
24
26
|
import com.google.firebase.installations.FirebaseInstallations;
|
|
25
|
-
import io.invertase.firebase.common.
|
|
27
|
+
import io.invertase.firebase.common.TaskExecutorService;
|
|
28
|
+
import java.util.concurrent.ExecutorService;
|
|
26
29
|
|
|
27
|
-
public class
|
|
30
|
+
public class NativeRNFBTurboInstallations extends NativeRNFBTurboInstallationsSpec {
|
|
28
31
|
private static final String TAG = "Installations";
|
|
32
|
+
private final TaskExecutorService executorService;
|
|
29
33
|
|
|
30
|
-
|
|
31
|
-
super(reactContext
|
|
34
|
+
public NativeRNFBTurboInstallations(ReactApplicationContext reactContext) {
|
|
35
|
+
super(reactContext);
|
|
36
|
+
this.executorService = new TaskExecutorService("UniversalInstallationsModule");
|
|
32
37
|
}
|
|
33
38
|
|
|
34
|
-
|
|
39
|
+
private ExecutorService getExecutor() {
|
|
40
|
+
return executorService.getExecutor();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@Override
|
|
35
44
|
public void getId(String appName, Promise promise) {
|
|
36
45
|
FirebaseApp firebaseApp = FirebaseApp.getInstance(appName);
|
|
37
46
|
|
|
38
47
|
Tasks.call(
|
|
39
48
|
getExecutor(),
|
|
40
|
-
() ->
|
|
41
|
-
return Tasks.await(FirebaseInstallations.getInstance(firebaseApp).getId());
|
|
42
|
-
})
|
|
49
|
+
() -> Tasks.await(FirebaseInstallations.getInstance(firebaseApp).getId()))
|
|
43
50
|
.addOnCompleteListener(
|
|
44
51
|
getExecutor(),
|
|
45
|
-
|
|
52
|
+
task -> {
|
|
46
53
|
if (task.isSuccessful()) {
|
|
47
54
|
promise.resolve(task.getResult());
|
|
48
55
|
} else {
|
|
@@ -50,24 +57,21 @@ public class ReactNativeFirebaseInstallationsModule extends ReactNativeFirebaseM
|
|
|
50
57
|
TAG,
|
|
51
58
|
"RNFB: Unknown error while fetching Installations ID "
|
|
52
59
|
+ task.getException().getMessage());
|
|
53
|
-
|
|
54
|
-
promise, "id-error", task.getException().getMessage());
|
|
60
|
+
promise.reject("id-error", task.getException().getMessage());
|
|
55
61
|
}
|
|
56
62
|
});
|
|
57
63
|
}
|
|
58
64
|
|
|
59
|
-
@
|
|
65
|
+
@Override
|
|
60
66
|
public void getToken(String appName, boolean forceRefresh, Promise promise) {
|
|
61
67
|
FirebaseApp firebaseApp = FirebaseApp.getInstance(appName);
|
|
62
68
|
Tasks.call(
|
|
63
69
|
getExecutor(),
|
|
64
|
-
() ->
|
|
65
|
-
|
|
66
|
-
FirebaseInstallations.getInstance(firebaseApp).getToken(forceRefresh));
|
|
67
|
-
})
|
|
70
|
+
() ->
|
|
71
|
+
Tasks.await(FirebaseInstallations.getInstance(firebaseApp).getToken(forceRefresh)))
|
|
68
72
|
.addOnCompleteListener(
|
|
69
73
|
getExecutor(),
|
|
70
|
-
|
|
74
|
+
task -> {
|
|
71
75
|
if (task.isSuccessful()) {
|
|
72
76
|
promise.resolve(task.getResult().getToken());
|
|
73
77
|
} else {
|
|
@@ -75,23 +79,20 @@ public class ReactNativeFirebaseInstallationsModule extends ReactNativeFirebaseM
|
|
|
75
79
|
TAG,
|
|
76
80
|
"RNFB: Unknown error while fetching Installations token "
|
|
77
81
|
+ task.getException().getMessage());
|
|
78
|
-
|
|
79
|
-
promise, "token-error", task.getException().getMessage());
|
|
82
|
+
promise.reject("token-error", task.getException().getMessage());
|
|
80
83
|
}
|
|
81
84
|
});
|
|
82
85
|
}
|
|
83
86
|
|
|
84
|
-
@
|
|
85
|
-
public void
|
|
87
|
+
@Override
|
|
88
|
+
public void deleteInstallations(String appName, Promise promise) {
|
|
86
89
|
FirebaseApp firebaseApp = FirebaseApp.getInstance(appName);
|
|
87
90
|
Tasks.call(
|
|
88
91
|
getExecutor(),
|
|
89
|
-
() ->
|
|
90
|
-
return Tasks.await(FirebaseInstallations.getInstance(firebaseApp).delete());
|
|
91
|
-
})
|
|
92
|
+
() -> Tasks.await(FirebaseInstallations.getInstance(firebaseApp).delete()))
|
|
92
93
|
.addOnCompleteListener(
|
|
93
94
|
getExecutor(),
|
|
94
|
-
|
|
95
|
+
task -> {
|
|
95
96
|
if (task.isSuccessful()) {
|
|
96
97
|
promise.resolve(null);
|
|
97
98
|
} else {
|
|
@@ -99,9 +100,14 @@ public class ReactNativeFirebaseInstallationsModule extends ReactNativeFirebaseM
|
|
|
99
100
|
TAG,
|
|
100
101
|
"RNFB: Unknown error while deleting Installations"
|
|
101
102
|
+ task.getException().getMessage());
|
|
102
|
-
|
|
103
|
-
promise, "delete-error", task.getException().getMessage());
|
|
103
|
+
promise.reject("delete-error", task.getException().getMessage());
|
|
104
104
|
}
|
|
105
105
|
});
|
|
106
106
|
}
|
|
107
|
+
|
|
108
|
+
@Override
|
|
109
|
+
public void invalidate() {
|
|
110
|
+
super.invalidate();
|
|
111
|
+
executorService.shutdown();
|
|
112
|
+
}
|
|
107
113
|
}
|
|
@@ -30,7 +30,7 @@ public class ReactNativeFirebaseInstallationsPackage implements ReactPackage {
|
|
|
30
30
|
@Override
|
|
31
31
|
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
|
|
32
32
|
List<NativeModule> modules = new ArrayList<>();
|
|
33
|
-
modules.add(new
|
|
33
|
+
modules.add(new NativeRNFBTurboInstallations(reactContext));
|
|
34
34
|
return modules;
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateModuleJavaSpec.js
|
|
9
|
+
*
|
|
10
|
+
* @nolint
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
package com.facebook.fbreact.specs;
|
|
14
|
+
|
|
15
|
+
import com.facebook.proguard.annotations.DoNotStrip;
|
|
16
|
+
import com.facebook.react.bridge.Promise;
|
|
17
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
18
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
19
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
20
|
+
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
|
21
|
+
import javax.annotation.Nonnull;
|
|
22
|
+
|
|
23
|
+
public abstract class NativeRNFBTurboInstallationsSpec extends ReactContextBaseJavaModule implements TurboModule {
|
|
24
|
+
public static final String NAME = "NativeRNFBTurboInstallations";
|
|
25
|
+
|
|
26
|
+
public NativeRNFBTurboInstallationsSpec(ReactApplicationContext reactContext) {
|
|
27
|
+
super(reactContext);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@Override
|
|
31
|
+
public @Nonnull String getName() {
|
|
32
|
+
return NAME;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@ReactMethod
|
|
36
|
+
@DoNotStrip
|
|
37
|
+
public abstract void deleteInstallations(String appName, Promise promise);
|
|
38
|
+
|
|
39
|
+
@ReactMethod
|
|
40
|
+
@DoNotStrip
|
|
41
|
+
public abstract void getId(String appName, Promise promise);
|
|
42
|
+
|
|
43
|
+
@ReactMethod
|
|
44
|
+
@DoNotStrip
|
|
45
|
+
public abstract void getToken(String appName, boolean forceRefresh, Promise promise);
|
|
46
|
+
}
|
package/android/src/main/java/io/invertase/firebase/installations/generated/jni/CMakeLists.txt
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
#
|
|
3
|
+
# This source code is licensed under the MIT license found in the
|
|
4
|
+
# LICENSE file in the root directory of this source tree.
|
|
5
|
+
|
|
6
|
+
cmake_minimum_required(VERSION 3.13)
|
|
7
|
+
set(CMAKE_VERBOSE_MAKEFILE on)
|
|
8
|
+
|
|
9
|
+
file(GLOB react_codegen_SRCS CONFIGURE_DEPENDS *.cpp react/renderer/components/RNFBInstallationsTurboModules/*.cpp)
|
|
10
|
+
|
|
11
|
+
add_library(
|
|
12
|
+
react_codegen_RNFBInstallationsTurboModules
|
|
13
|
+
OBJECT
|
|
14
|
+
${react_codegen_SRCS}
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
target_include_directories(react_codegen_RNFBInstallationsTurboModules PUBLIC . react/renderer/components/RNFBInstallationsTurboModules)
|
|
18
|
+
|
|
19
|
+
target_link_libraries(
|
|
20
|
+
react_codegen_RNFBInstallationsTurboModules
|
|
21
|
+
fbjni
|
|
22
|
+
jsi
|
|
23
|
+
# We need to link different libraries based on whether we are building rncore or not, that's necessary
|
|
24
|
+
# because we want to break a circular dependency between react_codegen_rncore and reactnative
|
|
25
|
+
reactnative
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
target_compile_options(
|
|
29
|
+
react_codegen_RNFBInstallationsTurboModules
|
|
30
|
+
PRIVATE
|
|
31
|
+
-DLOG_TAG=\"ReactNative\"
|
|
32
|
+
-fexceptions
|
|
33
|
+
-frtti
|
|
34
|
+
-std=c++20
|
|
35
|
+
-Wall
|
|
36
|
+
)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateModuleJniCpp.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#include "RNFBInstallationsTurboModules.h"
|
|
12
|
+
|
|
13
|
+
namespace facebook::react {
|
|
14
|
+
|
|
15
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboInstallationsSpecJSI_deleteInstallations(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
16
|
+
static jmethodID cachedMethodId = nullptr;
|
|
17
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "deleteInstallations", "(Ljava/lang/String;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboInstallationsSpecJSI_getId(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
21
|
+
static jmethodID cachedMethodId = nullptr;
|
|
22
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "getId", "(Ljava/lang/String;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static facebook::jsi::Value __hostFunction_NativeRNFBTurboInstallationsSpecJSI_getToken(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
26
|
+
static jmethodID cachedMethodId = nullptr;
|
|
27
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "getToken", "(Ljava/lang/String;ZLcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
NativeRNFBTurboInstallationsSpecJSI::NativeRNFBTurboInstallationsSpecJSI(const JavaTurboModule::InitParams ¶ms)
|
|
31
|
+
: JavaTurboModule(params) {
|
|
32
|
+
methodMap_["deleteInstallations"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboInstallationsSpecJSI_deleteInstallations};
|
|
33
|
+
methodMap_["getId"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboInstallationsSpecJSI_getId};
|
|
34
|
+
methodMap_["getToken"] = MethodMetadata {2, __hostFunction_NativeRNFBTurboInstallationsSpecJSI_getToken};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
std::shared_ptr<TurboModule> RNFBInstallationsTurboModules_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms) {
|
|
38
|
+
if (moduleName == "NativeRNFBTurboInstallations") {
|
|
39
|
+
return std::make_shared<NativeRNFBTurboInstallationsSpecJSI>(params);
|
|
40
|
+
}
|
|
41
|
+
return nullptr;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateModuleJniH.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#pragma once
|
|
12
|
+
|
|
13
|
+
#include <ReactCommon/JavaTurboModule.h>
|
|
14
|
+
#include <ReactCommon/TurboModule.h>
|
|
15
|
+
#include <jsi/jsi.h>
|
|
16
|
+
|
|
17
|
+
namespace facebook::react {
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* JNI C++ class for module 'NativeRNFBTurboInstallations'
|
|
21
|
+
*/
|
|
22
|
+
class JSI_EXPORT NativeRNFBTurboInstallationsSpecJSI : public JavaTurboModule {
|
|
23
|
+
public:
|
|
24
|
+
NativeRNFBTurboInstallationsSpecJSI(const JavaTurboModule::InitParams ¶ms);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
JSI_EXPORT
|
|
29
|
+
std::shared_ptr<TurboModule> RNFBInstallationsTurboModules_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms);
|
|
30
|
+
|
|
31
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateModuleCpp.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#include "RNFBInstallationsTurboModulesJSI.h"
|
|
11
|
+
|
|
12
|
+
namespace facebook::react {
|
|
13
|
+
|
|
14
|
+
static jsi::Value __hostFunction_NativeRNFBTurboInstallationsCxxSpecJSI_deleteInstallations(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
15
|
+
return static_cast<NativeRNFBTurboInstallationsCxxSpecJSI *>(&turboModule)->deleteInstallations(
|
|
16
|
+
rt,
|
|
17
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
static jsi::Value __hostFunction_NativeRNFBTurboInstallationsCxxSpecJSI_getId(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
21
|
+
return static_cast<NativeRNFBTurboInstallationsCxxSpecJSI *>(&turboModule)->getId(
|
|
22
|
+
rt,
|
|
23
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
static jsi::Value __hostFunction_NativeRNFBTurboInstallationsCxxSpecJSI_getToken(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
27
|
+
return static_cast<NativeRNFBTurboInstallationsCxxSpecJSI *>(&turboModule)->getToken(
|
|
28
|
+
rt,
|
|
29
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
30
|
+
count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asBool()
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
NativeRNFBTurboInstallationsCxxSpecJSI::NativeRNFBTurboInstallationsCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
|
|
35
|
+
: TurboModule("NativeRNFBTurboInstallations", jsInvoker) {
|
|
36
|
+
methodMap_["deleteInstallations"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboInstallationsCxxSpecJSI_deleteInstallations};
|
|
37
|
+
methodMap_["getId"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboInstallationsCxxSpecJSI_getId};
|
|
38
|
+
methodMap_["getToken"] = MethodMetadata {2, __hostFunction_NativeRNFBTurboInstallationsCxxSpecJSI_getToken};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateModuleH.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#pragma once
|
|
11
|
+
|
|
12
|
+
#include <ReactCommon/TurboModule.h>
|
|
13
|
+
#include <react/bridging/Bridging.h>
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class JSI_EXPORT NativeRNFBTurboInstallationsCxxSpecJSI : public TurboModule {
|
|
19
|
+
protected:
|
|
20
|
+
NativeRNFBTurboInstallationsCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);
|
|
21
|
+
|
|
22
|
+
public:
|
|
23
|
+
virtual jsi::Value deleteInstallations(jsi::Runtime &rt, jsi::String appName) = 0;
|
|
24
|
+
virtual jsi::Value getId(jsi::Runtime &rt, jsi::String appName) = 0;
|
|
25
|
+
virtual jsi::Value getToken(jsi::Runtime &rt, jsi::String appName, bool forceRefresh) = 0;
|
|
26
|
+
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
template <typename T>
|
|
30
|
+
class JSI_EXPORT NativeRNFBTurboInstallationsCxxSpec : public TurboModule {
|
|
31
|
+
public:
|
|
32
|
+
jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
|
|
33
|
+
return delegate_.create(rt, propName);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime& runtime) override {
|
|
37
|
+
return delegate_.getPropertyNames(runtime);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
static constexpr std::string_view kModuleName = "NativeRNFBTurboInstallations";
|
|
41
|
+
|
|
42
|
+
protected:
|
|
43
|
+
NativeRNFBTurboInstallationsCxxSpec(std::shared_ptr<CallInvoker> jsInvoker)
|
|
44
|
+
: TurboModule(std::string{NativeRNFBTurboInstallationsCxxSpec::kModuleName}, jsInvoker),
|
|
45
|
+
delegate_(reinterpret_cast<T*>(this), jsInvoker) {}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
private:
|
|
49
|
+
class Delegate : public NativeRNFBTurboInstallationsCxxSpecJSI {
|
|
50
|
+
public:
|
|
51
|
+
Delegate(T *instance, std::shared_ptr<CallInvoker> jsInvoker) :
|
|
52
|
+
NativeRNFBTurboInstallationsCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
|
|
53
|
+
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
jsi::Value deleteInstallations(jsi::Runtime &rt, jsi::String appName) override {
|
|
57
|
+
static_assert(
|
|
58
|
+
bridging::getParameterCount(&T::deleteInstallations) == 2,
|
|
59
|
+
"Expected deleteInstallations(...) to have 2 parameters");
|
|
60
|
+
|
|
61
|
+
return bridging::callFromJs<jsi::Value>(
|
|
62
|
+
rt, &T::deleteInstallations, jsInvoker_, instance_, std::move(appName));
|
|
63
|
+
}
|
|
64
|
+
jsi::Value getId(jsi::Runtime &rt, jsi::String appName) override {
|
|
65
|
+
static_assert(
|
|
66
|
+
bridging::getParameterCount(&T::getId) == 2,
|
|
67
|
+
"Expected getId(...) to have 2 parameters");
|
|
68
|
+
|
|
69
|
+
return bridging::callFromJs<jsi::Value>(
|
|
70
|
+
rt, &T::getId, jsInvoker_, instance_, std::move(appName));
|
|
71
|
+
}
|
|
72
|
+
jsi::Value getToken(jsi::Runtime &rt, jsi::String appName, bool forceRefresh) override {
|
|
73
|
+
static_assert(
|
|
74
|
+
bridging::getParameterCount(&T::getToken) == 3,
|
|
75
|
+
"Expected getToken(...) to have 3 parameters");
|
|
76
|
+
|
|
77
|
+
return bridging::callFromJs<jsi::Value>(
|
|
78
|
+
rt, &T::getToken, jsInvoker_, instance_, std::move(appName), std::move(forceRefresh));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
private:
|
|
82
|
+
friend class NativeRNFBTurboInstallationsCxxSpec;
|
|
83
|
+
T *instance_;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
Delegate delegate_;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
} // namespace facebook::react
|
package/dist/module/index.js
CHANGED
|
@@ -17,13 +17,88 @@
|
|
|
17
17
|
*
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
import { isIOS } from '@react-native-firebase/app/dist/module/common';
|
|
21
|
+
import { FirebaseModule, getOrCreateModularInstance } from '@react-native-firebase/app/dist/module/internal';
|
|
22
|
+
import "./types/internal.js";
|
|
23
|
+
import { version } from "./version.js";
|
|
24
|
+
const nativeModuleName = 'NativeRNFBTurboInstallations';
|
|
25
|
+
class FirebaseInstallationsModule extends FirebaseModule {
|
|
26
|
+
getId() {
|
|
27
|
+
return this.native.getId();
|
|
28
|
+
}
|
|
29
|
+
getToken(forceRefresh) {
|
|
30
|
+
if (!forceRefresh) {
|
|
31
|
+
return this.native.getToken(false);
|
|
32
|
+
} else {
|
|
33
|
+
return this.native.getToken(true);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
delete() {
|
|
37
|
+
return this.native.deleteInstallations();
|
|
38
|
+
}
|
|
39
|
+
onIdChange() {
|
|
40
|
+
if (isIOS) {
|
|
41
|
+
return () => {};
|
|
42
|
+
}
|
|
21
43
|
|
|
22
|
-
//
|
|
23
|
-
|
|
44
|
+
// TODO implement change listener on Android
|
|
45
|
+
return () => {};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const config = {
|
|
49
|
+
namespace: 'installations',
|
|
50
|
+
nativeModuleName,
|
|
51
|
+
nativeEvents: false,
|
|
52
|
+
// TODO implement android id change listener: ['installations_id_changed'],
|
|
53
|
+
hasMultiAppSupport: true,
|
|
54
|
+
hasCustomUrlOrRegionSupport: false,
|
|
55
|
+
turboModule: true
|
|
56
|
+
};
|
|
24
57
|
|
|
25
|
-
|
|
58
|
+
/**
|
|
59
|
+
* RN Firebase package version string exported from the modular entry point.
|
|
60
|
+
*
|
|
61
|
+
* The firebase-js-sdk does not export `SDK_VERSION` from `@firebase/installations`.
|
|
62
|
+
*/
|
|
63
|
+
export const SDK_VERSION = version;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Returns the {@link Installations} instance for the default or given {@link FirebaseApp}.
|
|
67
|
+
*
|
|
68
|
+
* @param app - The Firebase `FirebaseApp` to use. When omitted, the default app is used.
|
|
69
|
+
* @returns The Installations service instance for that app.
|
|
70
|
+
*/
|
|
71
|
+
export function getInstallations(app) {
|
|
72
|
+
return getOrCreateModularInstance(FirebaseInstallationsModule, config, app);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Deletes the Firebase Installation and all associated data.
|
|
77
|
+
*/
|
|
78
|
+
export function deleteInstallations(installations) {
|
|
79
|
+
return installations.delete();
|
|
80
|
+
}
|
|
26
81
|
|
|
27
|
-
|
|
28
|
-
|
|
82
|
+
/**
|
|
83
|
+
* Creates a Firebase Installation if there isn't one for the app and returns the Installation ID.
|
|
84
|
+
*/
|
|
85
|
+
export function getId(installations) {
|
|
86
|
+
return installations.getId();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Returns a Firebase Installations auth token, identifying the current Firebase Installation.
|
|
91
|
+
*/
|
|
92
|
+
export function getToken(installations, forceRefresh) {
|
|
93
|
+
return installations.getToken(forceRefresh);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Throw an error since react-native-firebase does not support this method.
|
|
98
|
+
*
|
|
99
|
+
* Sets a new callback that will get called when Installation ID changes. Returns an unsubscribe function that will remove the callback when called.
|
|
100
|
+
*/
|
|
101
|
+
export function onIdChange(_installations, _callback) {
|
|
102
|
+
throw new Error('onIdChange() is unsupported by the React Native Firebase SDK.');
|
|
103
|
+
}
|
|
29
104
|
//# sourceMappingURL=index.js.map
|
package/dist/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["isIOS","FirebaseModule","getOrCreateModularInstance","version","nativeModuleName","FirebaseInstallationsModule","getId","native","getToken","forceRefresh","delete","deleteInstallations","onIdChange","config","namespace","nativeEvents","hasMultiAppSupport","hasCustomUrlOrRegionSupport","turboModule","SDK_VERSION","getInstallations","app","installations","_installations","_callback","Error"],"sourceRoot":"../../lib","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,KAAK,QAAQ,+CAA+C;AACrE,SACEC,cAAc,EACdC,0BAA0B,QACrB,iDAAiD;AAExD,OAAO,qBAAkB;AAQzB,SAASC,OAAO,QAAQ,cAAW;AAEnC,MAAMC,gBAAgB,GAAG,8BAA8B;AAEvD,MAAMC,2BAA2B,SAASJ,cAAc,CAA0B;EAChFK,KAAKA,CAAA,EAAoB;IACvB,OAAO,IAAI,CAACC,MAAM,CAACD,KAAK,CAAC,CAAC;EAC5B;EAEAE,QAAQA,CAACC,YAAsB,EAAmB;IAChD,IAAI,CAACA,YAAY,EAAE;MACjB,OAAO,IAAI,CAACF,MAAM,CAACC,QAAQ,CAAC,KAAK,CAAC;IACpC,CAAC,MAAM;MACL,OAAO,IAAI,CAACD,MAAM,CAACC,QAAQ,CAAC,IAAI,CAAC;IACnC;EACF;EAEAE,MAAMA,CAAA,EAAkB;IACtB,OAAO,IAAI,CAACH,MAAM,CAACI,mBAAmB,CAAC,CAAC;EAC1C;EAEAC,UAAUA,CAAA,EAAe;IACvB,IAAIZ,KAAK,EAAE;MACT,OAAO,MAAM,CAAC,CAAC;IACjB;;IAEA;IACA,OAAO,MAAM,CAAC,CAAC;EACjB;AACF;AAEA,MAAMa,MAAoB,GAAG;EAC3BC,SAAS,EAAE,eAAe;EAC1BV,gBAAgB;EAChBW,YAAY,EAAE,KAAK;EAAE;EACrBC,kBAAkB,EAAE,IAAI;EACxBC,2BAA2B,EAAE,KAAK;EAClCC,WAAW,EAAE;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAGhB,OAAO;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASiB,gBAAgBA,CAACC,GAAiB,EAAiB;EACjE,OAAOnB,0BAA0B,CAC/BG,2BAA2B,EAC3BQ,MAAM,EACNQ,GACF,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASV,mBAAmBA,CAACW,aAA4B,EAAiB;EAC/E,OAAQA,aAAa,CAA2BZ,MAAM,CAAC,CAAC;AAC1D;;AAEA;AACA;AACA;AACA,OAAO,SAASJ,KAAKA,CAACgB,aAA4B,EAAmB;EACnE,OAAQA,aAAa,CAA2BhB,KAAK,CAAC,CAAC;AACzD;;AAEA;AACA;AACA;AACA,OAAO,SAASE,QAAQA,CAACc,aAA4B,EAAEb,YAAsB,EAAmB;EAC9F,OAAQa,aAAa,CAA2Bd,QAAQ,CAACC,YAAY,CAAC;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,UAAUA,CACxBW,cAA6B,EAC7BC,SAA6B,EACN;EACvB,MAAM,IAAIC,KAAK,CAAC,+DAA+D,CAAC;AAClF","ignoreList":[]}
|
package/dist/module/version.js
CHANGED