@react-native-firebase/crashlytics 23.6.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.
- package/dist/commonjs/handlers.js +175 -0
- package/dist/commonjs/handlers.js.map +1 -0
- package/dist/commonjs/index.js +38 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/modular.js +256 -0
- package/dist/commonjs/modular.js.map +1 -0
- package/dist/commonjs/namespaced.js +138 -0
- package/dist/commonjs/namespaced.js.map +1 -0
- package/dist/commonjs/package.json +1 -0
- package/dist/commonjs/types/crashlytics.js +47 -0
- package/dist/commonjs/types/crashlytics.js.map +1 -0
- package/dist/commonjs/version.js +9 -0
- package/dist/commonjs/version.js.map +1 -0
- package/{lib → dist/module}/handlers.js +39 -36
- package/dist/module/handlers.js.map +1 -0
- package/{ios/RNFBCrashlytics/RNFBCrashlyticsModule.h → dist/module/index.js} +10 -6
- package/dist/module/index.js.map +1 -0
- package/{lib/modular/index.js → dist/module/modular.js} +37 -43
- package/dist/module/modular.js.map +1 -0
- package/dist/module/namespaced.js +135 -0
- package/dist/module/namespaced.js.map +1 -0
- package/dist/module/package.json +1 -0
- package/dist/module/types/crashlytics.js +43 -0
- package/dist/module/types/crashlytics.js.map +1 -0
- package/dist/module/version.js +5 -0
- package/dist/module/version.js.map +1 -0
- package/dist/typescript/commonjs/lib/handlers.d.ts +28 -0
- package/dist/typescript/commonjs/lib/handlers.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/index.d.ts +5 -0
- package/dist/typescript/commonjs/lib/index.d.ts.map +1 -0
- package/{lib/modular/index.d.ts → dist/typescript/commonjs/lib/modular.d.ts} +37 -40
- package/dist/typescript/commonjs/lib/modular.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/namespaced.d.ts +12 -0
- package/dist/typescript/commonjs/lib/namespaced.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/types/crashlytics.d.ts +117 -0
- package/dist/typescript/commonjs/lib/types/crashlytics.d.ts.map +1 -0
- package/dist/typescript/commonjs/lib/version.d.ts +2 -0
- package/dist/typescript/commonjs/lib/version.d.ts.map +1 -0
- package/dist/typescript/commonjs/package.json +1 -0
- package/dist/typescript/module/lib/handlers.d.ts +28 -0
- package/dist/typescript/module/lib/handlers.d.ts.map +1 -0
- package/dist/typescript/module/lib/index.d.ts +5 -0
- package/dist/typescript/module/lib/index.d.ts.map +1 -0
- package/dist/typescript/module/lib/modular.d.ts +193 -0
- package/dist/typescript/module/lib/modular.d.ts.map +1 -0
- package/dist/typescript/module/lib/namespaced.d.ts +12 -0
- package/dist/typescript/module/lib/namespaced.d.ts.map +1 -0
- package/dist/typescript/module/lib/types/crashlytics.d.ts +117 -0
- package/dist/typescript/module/lib/types/crashlytics.d.ts.map +1 -0
- package/dist/typescript/module/lib/version.d.ts +2 -0
- package/dist/typescript/module/lib/version.d.ts.map +1 -0
- package/dist/typescript/module/package.json +1 -0
- package/lib/handlers.ts +196 -0
- package/{ios/RNFBCrashlytics/RNFBCrashlyticsNativeHelper.h → lib/index.ts} +8 -11
- package/lib/modular.ts +249 -0
- package/lib/{index.js → namespaced.ts} +51 -22
- package/lib/types/crashlytics.ts +159 -0
- package/lib/version.ts +2 -0
- package/package.json +60 -8
- package/tsconfig.json +21 -0
- package/CHANGELOG.md +0 -1132
- package/RNFBCrashlytics.podspec +0 -54
- package/android/.editorconfig +0 -10
- package/android/build.gradle +0 -102
- package/android/lint.xml +0 -5
- package/android/settings.gradle +0 -1
- package/android/src/main/AndroidManifest.xml +0 -15
- package/android/src/main/java/io/invertase/firebase/crashlytics/Constants.java +0 -29
- package/android/src/main/java/io/invertase/firebase/crashlytics/JavaScriptError.java +0 -28
- package/android/src/main/java/io/invertase/firebase/crashlytics/ReactNativeFirebaseCrashlyticsInitProvider.java +0 -130
- package/android/src/main/java/io/invertase/firebase/crashlytics/ReactNativeFirebaseCrashlyticsModule.java +0 -223
- package/android/src/main/java/io/invertase/firebase/crashlytics/ReactNativeFirebaseCrashlyticsNativeHelper.java +0 -18
- package/android/src/main/java/io/invertase/firebase/crashlytics/ReactNativeFirebaseCrashlyticsPackage.java +0 -41
- package/android/src/main/java/io/invertase/firebase/crashlytics/UnhandledPromiseRejection.java +0 -28
- package/app.plugin.js +0 -1
- package/ios/RNFBCrashlytics/RNFBCrashlyticsInitProvider.h +0 -33
- package/ios/RNFBCrashlytics/RNFBCrashlyticsInitProvider.m +0 -142
- package/ios/RNFBCrashlytics/RNFBCrashlyticsModule.m +0 -248
- package/ios/RNFBCrashlytics/RNFBCrashlyticsNativeHelper.m +0 -36
- package/ios/RNFBCrashlytics.xcodeproj/project.pbxproj +0 -359
- package/ios/RNFBCrashlytics.xcodeproj/xcshareddata/IDETemplateMacros.plist +0 -24
- package/ios_config.sh +0 -25
- package/lib/index.d.ts +0 -287
- package/lib/version.js +0 -2
- package/plugin/build/android/applyPlugin.d.ts +0 -6
- package/plugin/build/android/applyPlugin.js +0 -28
- package/plugin/build/android/buildscriptDependency.d.ts +0 -6
- package/plugin/build/android/buildscriptDependency.js +0 -29
- package/plugin/build/android/constants.d.ts +0 -3
- package/plugin/build/android/constants.js +0 -7
- package/plugin/build/android/index.d.ts +0 -3
- package/plugin/build/android/index.js +0 -7
- package/plugin/build/index.d.ts +0 -3
- package/plugin/build/index.js +0 -12
- package/plugin/tsconfig.tsbuildinfo +0 -1
- package/react-native.config.js +0 -35
package/RNFBCrashlytics.podspec
DELETED
|
@@ -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
|
package/android/.editorconfig
DELETED
package/android/build.gradle
DELETED
|
@@ -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
package/android/settings.gradle
DELETED
|
@@ -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
|
-
}
|