1
1
// Handle Squirrel events for Windows immediately on start
2
2
if ( require ( 'electron-squirrel-startup' ) ) { return ; }
3
3
4
+ const pack = require ( './package.json' ) ;
5
+
6
+ const appVersion = pack . version ;
7
+
4
8
const electron = require ( 'electron' ) ;
5
9
const { app } = electron ;
6
10
const { BrowserWindow } = electron ;
7
11
const { autoUpdater } = electron ;
8
12
const os = require ( 'os' ) ;
9
13
let mainWindow = null ;
10
14
const { Menu } = electron ;
11
- let forceQuit = false ;
12
- const name = app . getName ( ) ;
15
+ let feedLink = '' ;
16
+
17
+ app . setName ( pack . productName ) ;
18
+
13
19
let updateFeed = 'http://localhost:3000/updates/latest' ;
14
20
const isDevelopment = process . env . NODE_ENV === 'development' ;
15
21
16
22
const logger = require ( 'winston' ) ;
17
-
18
23
logger . level = 'debug' ;
19
24
global . logger = logger ;
25
+
20
26
const path = require ( 'path' ) ;
21
27
22
- // Don't use auto-updater if we are in development
23
28
if ( ! isDevelopment ) {
24
29
if ( os . platform ( ) === 'darwin' ) {
25
- updateFeed = 'http://app- binary.herokuapp.com/updates/latest' ;
30
+ updateFeed = 'http://binary.herokuapp.com/updates/latest' ;
26
31
} else if ( os . platform ( ) === 'win32' ) {
27
32
updateFeed = 'http://app-binary.s3.amazonaws.com/updates/latest/win' + ( os . arch ( ) === 'x64' ? '64' : '32' ) ;
28
33
}
29
34
30
- autoUpdater . addListener ( 'update-available' , function ( event ) {
31
- logger . log ( 'A new update is available' ) ;
35
+ autoUpdater . addListener ( 'update-available' , function ( event ) {
36
+ logger . debug ( 'A new update is available' ) ;
32
37
if ( mainWindow ) {
33
38
mainWindow . webContents . send ( 'update-message' , 'update-available' ) ;
34
39
}
35
40
} ) ;
36
41
autoUpdater . addListener ( 'update-downloaded' , function ( event , releaseNotes , releaseName , releaseDate , updateURL ) {
37
- logger . log ( 'A new update is ready to install' , `Version ${ releaseName } is downloaded from ${ updateURL } and will be automatically installed on Quit` ) ;
42
+ logger . debug ( 'A new update is ready to install' , `Version ${ releaseName } is downloaded from ${ updateURL } and will be automatically installed on Quit` ) ;
38
43
if ( mainWindow ) {
39
44
mainWindow . webContents . send ( 'update-message' , 'update-downloaded' ) ;
40
45
}
41
46
} ) ;
42
47
autoUpdater . addListener ( 'error' , function ( error ) {
43
- logger . log ( error ) ;
48
+ logger . debug ( ` error is ${ error } ` ) ;
44
49
if ( mainWindow ) {
45
50
mainWindow . webContents . send ( 'update-message' , 'update-error' ) ;
46
51
}
47
52
} ) ;
48
53
autoUpdater . addListener ( 'checking-for-update' , function ( event ) {
49
- logger . log ( 'checking-for-update' ) ;
54
+ logger . debug ( 'checking-for-update' ) ;
50
55
if ( mainWindow ) {
51
56
mainWindow . webContents . send ( 'update-message' , 'checking-for-update' ) ;
52
57
}
53
58
} ) ;
54
- autoUpdater . addListener ( " update-not-available" , function ( ) {
55
- logger . log ( 'update-not-available' ) ;
59
+ autoUpdater . addListener ( ' update-not-available' , function ( ) {
60
+ logger . debug ( 'update-not-available' ) ;
56
61
if ( mainWindow ) {
57
62
mainWindow . webContents . send ( 'update-message' , 'update-not-available' ) ;
58
63
}
59
64
} ) ;
60
65
61
- const appVersion = require ( './package.json' ) . version ;
62
- const feedLink = updateFeed + '?v=' + appVersion ;
66
+ feedLink = updateFeed + '?v=' + appVersion ;
63
67
autoUpdater . setFeedURL ( feedLink ) ;
64
68
}
65
69
@@ -70,11 +74,12 @@ electron.crashReporter.start({
70
74
autoSubmit : true ,
71
75
} ) ;
72
76
73
- app . on ( 'window-all-closed' , function ( ) {
74
- if ( process . platform !== 'darwin' ) {
77
+ app . on ( 'window-all-closed' , function ( ) {
75
78
app . quit ( ) ;
76
- }
77
79
} ) ;
80
+
81
+ const name = app . getName ( ) ;
82
+
78
83
const template = [
79
84
{
80
85
label : 'View' ,
@@ -99,7 +104,7 @@ const template = [
99
104
label : 'Toggle Developer Tools' ,
100
105
accelerator : process . platform === 'darwin' ? 'Alt+Command+I' : 'Ctrl+Shift+I' ,
101
106
click ( item , focusedWindow ) {
102
- if ( focusedWindow && isDevelopment ) {
107
+ if ( focusedWindow ) {
103
108
focusedWindow . webContents . toggleDevTools ( ) ;
104
109
}
105
110
} ,
@@ -122,7 +127,6 @@ const template = [
122
127
label : 'Quit' ,
123
128
accelerator : 'Command+Q' ,
124
129
click ( ) {
125
- forceQuit = true ;
126
130
app . quit ( ) ;
127
131
} ,
128
132
} ,
@@ -142,7 +146,7 @@ const template = [
142
146
submenu : [
143
147
{
144
148
label : 'Learn More' ,
145
- click ( ) { require ( ' electron' ) . shell . openExternal ( 'http://app.binary.com' ) ; } ,
149
+ click ( ) { electron . shell . openExternal ( 'http://app.binary.com' ) ; } ,
146
150
} ,
147
151
] ,
148
152
} ,
@@ -174,7 +178,6 @@ if (process.platform === 'darwin') {
174
178
label : 'Quit' ,
175
179
accelerator : 'Command+Q' ,
176
180
click ( ) {
177
- forceQuit = true ;
178
181
app . quit ( ) ;
179
182
} ,
180
183
} ,
@@ -196,42 +199,18 @@ app.on('ready', function() {
196
199
toolbar : false ,
197
200
} ) ;
198
201
199
- mainWindow . loadURL ( path . join ( 'file://' , __dirname , '/index.html' ) ) ;
202
+
203
+ mainWindow . loadURL ( path . join ( 'file://' , __dirname , '/main.html' ) ) ;
200
204
201
205
mainWindow . on ( 'closed' , function ( ) {
202
- console . log ( 'closed' ) ;
203
206
mainWindow = null ;
204
- app . quit ( ) ;
205
207
} ) ;
206
208
207
- // Uncomment to use Chrome developer tools
208
- // mainWindow.webContents.openDevTools({ detach: true });
209
-
210
- mainWindow . on ( 'close' , function ( e ) {
211
- if ( ! forceQuit ) {
212
- e . preventDefault ( ) ;
213
- mainWindow . hide ( ) ;
214
- } else {
215
- app . quit ( ) ;
216
- }
217
- } ) ;
218
- app . on ( 'activate' , function ( ) {
219
- mainWindow . show ( ) ;
220
- } ) ;
221
-
222
- mainWindow . on ( 'show' , function ( e ) {
223
- mainWindow . show ( ) ;
224
- } ) ;
225
-
226
- mainWindow . on ( 'hide' , function ( e ) {
227
- mainWindow . hide ( ) ;
228
- } ) ;
229
- } ) ;
230
-
231
- app . on ( 'activate' , function ( e ) {
232
- mainWindow . show ( ) ;
233
- } ) ;
234
- app . on ( 'before-quit' , function ( e ) {
235
- forceQuit = true ;
209
+ if ( ! isDevelopment ) {
210
+ mainWindow . webContents . on ( 'did-frame-finish-load' , function ( ) {
211
+ logger . debug ( 'Checking for updates: ' + feedLink ) ;
212
+ autoUpdater . checkForUpdates ( ) ;
213
+ } ) ;
214
+ }
236
215
} ) ;
237
216
0 commit comments