Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
export function initializeSentry() {
if (!Config.SentryEnabled) {
return;
}
const dsn = getDsn();
if (!dsn) {
console.warn('Sentry is enabled, but not configured on this platform'); // eslint-disable-line no-console
return;
}
Sentry.init({dsn, ...Config.SentryOptions});
}
private handleConsentUpdate(hasConsent: GdprSwitchSetting) {
this.hasConsent = hasConsent
if (hasConsent === false || hasConsent === null) return
if (!this.hasConfigured) {
Sentry.init({ dsn: SENTRY_DSN_URL })
Sentry.setTag(
'environment',
__DEV__ ? 'DEV' : isInBeta() ? 'BETA' : 'RELEASE',
)
Sentry.setExtra('react', true)
this.hasConfigured = true
}
while (this.pendingQueue.length > 0) {
const err = this.pendingQueue.pop()
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
Sentry.captureException(err!)
}
}
private handleConsentUpdate(hasConsent: GdprSwitchSetting) {
this.hasConsent = hasConsent
if (hasConsent === false || hasConsent === null) return
if (!this.hasConfigured) {
Sentry.init({ dsn: SENTRY_DSN_URL })
Sentry.setTag(
'environment',
__DEV__ ? 'DEV' : isInBeta() ? 'BETA' : 'RELEASE',
)
Sentry.setExtra('react', true)
this.hasConfigured = true
}
while (this.pendingQueue.length > 0) {
const err = this.pendingQueue.pop()
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
Sentry.captureException(err!)
}
}
export function initErrorReporting() {
Sentry.init({
dsn: sentryDSN,
release: `${VersionNumber.bundleIdentifier}@${VersionNumber.appVersion}`,
// disable automatic reporting of errors/rejections without user consent
integrations: defaultIntegrations =>
defaultIntegrations.filter(i => i.name !== 'ReactNativeErrorHandlers'),
/**
* @param event
* @dev TODO Decide if event.contexts.app should be stripped
*/
beforeSend: event => {
const { extra, contexts } = event
if (extra && contexts) {
private handleConsentUpdate(hasConsent: GdprSwitchSetting) {
this.hasConsent = hasConsent
if (hasConsent === false || hasConsent === null) return
if (!this.hasConfigured) {
Sentry.init({ dsn: SENTRY_DSN_URL })
Sentry.setTag(
'environment',
__DEV__ ? 'DEV' : isInBeta() ? 'BETA' : 'RELEASE',
)
Sentry.setExtra('react', true)
this.hasConfigured = true
}
while (this.pendingQueue.length > 0) {
const err = this.pendingQueue.pop()
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
Sentry.captureException(err!)
}
}
private handleConsentUpdate(hasConsent: GdprSwitchSetting) {
this.hasConsent = hasConsent
if (hasConsent === false || hasConsent === null) return
if (!this.hasConfigured) {
Sentry.init({ dsn: SENTRY_DSN_URL })
Sentry.setTag(
'environment',
__DEV__ ? 'DEV' : isInBeta() ? 'BETA' : 'RELEASE',
)
Sentry.setExtra('react', true)
this.hasConfigured = true
}
while (this.pendingQueue.length > 0) {
const err = this.pendingQueue.pop()
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
Sentry.captureException(err!)
}
}
}
if (obj.status_code) {
breadcrumb.data.status_code = obj.status_code;
}
if (obj.url) {
const match = (/^(?:https?:\/\/)[^/]+(\/.*)$/);
if (match && match.length >= 2) {
breadcrumb.data.url = match[1];
}
}
try {
Sentry.addBreadcrumb(breadcrumb);
} catch (e) {
// Do nothing since this is only here to make sure we don't crash when handling an exception
console.warn('Failed to capture breadcrumb of non-error', e); // eslint-disable-line no-console
}
}
if (Platform.OS !== 'ios')
return
while (true) {
// Wait until we get ANY event
const { type, payload } = yield take()
if (type.startsWith('rrf') || type.startsWith('@'))
continue
if (filter[type])
filter[type].forEach(path =>
recursiveReplacer(path.split(/\./), payload)
)
Sentry.addBreadcrumb({
category: 'redux',
message: type,
level: type.match(/ERROR/) ? Sentry.Severity.Warning : Sentry.Severity.Info,
...(payload ?
{data: typeof payload === 'object' ? payload : {payload}} :
{}
)
})
}
}
onError = (evt) => {
const { source } = this.state;
const { nativeEvent: { error } } = evt;
Sentry.addBreadcrumb({
message: 'Image not loading',
data: {
url: source.uri,
error,
},
});
Sentry.captureMessage('Cannot load sat imagery', 'warning');
console.log(error);
// eslint-disable-next-line global-require
this.setState({ source: require('../../../assets/noImageAvailable.png') });
}
private handleConsentUpdate(hasConsent: GdprSwitchSetting) {
this.hasConsent = hasConsent
if (hasConsent === false || hasConsent === null) return
if (!this.hasConfigured) {
Sentry.init({ dsn: SENTRY_DSN_URL })
Sentry.setTag(
'environment',
__DEV__ ? 'DEV' : isInBeta() ? 'BETA' : 'RELEASE',
)
Sentry.setExtra('react', true)
this.hasConfigured = true
}
while (this.pendingQueue.length > 0) {
const err = this.pendingQueue.pop()
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
Sentry.captureException(err!)
}
}