Skip to content

Commit d10ea43

Browse files
authored
Merge pull request #267 from hypermodules/sentry
Add sentry
2 parents 5a3e5b3 + cf62498 commit d10ea43

File tree

5 files changed

+79
-4
lines changed

5 files changed

+79
-4
lines changed

main/index.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
var isDev = require('electron-is-dev')
2+
if (!isDev) {
3+
require('../sentry')('main')
4+
}
15
var { app, ipcMain } = require('electron')
26
var Config = require('electron-store')
37
var get = require('lodash.get')
@@ -235,9 +239,11 @@ app.on('ready', function appReady () {
235239
})
236240
}
237241

238-
setTimeout(() => {
239-
autoUpdater.checkForUpdatesAndNotify()
240-
}, 500)
242+
if (!process.env.DEV_SERVER) {
243+
setTimeout(() => {
244+
autoUpdater.checkForUpdatesAndNotify()
245+
}, 500)
246+
}
241247

242248
autoUpdater.on('error', (err) => {
243249
console.log(err)

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@
6666
"nanologger": "^1.3.0",
6767
"nanotick": "^1.1.6",
6868
"pump": "^1.0.2",
69+
"raven": "^2.2.1",
70+
"raven-js": "^3.19.1",
6971
"run-parallel": "^1.1.6",
7072
"through2-filter": "^2.0.0",
7173
"xtend": "^4.0.1"

renderer/audio.html

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
<h1>🎵</h1>
1212
<audio id="audio"></audio>
1313
<audio id="needle"></audio>
14-
<script>require('./audio/index.js')</script>
14+
<script>
15+
var isDev = require('electron-is-dev')
16+
if (!isDev) require('../sentry.js')('audio')
17+
require('./audio/index.js')
18+
</script>
1519
</body>
1620
</html>

renderer/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<main id="app"></main>
99
<script>
1010
var isDev = require('electron-is-dev')
11+
if (!isDev) window.raven = require('../sentry.js')('player')
1112
if (isDev || process.env.DEV_SERVER) {
1213
var bundle = document.createElement('script')
1314
bundle.src = 'http://localhost:9966/bundle.js'

sentry.js

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
// modeled after https://github.com/codeforscience/sciencefair/blob/444bb75e0c73cc1e632ec833b98ba2d693668cde/app/client/lib/raven.js#L41
2+
var os = require('os')
3+
4+
var RAVEN_A = '3e06dec4e996422080e1853bdb663246' // eh.. can we get these out of source code?
5+
var RAVEN_B = '7e4004b4423044b3b19d2f4523748552'
6+
var RAVEN_C = '243594'
7+
8+
var MAIN_THREAD = 'browser'
9+
var RENDERER = 'renderer'
10+
11+
function getopts (processtype, name) {
12+
return {
13+
captureUnhandledRejections: true,
14+
name: name || 'Hyperamp',
15+
release: require('./package.json').version,
16+
extra: {
17+
platform: os.platform(),
18+
process: processtype,
19+
release: os.release(),
20+
arch: os.arch(),
21+
totalmem: os.totalmem()
22+
},
23+
sendTimeout: 5,
24+
allowSecretKey: processtype === 'browser',
25+
debug: true
26+
}
27+
}
28+
29+
function setup (name) {
30+
// process.type === 'browser' : main thread
31+
// process.type === 'renderer' : electron window
32+
var raven = process.type === MAIN_THREAD ? require('raven') : require('raven-js')
33+
var url = process.type === MAIN_THREAD ? `https://${RAVEN_A}:${RAVEN_B}@sentry.io/${RAVEN_C}` : `https://${RAVEN_A}@sentry.io/${RAVEN_C}`
34+
35+
if (process.type === MAIN_THREAD) {
36+
// Main thread stuff only
37+
process.on('uncaughtException', (err) => {
38+
const dialog = require('electron').dialog
39+
40+
dialog.showMessageBox({
41+
title: 'An error occurred',
42+
message: `Sorry for the trouble, but an error has occurred in Hyperamp and we don't know how to recover from it.
43+
44+
If you are connected to the internet, this has been reported anonymously to the project maintainers - they will work on a fix.
45+
46+
The app may now quit - you can safely reopen it.`,
47+
detail: err.stack,
48+
buttons: ['OK']
49+
})
50+
})
51+
}
52+
53+
if (process.type === RENDERER) {
54+
// Renderer stuff only
55+
}
56+
57+
var sentry = raven.config(url, getopts(process.type), name).install()
58+
console.log('Sentry installed')
59+
return sentry
60+
}
61+
62+
module.exports = setup

0 commit comments

Comments
 (0)