@react-native-firebase/crashlytics 23.7.0 → 23.8.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.
Files changed (96) hide show
  1. package/dist/commonjs/handlers.js +175 -0
  2. package/dist/commonjs/handlers.js.map +1 -0
  3. package/dist/commonjs/index.js +38 -0
  4. package/dist/commonjs/index.js.map +1 -0
  5. package/dist/commonjs/modular.js +256 -0
  6. package/dist/commonjs/modular.js.map +1 -0
  7. package/dist/commonjs/namespaced.js +138 -0
  8. package/dist/commonjs/namespaced.js.map +1 -0
  9. package/dist/commonjs/package.json +1 -0
  10. package/dist/commonjs/types/crashlytics.js +47 -0
  11. package/dist/commonjs/types/crashlytics.js.map +1 -0
  12. package/dist/commonjs/version.js +9 -0
  13. package/dist/commonjs/version.js.map +1 -0
  14. package/{lib → dist/module}/handlers.js +39 -36
  15. package/dist/module/handlers.js.map +1 -0
  16. package/{ios/RNFBCrashlytics/RNFBCrashlyticsModule.h → dist/module/index.js} +10 -6
  17. package/dist/module/index.js.map +1 -0
  18. package/{lib/modular/index.js → dist/module/modular.js} +37 -43
  19. package/dist/module/modular.js.map +1 -0
  20. package/dist/module/namespaced.js +135 -0
  21. package/dist/module/namespaced.js.map +1 -0
  22. package/dist/module/package.json +1 -0
  23. package/dist/module/types/crashlytics.js +43 -0
  24. package/dist/module/types/crashlytics.js.map +1 -0
  25. package/dist/module/version.js +5 -0
  26. package/dist/module/version.js.map +1 -0
  27. package/dist/typescript/commonjs/lib/handlers.d.ts +28 -0
  28. package/dist/typescript/commonjs/lib/handlers.d.ts.map +1 -0
  29. package/dist/typescript/commonjs/lib/index.d.ts +5 -0
  30. package/dist/typescript/commonjs/lib/index.d.ts.map +1 -0
  31. package/{lib/modular/index.d.ts → dist/typescript/commonjs/lib/modular.d.ts} +37 -40
  32. package/dist/typescript/commonjs/lib/modular.d.ts.map +1 -0
  33. package/dist/typescript/commonjs/lib/namespaced.d.ts +12 -0
  34. package/dist/typescript/commonjs/lib/namespaced.d.ts.map +1 -0
  35. package/dist/typescript/commonjs/lib/types/crashlytics.d.ts +117 -0
  36. package/dist/typescript/commonjs/lib/types/crashlytics.d.ts.map +1 -0
  37. package/dist/typescript/commonjs/lib/version.d.ts +2 -0
  38. package/dist/typescript/commonjs/lib/version.d.ts.map +1 -0
  39. package/dist/typescript/commonjs/package.json +1 -0
  40. package/dist/typescript/module/lib/handlers.d.ts +28 -0
  41. package/dist/typescript/module/lib/handlers.d.ts.map +1 -0
  42. package/dist/typescript/module/lib/index.d.ts +5 -0
  43. package/dist/typescript/module/lib/index.d.ts.map +1 -0
  44. package/dist/typescript/module/lib/modular.d.ts +193 -0
  45. package/dist/typescript/module/lib/modular.d.ts.map +1 -0
  46. package/dist/typescript/module/lib/namespaced.d.ts +12 -0
  47. package/dist/typescript/module/lib/namespaced.d.ts.map +1 -0
  48. package/dist/typescript/module/lib/types/crashlytics.d.ts +117 -0
  49. package/dist/typescript/module/lib/types/crashlytics.d.ts.map +1 -0
  50. package/dist/typescript/module/lib/version.d.ts +2 -0
  51. package/dist/typescript/module/lib/version.d.ts.map +1 -0
  52. package/dist/typescript/module/package.json +1 -0
  53. package/lib/handlers.ts +196 -0
  54. package/{ios/RNFBCrashlytics/RNFBCrashlyticsNativeHelper.h → lib/index.ts} +8 -11
  55. package/lib/modular.ts +249 -0
  56. package/lib/{index.js → namespaced.ts} +51 -22
  57. package/lib/types/crashlytics.ts +159 -0
  58. package/lib/version.ts +2 -0
  59. package/package.json +60 -8
  60. package/tsconfig.json +21 -0
  61. package/CHANGELOG.md +0 -1136
  62. package/RNFBCrashlytics.podspec +0 -54
  63. package/android/.editorconfig +0 -10
  64. package/android/build.gradle +0 -102
  65. package/android/lint.xml +0 -5
  66. package/android/settings.gradle +0 -1
  67. package/android/src/main/AndroidManifest.xml +0 -15
  68. package/android/src/main/java/io/invertase/firebase/crashlytics/Constants.java +0 -29
  69. package/android/src/main/java/io/invertase/firebase/crashlytics/JavaScriptError.java +0 -28
  70. package/android/src/main/java/io/invertase/firebase/crashlytics/ReactNativeFirebaseCrashlyticsInitProvider.java +0 -130
  71. package/android/src/main/java/io/invertase/firebase/crashlytics/ReactNativeFirebaseCrashlyticsModule.java +0 -223
  72. package/android/src/main/java/io/invertase/firebase/crashlytics/ReactNativeFirebaseCrashlyticsNativeHelper.java +0 -18
  73. package/android/src/main/java/io/invertase/firebase/crashlytics/ReactNativeFirebaseCrashlyticsPackage.java +0 -41
  74. package/android/src/main/java/io/invertase/firebase/crashlytics/UnhandledPromiseRejection.java +0 -28
  75. package/app.plugin.js +0 -1
  76. package/ios/RNFBCrashlytics/RNFBCrashlyticsInitProvider.h +0 -33
  77. package/ios/RNFBCrashlytics/RNFBCrashlyticsInitProvider.m +0 -142
  78. package/ios/RNFBCrashlytics/RNFBCrashlyticsModule.m +0 -248
  79. package/ios/RNFBCrashlytics/RNFBCrashlyticsNativeHelper.m +0 -36
  80. package/ios/RNFBCrashlytics.xcodeproj/project.pbxproj +0 -359
  81. package/ios/RNFBCrashlytics.xcodeproj/xcshareddata/IDETemplateMacros.plist +0 -24
  82. package/ios_config.sh +0 -25
  83. package/lib/index.d.ts +0 -287
  84. package/lib/version.js +0 -2
  85. package/plugin/build/android/applyPlugin.d.ts +0 -6
  86. package/plugin/build/android/applyPlugin.js +0 -28
  87. package/plugin/build/android/buildscriptDependency.d.ts +0 -6
  88. package/plugin/build/android/buildscriptDependency.js +0 -29
  89. package/plugin/build/android/constants.d.ts +0 -3
  90. package/plugin/build/android/constants.js +0 -7
  91. package/plugin/build/android/index.d.ts +0 -3
  92. package/plugin/build/android/index.js +0 -7
  93. package/plugin/build/index.d.ts +0 -3
  94. package/plugin/build/index.js +0 -12
  95. package/plugin/tsconfig.tsbuildinfo +0 -1
  96. package/react-native.config.js +0 -35
