bugsnag/bugsnag-js

View on GitHub
packages/plugin-electron-ipc/bugsnag-ipc-renderer.js

Summary

Maintainability
A
0 mins
Test Coverage
const { ipcRenderer } = require('electron')
const jsonStringify = require('@bugsnag/safe-json-stringify')
const { CHANNEL_RENDERER_TO_MAIN, CHANNEL_RENDERER_TO_MAIN_SYNC } = require('./lib/constants')

const safeInvoke = (runSynchronous, method, ...args) => {
  const bridge = runSynchronous ? 'sendSync' : 'invoke'
  const channel = runSynchronous ? CHANNEL_RENDERER_TO_MAIN_SYNC : CHANNEL_RENDERER_TO_MAIN
  return ipcRenderer[bridge](channel, method, ...args.map(arg => jsonStringify(arg)))
}

const BugsnagIpcRenderer = {
  // these static values are populated by preload.js
  config: null,
  process: null,

  update ({ context, user, metadata, features }) {
    return safeInvoke(false, 'update', { context, user, metadata, features })
  },

  getContext () {
    return safeInvoke(true, 'getContext')
  },

  setContext (context) {
    return safeInvoke(false, 'setContext', context)
  },

  addMetadata (...args) {
    return safeInvoke(false, 'addMetadata', ...args)
  },

  clearMetadata (...args) {
    return safeInvoke(false, 'clearMetadata', ...args)
  },

  getMetadata (...args) {
    return safeInvoke(true, 'getMetadata', ...args)
  },

  addFeatureFlag (...args) {
    return safeInvoke(false, 'addFeatureFlag', ...args)
  },

  addFeatureFlags (...args) {
    return safeInvoke(false, 'addFeatureFlags', ...args)
  },

  clearFeatureFlag (...args) {
    return safeInvoke(false, 'clearFeatureFlag', ...args)
  },

  clearFeatureFlags () {
    return safeInvoke(false, 'clearFeatureFlags')
  },

  getUser () {
    return safeInvoke(true, 'getUser')
  },

  setUser (...args) {
    return safeInvoke(false, 'setUser', ...args)
  },

  leaveBreadcrumb (...args) {
    return safeInvoke(false, 'leaveBreadcrumb', ...args)
  },

  startSession () {
    return safeInvoke(false, 'startSession')
  },

  pauseSession () {
    return safeInvoke(false, 'pauseSession')
  },

  resumeSession () {
    return safeInvoke(false, 'resumeSession')
  },

  dispatch (event) {
    return safeInvoke(false, 'dispatch', event)
  },

  getPayloadInfo () {
    return safeInvoke(false, 'getPayloadInfo')
  }
}

module.exports = BugsnagIpcRenderer