98 lines
		
	
	
	
		
			2.5 KiB
			
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
	
		
			2.5 KiB
			
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
const binding = process.electronBinding('crash_reporter');
 | 
						|
 | 
						|
class CrashReporter {
 | 
						|
  constructor () {
 | 
						|
    this.productName = null;
 | 
						|
    this.crashesDirectory = null;
 | 
						|
  }
 | 
						|
 | 
						|
  init (options) {
 | 
						|
    throw new Error('Not implemented');
 | 
						|
  }
 | 
						|
 | 
						|
  start (options) {
 | 
						|
    if (options == null) options = {};
 | 
						|
 | 
						|
    const {
 | 
						|
      productName,
 | 
						|
      companyName,
 | 
						|
      extra = {},
 | 
						|
      ignoreSystemCrashHandler = false,
 | 
						|
      submitURL,
 | 
						|
      uploadToServer = true
 | 
						|
    } = options;
 | 
						|
 | 
						|
    if (companyName == null) throw new Error('companyName is a required option to crashReporter.start');
 | 
						|
    if (submitURL == null) throw new Error('submitURL is a required option to crashReporter.start');
 | 
						|
 | 
						|
    const ret = this.init({
 | 
						|
      submitURL,
 | 
						|
      productName
 | 
						|
    });
 | 
						|
 | 
						|
    this.productName = ret.productName;
 | 
						|
    this.crashesDirectory = ret.crashesDirectory;
 | 
						|
 | 
						|
    if (extra._productName == null) extra._productName = ret.productName;
 | 
						|
    if (extra._companyName == null) extra._companyName = companyName;
 | 
						|
    if (extra._version == null) extra._version = ret.appVersion;
 | 
						|
 | 
						|
    binding.start(ret.productName, companyName, submitURL, ret.crashesDirectory, uploadToServer, ignoreSystemCrashHandler, extra);
 | 
						|
  }
 | 
						|
 | 
						|
  getLastCrashReport () {
 | 
						|
    const reports = this.getUploadedReports()
 | 
						|
      .sort((a, b) => {
 | 
						|
        const ats = (a && a.date) ? new Date(a.date).getTime() : 0;
 | 
						|
        const bts = (b && b.date) ? new Date(b.date).getTime() : 0;
 | 
						|
        return bts - ats;
 | 
						|
      });
 | 
						|
 | 
						|
    return (reports.length > 0) ? reports[0] : null;
 | 
						|
  }
 | 
						|
 | 
						|
  getUploadedReports () {
 | 
						|
    const crashDir = this.getCrashesDirectory();
 | 
						|
    if (!crashDir) {
 | 
						|
      throw new Error('crashReporter has not been started');
 | 
						|
    }
 | 
						|
 | 
						|
    return binding.getUploadedReports(crashDir);
 | 
						|
  }
 | 
						|
 | 
						|
  getCrashesDirectory () {
 | 
						|
    return this.crashesDirectory;
 | 
						|
  }
 | 
						|
 | 
						|
  getUploadToServer () {
 | 
						|
    if (process.type === 'browser') {
 | 
						|
      return binding.getUploadToServer();
 | 
						|
    } else {
 | 
						|
      throw new Error('getUploadToServer can only be called from the main process');
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  setUploadToServer (uploadToServer) {
 | 
						|
    if (process.type === 'browser') {
 | 
						|
      return binding.setUploadToServer(uploadToServer);
 | 
						|
    } else {
 | 
						|
      throw new Error('setUploadToServer can only be called from the main process');
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  addExtraParameter (key, value) {
 | 
						|
    binding.addExtraParameter(key, value);
 | 
						|
  }
 | 
						|
 | 
						|
  removeExtraParameter (key) {
 | 
						|
    binding.removeExtraParameter(key);
 | 
						|
  }
 | 
						|
 | 
						|
  getParameters () {
 | 
						|
    return binding.getParameters();
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
module.exports = CrashReporter;
 |