mirror of
https://github.com/zhigang1992/react-native-firebase.git
synced 2026-05-28 06:55:31 +08:00
[crashlytics] Fixes: #1643, #1848, #1964, #1920, #1884, #1783, #1966, #1940, #1447 Features/Bugs Todo: Capture JS Exceptions with stack traces automatically Capture Unhandled Promise Rejections with stack traces automatically [Android] .crash() not captured in debug due to RN RedBox; see #1921 Support advanced user identifier features [Android] Enable Crashlyics NDK reporting by default (gist) Support toggling native crash logging off/on (e.g. disable in DEV) Support toggling JS crash logging off/on (e.g. disable in DEV) [ios] Static framework support for all modules [ios] Implement CocoaPods Firebase RN modules auto-loader script Implement firebase.json config loader; Android & iOS [tests] Fix false positive tests that catch errors (tests did not check that errors actually threw) [android] Cleanup manifest permissions for all modules [android] Implement Content provider base class [android] Investigate/fix issue where setDataCollectionDefaultEnabled is false by default in Firebase - it disables Crashlytics reporting
64 lines
1.5 KiB
JavaScript
64 lines
1.5 KiB
JavaScript
/*
|
|
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this library except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
*/
|
|
import { Platform } from 'react-native';
|
|
|
|
export * from './validate';
|
|
|
|
export function promiseDefer() {
|
|
const deferred = {
|
|
resolve: null,
|
|
reject: null,
|
|
};
|
|
|
|
deferred.promise = new Promise((resolve, reject) => {
|
|
deferred.resolve = resolve;
|
|
deferred.reject = reject;
|
|
});
|
|
|
|
return deferred;
|
|
}
|
|
|
|
export function once(fn, context) {
|
|
let onceResult;
|
|
let ranOnce = false;
|
|
|
|
return function onceInner(...args) {
|
|
if (!ranOnce) {
|
|
ranOnce = true;
|
|
onceResult = fn.apply(context || this, args);
|
|
}
|
|
|
|
return onceResult;
|
|
};
|
|
}
|
|
|
|
export function isError(value) {
|
|
if (Object.prototype.toString.call(value) === '[object Error]') {
|
|
return true;
|
|
}
|
|
|
|
return value instanceof Error;
|
|
}
|
|
|
|
export function hasOwnProperty(target, property) {
|
|
return Object.hasOwnProperty.call(target, property);
|
|
}
|
|
|
|
export const isIOS = Platform.OS === 'ios';
|
|
|
|
export const isAndroid = Platform.OS === 'android';
|