@@ -1,54 +0,0 @@
1
- require 'json'
2
- package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
3
- appPackage = JSON.parse(File.read(File.join('..', 'app', 'package.json')))
4
-
5
- # Firebase SDK Override
6
- coreVersionDetected = appPackage['version']
7
- coreVersionRequired = package['peerDependencies'][appPackage['name']]
8
- firebase_sdk_version = appPackage['sdkVersions']['ios']['firebase']
9
- if coreVersionDetected != coreVersionRequired
10
- Pod::UI.warn "NPM package '#{package['name']}' depends on '#{appPackage['name']}' v#{coreVersionRequired} but found v#{coreVersionDetected}, this might cause build issues or runtime crashes."
11
- end
12
- firebase_ios_target = appPackage['sdkVersions']['ios']['iosTarget']
13
- firebase_macos_target = appPackage['sdkVersions']['ios']['macosTarget']
14
- firebase_tvos_target = appPackage['sdkVersions']['ios']['tvosTarget']
15
- firebase_sdk_version = appPackage['sdkVersions']['ios']['firebase']
16
-
17
- Pod::Spec.new do |s|
18
- s.name = "RNFBCrashlytics"
19
- s.version = package["version"]
20
- s.description = package["description"]
21
- s.summary = <<-DESC
22
- A well tested feature rich Firebase implementation for React Native, supporting iOS & Android.
23
- DESC
24
- s.homepage = "http://invertase.io/oss/react-native-firebase"
25
- s.license = package['license']
26
- s.authors = "Invertase Limited"
27
- s.source = { :git => "https://github.com/invertase/react-native-firebase.git", :tag => "v#{s.version}" }
28
- s.social_media_url = 'http://twitter.com/invertaseio'
29
- s.ios.deployment_target = firebase_ios_target
30
- s.macos.deployment_target = firebase_macos_target
31
- s.tvos.deployment_target = firebase_tvos_target
32
- s.source_files = 'ios/**/*.{h,m}'
33
-
34
- # React Native dependencies
35
- s.dependency 'React-Core'
36
- s.dependency 'RNFBApp'
37
-
38
- if defined?($FirebaseSDKVersion)
39
- Pod::UI.puts "#{s.name}: Using user specified Firebase SDK version '#{$FirebaseSDKVersion}'"
40
- firebase_sdk_version = $FirebaseSDKVersion
41
- end
42
-
43
- # Firebase dependencies
44
- s.dependency 'Firebase/Crashlytics', firebase_sdk_version
45
- s.dependency 'FirebaseCoreExtension'
46
-
47
- if defined?($RNFirebaseAsStaticFramework)
48
- Pod::UI.puts "#{s.name}: Using overridden static_framework value of '#{$RNFirebaseAsStaticFramework}'"
49
- s.static_framework = $RNFirebaseAsStaticFramework
50
- else
51
- s.static_framework = false
52
- end
53
-
54
- end
@@ -1,10 +0,0 @@
1
- # editorconfig
2
- root = true
3
-
4
- [*]
5
- indent_style = space
6
- indent_size = 2
7
- end_of_line = lf
8
- charset = utf-8
9
- trim_trailing_whitespace = true
10
- insert_final_newline = true
@@ -1,102 +0,0 @@
1
- import com.android.Version
2
- import io.invertase.gradle.common.PackageJson
3
-
4
- buildscript {
5
- // The Android Gradle plugin is only required when opening the android folder stand-alone.
6
- // This avoids unnecessary downloads and potential conflicts when the library is included as a
7
- // module dependency in an application project.
8
- if (project == rootProject) {
9
- repositories {
10
- google()
11
- mavenCentral()
12
- }
13
-
14
- dependencies {
15
- classpath("com.android.tools.build:gradle:8.4.0")
16
- }
17
- }
18
- }
19
-
20
- plugins {
21
- id "io.invertase.gradle.build" version "1.5"
22
- }
23
-
24
- def appProject
25
- if (findProject(':@react-native-firebase_app')) {
26
- appProject = project(':@react-native-firebase_app')
27
- } else if (findProject(':react-native-firebase_app')) {
28
- appProject = project(':react-native-firebase_app')
29
- } else {
30
- throw new GradleException('Could not find the react-native-firebase/app package, have you installed it?')
31
- }
32
- def packageJson = PackageJson.getForProject(project)
33
- def appPackageJson = PackageJson.getForProject(appProject)
34
- def firebaseBomVersion = appPackageJson['sdkVersions']['android']['firebase']
35
- def jsonMinSdk = appPackageJson['sdkVersions']['android']['minSdk']
36
- def jsonTargetSdk = appPackageJson['sdkVersions']['android']['targetSdk']
37
- def jsonCompileSdk = appPackageJson['sdkVersions']['android']['compileSdk']
38
- def coreVersionDetected = appPackageJson['version']
39
- def coreVersionRequired = packageJson['peerDependencies'][appPackageJson['name']]
40
- if (coreVersionDetected != coreVersionRequired) {
41
- project.logger.warn("ReactNativeFirebase WARNING: NPM package '${packageJson['name']}' depends on '${appPackageJson['name']}' v${coreVersionRequired} but found v${coreVersionDetected}, this might cause build issues or runtime crashes.")
42
- }
43
-
44
- project.ext {
45
- set('react-native', [
46
- versions: [
47
- android : [
48
- minSdk : jsonMinSdk,
49
- targetSdk : jsonTargetSdk,
50
- compileSdk: jsonCompileSdk,
51
- ],
52
-
53
- firebase: [
54
- bom: firebaseBomVersion,
55
- ],
56
- ],
57
- ])
58
- }
59
-
60
- android {
61
- def agpVersion = Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0].toInteger()
62
- if (agpVersion >= 7) {
63
- namespace = 'io.invertase.firebase.crashlytics'
64
- }
65
-
66
- defaultConfig {
67
- multiDexEnabled = true
68
- }
69
-
70
- buildFeatures {
71
- // AGP 8 no longer builds config by default
72
- buildConfig = true
73
- }
74
-
75
- lintOptions {
76
- disable 'GradleCompatible'
77
- abortOnError = false
78
- }
79
- if (agpVersion < 8) {
80
- compileOptions {
81
- sourceCompatibility = JavaVersion.VERSION_11
82
- targetCompatibility = JavaVersion.VERSION_11
83
- }
84
- }
85
- }
86
-
87
- repositories {
88
- google()
89
- mavenCentral()
90
- }
91
-
92
- dependencies {
93
- api appProject
94
- implementation platform("com.google.firebase:firebase-bom:${ReactNative.ext.getVersion("firebase", "bom")}")
95
- implementation "com.google.firebase:firebase-crashlytics"
96
- implementation "com.google.firebase:firebase-crashlytics-ndk"
97
- }
98
-
99
- ReactNative.shared.applyPackageVersion()
100
- ReactNative.shared.applyDefaultExcludes()
101
- ReactNative.module.applyAndroidVersions()
102
- ReactNative.module.applyReactNativeDependency("api")
package/android/lint.xml DELETED
@@ -1,5 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <lint>
3
- <!-- Disable the given check in this project -->
4
- <issue id="GradleCompatible" severity="ignore" />
5
- </lint>
@@ -1 +0,0 @@
1
- rootProject.name = '@react-native-firebase_crashlytics'
@@ -1,15 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
- package="io.invertase.firebase.crashlytics">
4
- <application>
5
- <!-- Disable crashlytics by default so we can custom init with CrashlyticsNdk support -->
6
- <meta-data
7
- android:name="firebase_crashlytics_collection_enabled"
8
- android:value="false" />
9
- <provider
10
- android:name="io.invertase.firebase.crashlytics.ReactNativeFirebaseCrashlyticsInitProvider"
11
- android:authorities="${applicationId}.reactnativefirebasecrashlyticsinitprovider"
12
- android:exported="false"
13
- android:initOrder="98" /> <!-- Firebase = 100, ReactNativeFirebase = 99, runs after both (highest first) -->
14
- </application>
15
- </manifest>
@@ -1,29 +0,0 @@
1
- package io.invertase.firebase.crashlytics;
2
-
3
- /*
4
- * Copyright (c) 2016-present Invertase Limited & Contributors
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this library except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- *
18
- */
19
-
20
- class Constants {
21
- static final String KEY_CRASHLYTICS_NDK_ENABLED = "crashlytics_ndk_enabled";
22
- static final String KEY_CRASHLYTICS_DEBUG_ENABLED = "crashlytics_debug_enabled";
23
- static final String KEY_CRASHLYTICS_AUTO_COLLECTION_ENABLED =
24
- "crashlytics_auto_collection_enabled";
25
- static final String KEY_CRASHLYTICS_IS_ERROR_GENERATION_ON_JS_CRASH_ENABLED =
26
- "crashlytics_is_error_generation_on_js_crash_enabled";
27
- static final String KEY_CRASHLYTICS_JAVASCRIPT_EXCEPTION_HANDLER_CHAINING_ENABLED =
28
- "crashlytics_javascript_exception_handler_chaining_enabled";
29
- }
@@ -1,28 +0,0 @@
1
- package io.invertase.firebase.crashlytics;
2
-
3
- /*
4
- * Copyright (c) 2016-present Invertase Limited & Contributors
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this library except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- *
18
- */
19
-
20
- /**
21
- * This class is purely cosmetic - to indicate on the Crashlytics console that it's a JavaScript
22
- * error rather than the generic `java.lang.Exception`.
23
- */
24
- class JavaScriptError extends Exception {
25
- JavaScriptError(String message) {
26
- super(message);
27
- }
28
- }
@@ -1,130 +0,0 @@
1
- package io.invertase.firebase.crashlytics;
2
-
3
- /*
4
- * Copyright (c) 2016-present Invertase Limited & Contributors
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this library except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- *
18
- */
19
-
20
- import static io.invertase.firebase.crashlytics.Constants.*;
21
-
22
- import android.util.Log;
23
- import com.google.firebase.crashlytics.FirebaseCrashlytics;
24
- import io.invertase.firebase.common.ReactNativeFirebaseInitProvider;
25
- import io.invertase.firebase.common.ReactNativeFirebaseJSON;
26
- import io.invertase.firebase.common.ReactNativeFirebaseMeta;
27
- import io.invertase.firebase.common.ReactNativeFirebasePreferences;
28
-
29
- public class ReactNativeFirebaseCrashlyticsInitProvider extends ReactNativeFirebaseInitProvider {
30
- private static final String TAG = "RNFBCrashlyticsInit";
31
-
32
- static boolean isCrashlyticsCollectionEnabled() {
33
- boolean enabled;
34
- ReactNativeFirebaseJSON json = ReactNativeFirebaseJSON.getSharedInstance();
35
- ReactNativeFirebaseMeta meta = ReactNativeFirebaseMeta.getSharedInstance();
36
- ReactNativeFirebasePreferences prefs = ReactNativeFirebasePreferences.getSharedInstance();
37
-
38
- if (prefs.contains(KEY_CRASHLYTICS_AUTO_COLLECTION_ENABLED)) {
39
- enabled = prefs.getBooleanValue(KEY_CRASHLYTICS_AUTO_COLLECTION_ENABLED, true);
40
- Log.d(TAG, "isCrashlyticsCollectionEnabled via RNFBPreferences: " + enabled);
41
- } else if (json.contains(KEY_CRASHLYTICS_AUTO_COLLECTION_ENABLED)) {
42
- enabled = json.getBooleanValue(KEY_CRASHLYTICS_AUTO_COLLECTION_ENABLED, true);
43
- Log.d(TAG, "isCrashlyticsCollectionEnabled via RNFBJSON: " + enabled);
44
- } else {
45
- enabled = meta.getBooleanValue(KEY_CRASHLYTICS_AUTO_COLLECTION_ENABLED, true);
46
- Log.d(TAG, "isCrashlyticsCollectionEnabled via RNFBMeta: " + enabled);
47
- }
48
-
49
- if (BuildConfig.DEBUG) {
50
- if (!json.getBooleanValue(KEY_CRASHLYTICS_DEBUG_ENABLED, false)) {
51
- enabled = false;
52
- }
53
- Log.d(
54
- TAG,
55
- "isCrashlyticsCollectionEnabled after checking "
56
- + KEY_CRASHLYTICS_DEBUG_ENABLED
57
- + ": "
58
- + enabled);
59
- }
60
-
61
- Log.d(TAG, "isCrashlyticsCollectionEnabled final value: " + enabled);
62
- return enabled;
63
- }
64
-
65
- static boolean isErrorGenerationOnJSCrashEnabled() {
66
- boolean enabled;
67
- ReactNativeFirebaseJSON json = ReactNativeFirebaseJSON.getSharedInstance();
68
- ReactNativeFirebaseMeta meta = ReactNativeFirebaseMeta.getSharedInstance();
69
- ReactNativeFirebasePreferences prefs = ReactNativeFirebasePreferences.getSharedInstance();
70
-
71
- if (prefs.contains(KEY_CRASHLYTICS_IS_ERROR_GENERATION_ON_JS_CRASH_ENABLED)) {
72
- enabled =
73
- prefs.getBooleanValue(KEY_CRASHLYTICS_IS_ERROR_GENERATION_ON_JS_CRASH_ENABLED, true);
74
- Log.d(TAG, "isErrorGenerationOnJSCrashEnabled via RNFBPreferences: " + enabled);
75
- } else if (json.contains(KEY_CRASHLYTICS_IS_ERROR_GENERATION_ON_JS_CRASH_ENABLED)) {
76
- enabled = json.getBooleanValue(KEY_CRASHLYTICS_IS_ERROR_GENERATION_ON_JS_CRASH_ENABLED, true);
77
- Log.d(TAG, "isErrorGenerationOnJSCrashEnabled via RNFBJSON: " + enabled);
78
- } else {
79
- enabled = meta.getBooleanValue(KEY_CRASHLYTICS_IS_ERROR_GENERATION_ON_JS_CRASH_ENABLED, true);
80
- Log.d(TAG, "isErrorGenerationOnJSCrashEnabled via RNFBMeta: " + enabled);
81
- }
82
-
83
- Log.d(TAG, "isErrorGenerationOnJSCrashEnabled final value: " + enabled);
84
- return enabled;
85
- }
86
-
87
- static boolean isCrashlyticsJavascriptExceptionHandlerChainingEnabled() {
88
- boolean enabled;
89
- ReactNativeFirebaseJSON json = ReactNativeFirebaseJSON.getSharedInstance();
90
- ReactNativeFirebaseMeta meta = ReactNativeFirebaseMeta.getSharedInstance();
91
- ReactNativeFirebasePreferences prefs = ReactNativeFirebasePreferences.getSharedInstance();
92
-
93
- if (prefs.contains(KEY_CRASHLYTICS_JAVASCRIPT_EXCEPTION_HANDLER_CHAINING_ENABLED)) {
94
- enabled =
95
- prefs.getBooleanValue(
96
- KEY_CRASHLYTICS_JAVASCRIPT_EXCEPTION_HANDLER_CHAINING_ENABLED, true);
97
- Log.d(
98
- TAG,
99
- "isCrashlyticsJavascriptExceptionHandlerChainingEnabled via RNFBPreferences: " + enabled);
100
- } else if (json.contains(KEY_CRASHLYTICS_JAVASCRIPT_EXCEPTION_HANDLER_CHAINING_ENABLED)) {
101
- enabled =
102
- json.getBooleanValue(KEY_CRASHLYTICS_JAVASCRIPT_EXCEPTION_HANDLER_CHAINING_ENABLED, true);
103
- Log.d(TAG, "isCrashlyticsJavascriptExceptionHandlerChainingEnabled via RNFBJSON: " + enabled);
104
- } else {
105
- enabled =
106
- meta.getBooleanValue(KEY_CRASHLYTICS_JAVASCRIPT_EXCEPTION_HANDLER_CHAINING_ENABLED, true);
107
- Log.d(TAG, "isCrashlyticsJavascriptExceptionHandlerChainingEnabled via RNFBMeta: " + enabled);
108
- }
109
-
110
- Log.d(TAG, "isCrashlyticsJavascriptExceptionHandlerChainingEnabled final value: " + enabled);
111
- return enabled;
112
- }
113
-
114
- @Override
115
- public boolean onCreate() {
116
- super.onCreate();
117
-
118
- try {
119
- FirebaseCrashlytics.getInstance()
120
- .setCrashlyticsCollectionEnabled(
121
- ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled());
122
- Log.i(TAG, "initialization successful");
123
- } catch (Exception exception) {
124
- Log.e(TAG, "initialization failed", exception);
125
- return false;
126
- }
127
-
128
- return true;
129
- }
130
- }
@@ -1,223 +0,0 @@
1
- package io.invertase.firebase.crashlytics;
2
-
3
- /*
4
- * Copyright (c) 2016-present Invertase Limited & Contributors
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this library except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- *
18
- */
19
-
20
- import android.os.Handler;
21
- import android.util.Log;
22
- import com.facebook.react.bridge.*;
23
- import com.google.firebase.crashlytics.FirebaseCrashlytics;
24
- import io.invertase.firebase.common.ReactNativeFirebaseModule;
25
- import io.invertase.firebase.common.ReactNativeFirebasePreferences;
26
- import java.util.HashMap;
27
- import java.util.Map;
28
- import java.util.Objects;
29
-
30
- public class ReactNativeFirebaseCrashlyticsModule extends ReactNativeFirebaseModule {
31
- private static final String TAG = "Crashlytics";
32
-
33
- ReactNativeFirebaseCrashlyticsModule(ReactApplicationContext reactContext) {
34
- super(reactContext, TAG);
35
- }
36
-
37
- @ReactMethod
38
- public void checkForUnsentReports(Promise promise) {
39
- FirebaseCrashlytics.getInstance()
40
- .checkForUnsentReports()
41
- .addOnCompleteListener(
42
- task -> {
43
- if (task.isSuccessful()) {
44
- if (task.getResult() != null) {
45
- promise.resolve(task.getResult());
46
- } else {
47
- rejectPromiseWithCodeAndMessage(
48
- promise, "unknown", "Unknown result of check for unsent reports");
49
- }
50
-
51
- } else {
52
- String message =
53
- task.getException() != null
54
- ? task.getException().getMessage()
55
- : "checkForUnsentReports() request error";
56
- rejectPromiseWithCodeAndMessage(promise, "unknown", message);
57
- }
58
- });
59
- }
60
-
61
- @ReactMethod
62
- public void crashWithStackPromise(ReadableMap jsErrorMap, Promise promise) {
63
- if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
64
- Exception e = recordJavaScriptError(jsErrorMap);
65
- e.printStackTrace(System.err);
66
- Log.e(TAG, "Crash logged. Terminating app.");
67
- System.exit(0);
68
- } else {
69
- Log.i(TAG, "crashlytics collection is not enabled, not crashing.");
70
- }
71
- promise.resolve(null);
72
- }
73
-
74
- @ReactMethod
75
- public void crash() {
76
- if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
77
- // async task so as not to get caught by the React Native redbox handler in debug
78
- new Handler()
79
- .postDelayed(
80
- new Runnable() {
81
- @Override
82
- public void run() {
83
- throw new RuntimeException("Crash Test");
84
- }
85
- },
86
- 50);
87
- } else {
88
- Log.i(TAG, "crashlytics collection is not enabled, not crashing.");
89
- }
90
- }
91
-
92
- @ReactMethod
93
- public void deleteUnsentReports() {
94
- FirebaseCrashlytics.getInstance().deleteUnsentReports();
95
- }
96
-
97
- @ReactMethod
98
- public void didCrashOnPreviousExecution(Promise promise) {
99
- promise.resolve(FirebaseCrashlytics.getInstance().didCrashOnPreviousExecution());
100
- }
101
-
102
- @ReactMethod
103
- public void log(String message) {
104
- if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
105
- FirebaseCrashlytics.getInstance().log(message);
106
- }
107
- }
108
-
109
- // For internal use only.
110
- @ReactMethod
111
- public void logPromise(String message, Promise promise) {
112
- if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
113
- FirebaseCrashlytics.getInstance().log(message);
114
- }
115
- promise.resolve(null);
116
- }
117
-
118
- @ReactMethod
119
- public void setAttribute(String key, String value, Promise promise) {
120
- if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
121
- FirebaseCrashlytics.getInstance().setCustomKey(key, value);
122
- }
123
- promise.resolve(null);
124
- }
125
-
126
- @ReactMethod
127
- public void setAttributes(ReadableMap keyValuesMap, Promise promise) {
128
- if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
129
- ReadableMapKeySetIterator iterator = keyValuesMap.keySetIterator();
130
- FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();
131
-
132
- while (iterator.hasNextKey()) {
133
- String key = iterator.nextKey();
134
- String value = keyValuesMap.getString(key);
135
- crashlytics.setCustomKey(key, value);
136
- }
137
- }
138
-
139
- promise.resolve(null);
140
- }
141
-
142
- @ReactMethod
143
- public void sendUnsentReports() {
144
- FirebaseCrashlytics.getInstance().sendUnsentReports();
145
- }
146
-
147
- @ReactMethod
148
- public void setUserId(String userId, Promise promise) {
149
- if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
150
- FirebaseCrashlytics.getInstance().setUserId(userId);
151
- }
152
- promise.resolve(null);
153
- }
154
-
155
- @ReactMethod
156
- public void setCrashlyticsCollectionEnabled(Boolean enabled, Promise promise) {
157
- ReactNativeFirebasePreferences.getSharedInstance()
158
- .setBooleanValue(Constants.KEY_CRASHLYTICS_AUTO_COLLECTION_ENABLED, enabled);
159
- promise.resolve(null);
160
- }
161
-
162
- @ReactMethod
163
- public void recordError(ReadableMap jsErrorMap) {
164
- if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
165
- recordJavaScriptError(jsErrorMap);
166
- } else {
167
- Log.i(TAG, "crashlytics collection is not enabled, not crashing.");
168
- }
169
- }
170
-
171
- @ReactMethod
172
- public void recordErrorPromise(ReadableMap jsErrorMap, Promise promise) {
173
- if (ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled()) {
174
- recordJavaScriptError(jsErrorMap);
175
- } else {
176
- Log.i(TAG, "crashlytics collection is not enabled, not crashing.");
177
- }
178
- promise.resolve(null);
179
- }
180
-
181
- private Exception recordJavaScriptError(ReadableMap jsErrorMap) {
182
- String message = jsErrorMap.getString("message");
183
- ReadableArray stackFrames = Objects.requireNonNull(jsErrorMap.getArray("frames"));
184
- boolean isUnhandledPromiseRejection = jsErrorMap.getBoolean("isUnhandledRejection");
185
-
186
- Exception customException;
187
- if (isUnhandledPromiseRejection) {
188
- customException = new UnhandledPromiseRejection(message);
189
- } else {
190
- customException = new JavaScriptError(message);
191
- }
192
-
193
- StackTraceElement[] stackTraceElements = new StackTraceElement[stackFrames.size()];
194
-
195
- for (int i = 0; i < stackFrames.size(); i++) {
196
- ReadableMap stackFrame = Objects.requireNonNull(stackFrames.getMap(i));
197
- String fn = stackFrame.getString("fn");
198
- String file = stackFrame.getString("file");
199
- stackTraceElements[i] = new StackTraceElement("", fn, file, -1);
200
- }
201
-
202
- customException.setStackTrace(stackTraceElements);
203
-
204
- FirebaseCrashlytics.getInstance().recordException(customException);
205
- return customException;
206
- }
207
-
208
- @Override
209
- public Map<String, Object> getConstants() {
210
- final Map<String, Object> constants = new HashMap<>();
211
- constants.put(
212
- "isCrashlyticsCollectionEnabled",
213
- ReactNativeFirebaseCrashlyticsInitProvider.isCrashlyticsCollectionEnabled());
214
- constants.put(
215
- "isErrorGenerationOnJSCrashEnabled",
216
- ReactNativeFirebaseCrashlyticsInitProvider.isErrorGenerationOnJSCrashEnabled());
217
- constants.put(
218
- "isCrashlyticsJavascriptExceptionHandlerChainingEnabled",
219
- ReactNativeFirebaseCrashlyticsInitProvider
220
- .isCrashlyticsJavascriptExceptionHandlerChainingEnabled());
221
- return constants;
222
- }
223
- }
@@ -1,18 +0,0 @@
1
- package io.invertase.firebase.crashlytics;
2
-
3
- import com.google.firebase.crashlytics.FirebaseCrashlytics;
4
-
5
- public class ReactNativeFirebaseCrashlyticsNativeHelper {
6
-
7
- public static void recordNativeException(Throwable throwable) {
8
- FirebaseCrashlytics.getInstance().recordException(throwable);
9
- }
10
-
11
- public static void log(String message) {
12
- FirebaseCrashlytics.getInstance().log(message);
13
- }
14
-
15
- public static void setCustomKey(String key, String value) {
16
- FirebaseCrashlytics.getInstance().setCustomKey(key, value);
17
- }
18
- }
@@ -1,41 +0,0 @@
1
- package io.invertase.firebase.crashlytics;
2
-
3
- /*
4
- * Copyright (c) 2016-present Invertase Limited & Contributors
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this library except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- *
18
- */
19
-
20
- import com.facebook.react.ReactPackage;
21
- import com.facebook.react.bridge.NativeModule;
22
- import com.facebook.react.bridge.ReactApplicationContext;
23
- import com.facebook.react.uimanager.ViewManager;
24
- import java.util.ArrayList;
25
- import java.util.Collections;
26
- import java.util.List;
27
-
28
- @SuppressWarnings("unused")
29
- public class ReactNativeFirebaseCrashlyticsPackage implements ReactPackage {
30
- @Override
31
- public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
32
- List<NativeModule> modules = new ArrayList<>();
33
- modules.add(new ReactNativeFirebaseCrashlyticsModule(reactContext));
34
- return modules;
35
- }
36
-
37
- @Override
38
- public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
39
- return Collections.emptyList();
40
- }
41
- }