Files
flipper/src/utils/electronCrashReporter.tsx
Andres Suarez 0675dd924d Tidy up Flipper license headers [1/2]
Reviewed By: passy

Differential Revision: D17863711

fbshipit-source-id: 259dc77826fb803ff1b88c88529d7f679d3b74d8
2019-10-11 13:46:45 -07:00

56 lines
1.8 KiB
TypeScript

/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
import {exists, mkdir} from 'fs';
import {promisify} from 'util';
import {crashReporter, remote} from 'electron';
import isProduction from '../utils/isProduction';
import constants from '../fb-stubs/constants';
import {tmpName as tmpNameCallback, TmpNameOptions} from 'tmp';
import {resolve} from 'path';
const tmpName = promisify(tmpNameCallback) as (
options?: TmpNameOptions,
) => Promise<string>;
// Cross platform way to find the /tmp directory or equivalent.
// The tempPath set should be persistent across app restarts.
const tempPathPromise: Promise<string> = tmpName({
template: '/tmp/tmp-XXXXXX',
}).then(name => resolve(name, '..', 'flipper'));
export default function initCrashReporter(sessionId: string): Promise<void> {
const flipperVersion = remote.app.getVersion();
return tempPathPromise.then(tempPath => {
return promisify(exists)(tempPath)
.then(pathExists => {
if (!pathExists) {
return promisify(mkdir)(tempPath);
}
return Promise.resolve();
})
.then(() => {
remote.app.setPath('temp', tempPath);
const electronCrashReporterArgs = {
productName: 'Flipper',
companyName: 'Facebook',
submitURL: 'https://www.facebook.com/intern/flipper/crash_upload',
uploadToServer: isProduction() && !constants.IS_PUBLIC_BUILD,
ignoreSystemCrashHandler: true,
extra: {
flipper_version: flipperVersion,
session_id: sessionId,
},
};
remote.crashReporter.start(electronCrashReporterArgs);
crashReporter.start(electronCrashReporterArgs);
});
});
}