| 
									
										
										
										
											2016-03-24 13:15:04 -07:00
										 |  |  | 'use strict' | 
					
						
							| 
									
										
										
										
											2016-01-15 14:12:57 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-26 11:40:55 +10:00
										 |  |  | const {app} = require('electron') | 
					
						
							|  |  |  | const {EventEmitter} = require('events') | 
					
						
							| 
									
										
										
										
											2016-03-24 13:15:04 -07:00
										 |  |  | const squirrelUpdate = require('./squirrel-update-win') | 
					
						
							| 
									
										
										
										
											2016-01-11 18:40:23 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-26 11:40:55 +10:00
										 |  |  | class AutoUpdater extends EventEmitter { | 
					
						
							|  |  |  |   quitAndInstall () { | 
					
						
							|  |  |  |     if (!this.updateAvailable) { | 
					
						
							|  |  |  |       return this.emitError('No update available, can\'t quit and install') | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     squirrelUpdate.processStart() | 
					
						
							| 
									
										
										
										
											2016-08-08 13:06:14 -07:00
										 |  |  |     app.quit() | 
					
						
							| 
									
										
										
										
											2016-04-26 01:35:34 +10:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-07-15 00:04:48 +12:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-26 11:40:55 +10:00
										 |  |  |   getFeedURL () { | 
					
						
							|  |  |  |     return this.updateURL | 
					
						
							| 
									
										
										
										
											2016-02-03 09:52:04 -08:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-07-26 11:40:55 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  |   setFeedURL (updateURL, headers) { | 
					
						
							|  |  |  |     this.updateURL = updateURL | 
					
						
							| 
									
										
										
										
											2016-02-03 09:52:04 -08:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-07-26 11:40:55 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  |   checkForUpdates () { | 
					
						
							|  |  |  |     if (!this.updateURL) { | 
					
						
							|  |  |  |       return this.emitError('Update URL is not set') | 
					
						
							| 
									
										
										
										
											2016-03-10 11:54:17 -08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-07-26 11:40:55 +10:00
										 |  |  |     if (!squirrelUpdate.supported()) { | 
					
						
							|  |  |  |       return this.emitError('Can not find Squirrel') | 
					
						
							| 
									
										
										
										
											2016-03-10 11:54:17 -08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-07-26 11:40:55 +10:00
										 |  |  |     this.emit('checking-for-update') | 
					
						
							| 
									
										
										
										
											2017-09-11 00:54:08 +02:00
										 |  |  |     squirrelUpdate.checkForUpdate(this.updateURL, (error, update) => { | 
					
						
							| 
									
										
										
										
											2016-02-03 09:52:04 -08:00
										 |  |  |       if (error != null) { | 
					
						
							| 
									
										
										
										
											2016-03-24 13:15:04 -07:00
										 |  |  |         return this.emitError(error) | 
					
						
							| 
									
										
										
										
											2016-02-03 09:52:04 -08:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2016-07-26 11:40:55 +10:00
										 |  |  |       if (update == null) { | 
					
						
							|  |  |  |         return this.emit('update-not-available') | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       this.updateAvailable = true | 
					
						
							|  |  |  |       this.emit('update-available') | 
					
						
							|  |  |  |       squirrelUpdate.update(this.updateURL, (error) => { | 
					
						
							|  |  |  |         if (error != null) { | 
					
						
							|  |  |  |           return this.emitError(error) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-08-08 13:06:14 -07:00
										 |  |  |         const {releaseNotes, version} = update | 
					
						
							|  |  |  |         // Date is not available on Windows, so fake it.
 | 
					
						
							|  |  |  |         const date = new Date() | 
					
						
							| 
									
										
										
										
											2016-07-26 11:40:55 +10:00
										 |  |  |         this.emit('update-downloaded', {}, releaseNotes, version, date, this.updateURL, () => { | 
					
						
							|  |  |  |           this.quitAndInstall() | 
					
						
							|  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2016-03-24 13:15:04 -07:00
										 |  |  |       }) | 
					
						
							|  |  |  |     }) | 
					
						
							| 
									
										
										
										
											2016-07-26 11:40:55 +10:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-01-15 14:12:57 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-26 11:40:55 +10:00
										 |  |  |   // Private: Emit both error object and message, this is to keep compatibility
 | 
					
						
							|  |  |  |   // with Old APIs.
 | 
					
						
							|  |  |  |   emitError (message) { | 
					
						
							| 
									
										
										
										
											2016-08-08 13:06:14 -07:00
										 |  |  |     this.emit('error', new Error(message), message) | 
					
						
							| 
									
										
										
										
											2016-07-26 11:40:55 +10:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-03-24 13:15:04 -07:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2016-01-11 18:40:23 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-24 13:15:04 -07:00
										 |  |  | module.exports = new AutoUpdater() |