'use strict';

const app = require('electron').app;
const EventEmitter = require('events').EventEmitter;
const url = require('url');
const squirrelUpdate = require('./squirrel-update-win');

class AutoUpdater extends EventEmitter {
  constructor() {
    super();
  }

  quitAndInstall() {
    squirrelUpdate.processStart();
    return app.quit();
  }

  setFeedURL(updateURL) {
    return this.updateURL = updateURL;
  }

  checkForUpdates() {
    if (!this.updateURL) {
      return this.emitError('Update URL is not set');
    }
    if (!squirrelUpdate.supported()) {
      return this.emitError('Can not find Squirrel');
    }
    this.emit('checking-for-update');
    return squirrelUpdate.download(this.updateURL, (function(_this) {
      return function(error, update) {
        if (error != null) {
          return _this.emitError(error);
        }
        if (update == null) {
          return _this.emit('update-not-available');
        }
        _this.emit('update-available');
        return squirrelUpdate.update(_this.updateURL, function(error) {
          var date, releaseNotes, version;
          if (error != null) {
            return _this.emitError(error);
          }
          releaseNotes = update.releaseNotes, version = update.version;

          // Following information is not available on Windows, so fake them.
          date = new Date;
          return _this.emit('update-downloaded', {}, releaseNotes, version, date, _this.updateURL, function() {
            return _this.quitAndInstall();
          });
        });
      };
    })(this));
  }

  // Private: Emit both error object and message, this is to keep compatibility
  // with Old APIs.
  emitError(message) {
    return this.emit('error', new Error(message), message);
  }
}

module.exports = new AutoUpdater;

@@ -102,36 +102,8 @@
 er;%0A
-const url = require('url');%0A
 cons

remove unused variable