From df16b14586c76433d3b42336438774692c39c304 Mon Sep 17 00:00:00 2001 From: Mathias Rasmussen Date: Fri, 2 Sep 2016 00:58:02 +0200 Subject: [PATCH] early telemetry (#870) --- src/renderer/lib/telemetry.js | 8 ++++---- src/renderer/main.js | 13 +++++++------ 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/renderer/lib/telemetry.js b/src/renderer/lib/telemetry.js index c551fe2a..c20be6de 100644 --- a/src/renderer/lib/telemetry.js +++ b/src/renderer/lib/telemetry.js @@ -128,10 +128,6 @@ function logUncaughtError (procName, e) { var stack = '' if (e == null) { message = 'Unexpected undefined error' - } else if (e.message) { - // err is either an Error or a plain object {message, stack} - message = e.message - stack = e.stack } else if (e.error) { // Uncaught Javascript errors (window.onerror), err is an ErrorEvent if (!e.error.message) { @@ -140,6 +136,10 @@ function logUncaughtError (procName, e) { message = e.error.message stack = e.error.stack } + } else if (e.message) { + // err is either an Error or a plain object {message, stack} + message = e.message + stack = e.stack } else { // Resource errors (captured element.onerror), err is an Event if (!e.target) { diff --git a/src/renderer/main.js b/src/renderer/main.js index e9ed6cee..970d89bc 100644 --- a/src/renderer/main.js +++ b/src/renderer/main.js @@ -59,6 +59,13 @@ function onState (err, _state) { if (err) return onError(err) state = window.state = _state // Make available for easier debugging + telemetry.init(state) + + // Log uncaught JS errors + window.addEventListener('error', + (e) => telemetry.logUncaughtError('window', e), + true /* capture */) + // Create controllers controllers = { media: new MediaController(state), @@ -114,11 +121,6 @@ function onState (err, _state) { // ...window visibility state. document.addEventListener('webkitvisibilitychange', onVisibilityChange) - // Log uncaught JS errors - window.addEventListener('error', - (e) => telemetry.logUncaughtError('window', e), - true /* capture */) - // Done! Ideally we want to get here < 500ms after the user clicks the app sound.play('STARTUP') console.timeEnd('init') @@ -128,7 +130,6 @@ function onState (err, _state) { function delayedInit () { lazyLoadCast() sound.preload() - telemetry.init(state) } // Lazily loads Chromecast and Airplay support