bugsnag/bugsnag-js

View on GitHub
packages/plugin-react-native-event-sync/event-sync.js

Summary

Maintainability
A
0 mins
Test Coverage
module.exports = (NativeClient) => ({
  load: (client) => {
    const isTurboModuleEnabled = global.__turboModuleProxy != null

    if (isTurboModuleEnabled) {
      client.addOnError(event => {
        const payloadInfo = NativeClient.getPayloadInfo({ unhandled: event.unhandled })
        syncEvent(payloadInfo, event)
      }, true)
    } else {
      client.addOnError(async event => {
        const payloadInfo = await NativeClient.getPayloadInfoAsync({ unhandled: event.unhandled })
        syncEvent(payloadInfo, event)
      }, true)
    }
  }
})

const syncEvent = (payloadInfo, event) => {
  const {
    threads,
    breadcrumbs,
    app,
    device,
    deviceMetadata,
    appMetadata
  } = payloadInfo

  event.breadcrumbs = breadcrumbs
  event.app = { ...event.app, ...app }
  event.device = { ...event.device, ...device }
  event.threads = threads
  event.addMetadata('device', deviceMetadata)
  event.addMetadata('app', appMetadata)
}