@eslam-elmeniawy/react-native-common-components
Version:
Common `ReactNative` components packed in library for usage in projects.
141 lines (137 loc) • 4.34 kB
JavaScript
;
// External imports.
import reactotron from 'reactotron-react-native';
// Types imports.
let firebaseLogLevels = [];
let isLocalLogEnable = false;
let originalInfo;
let originalLog;
let originalWarn;
let originalError;
const configureReactotron = options => {
const {
appName,
clientOptions,
pluginCreators
} = options ?? {};
const {
name,
...restClientOptions
} = clientOptions ?? {};
reactotron.configure({
name: name ?? appName,
...restClientOptions
});
pluginCreators?.forEach(pluginCreator => reactotron.use(pluginCreator));
reactotron.useReactNative().connect();
// Clear log on start.
reactotron.clear?.();
};
const info = (message, ...optionalParams) => {
const tag = 'INFO';
if (firebaseLogLevels.includes(tag)) {
try {
require('@react-native-firebase/app');
const getCrashlytics = require('@react-native-firebase/crashlytics').getCrashlytics;
const crashlyticsLog = require('@react-native-firebase/crashlytics').log;
crashlyticsLog(getCrashlytics(), `## ${tag} ## Message: ${message} ## Data: ${JSON.stringify(optionalParams)}`);
} catch (e) {}
}
if (isLocalLogEnable) {
originalInfo?.(message, ...optionalParams);
reactotron.display({
name: tag,
preview: typeof message === 'string' ? message : JSON.stringify(message),
value: {
message,
optionalParams
}
});
}
};
const log = (message, ...optionalParams) => {
const tag = 'LOG';
if (firebaseLogLevels.includes(tag)) {
try {
require('@react-native-firebase/app');
const getCrashlytics = require('@react-native-firebase/crashlytics').getCrashlytics;
const crashlyticsLog = require('@react-native-firebase/crashlytics').log;
crashlyticsLog(getCrashlytics(), `## ${tag} ## Message: ${message} ## Data: ${JSON.stringify(optionalParams)}`);
} catch (e) {}
}
if (isLocalLogEnable) {
originalLog?.(message, ...optionalParams);
reactotron.display({
name: tag,
preview: typeof message === 'string' ? message : JSON.stringify(message),
value: {
message,
optionalParams
}
});
}
};
const warn = (message, ...optionalParams) => {
const tag = 'WARN';
if (firebaseLogLevels.includes(tag)) {
try {
require('@react-native-firebase/app');
const getCrashlytics = require('@react-native-firebase/crashlytics').getCrashlytics;
const crashlyticsLog = require('@react-native-firebase/crashlytics').log;
crashlyticsLog(getCrashlytics(), `## ${tag} ## Message: ${message} ## Data: ${JSON.stringify(optionalParams)}`);
} catch (e) {}
}
if (isLocalLogEnable) {
originalWarn?.(message, ...optionalParams);
reactotron.display({
name: tag,
preview: typeof message === 'string' ? message : JSON.stringify(message),
value: {
message,
optionalParams
},
important: true
});
}
};
const error = (message, ...optionalParams) => {
const tag = 'ERROR';
if (firebaseLogLevels.includes(tag)) {
try {
require('@react-native-firebase/app');
const getCrashlytics = require('@react-native-firebase/crashlytics').getCrashlytics;
const crashlyticsRecordError = require('@react-native-firebase/crashlytics').recordError;
crashlyticsRecordError(getCrashlytics(), new Error(`## ${tag} ## Message: ${message} ## Data: ${JSON.stringify(optionalParams)}`));
} catch (e) {}
}
if (isLocalLogEnable) {
originalError?.(message, ...optionalParams);
reactotron.display({
name: tag,
preview: typeof message === 'string' ? message : JSON.stringify(message),
value: {
message,
optionalParams
},
important: true
});
}
};
const connectConsoleToReactotron = () => {
originalInfo = console.info;
originalLog = console.log;
originalWarn = console.warn;
originalError = console.error;
console.info = info;
console.log = log;
console.warn = warn;
console.error = error;
};
export const configureLog = !reactotron ? undefined : options => {
firebaseLogLevels = options?.firebaseLogLevels ?? [];
isLocalLogEnable = options?.isLocalLogEnable ?? false;
configureReactotron(options);
connectConsoleToReactotron();
return reactotron;
};
//# sourceMappingURL=LogConfig.js.map