bloodymary/app/discord_native/browser/crashReporter.js

40 lines
1.2 KiB
JavaScript

"use strict";
const electron = require('electron');
const lodash = require('lodash');
const {
reconcileCrashReporterMetadata
} = require('../../../common/crashReporterUtils');
const {
getElectronMajorVersion
} = require('../../../common/processUtils');
const {
metadata
} = require('../../crashReporterSetup');
const {
CRASH_REPORTER_UPDATE_METADATA
} = require('../common/constants').IPCEvents;
electron.ipcMain.handle(CRASH_REPORTER_UPDATE_METADATA, async (_, additional_metadata) => {
const final_metadata = lodash.defaultsDeep({}, metadata, additional_metadata || {});
const result = {
metadata: final_metadata
}; // In Electron 9 we only start the crashReporter once and let reconcileCrashReporterMetadata
// do the work of keeping `extra` up-to-date. Prior to this we would simply start crashReporter
// again to apply new metadata as well as pass the full arguments back to the renderer so it
// could do similarly.
if (getElectronMajorVersion() < 9) {
const args = getCrashReporterArgs(final_metadata);
electron.crashReporter.start(args);
result.args = args;
}
reconcileCrashReporterMetadata(electron.crashReporter, final_metadata);
return result;
});