diff --git a/chrome/content/zotero/xpcom/zotero.js b/chrome/content/zotero/xpcom/zotero.js index 76471f648..a1c847c17 100644 --- a/chrome/content/zotero/xpcom/zotero.js +++ b/chrome/content/zotero/xpcom/zotero.js @@ -423,7 +423,7 @@ Components.utils.import("resource://gre/modules/Services.jsm"); } // Register shutdown handler to call Zotero.shutdown() - var _shutdownObserver = {observe:function() { Zotero.shutdown() }}; + var _shutdownObserver = {observe:function() { Zotero.shutdown().done() }}; Services.obs.addObserver(_shutdownObserver, "quit-application", false); try { @@ -783,7 +783,7 @@ Components.utils.import("resource://gre/modules/Services.jsm"); } - this.shutdown = function(callback) { + this.shutdown = function() { Zotero.debug("Shutting down Zotero"); try { @@ -811,20 +811,17 @@ Components.utils.import("resource://gre/modules/Services.jsm"); Components.utils.forceGC(); // unlock DB - Zotero.DB.closeDatabase().then(function() { + return Zotero.DB.closeDatabase().then(function() { // broadcast that DB lock has been released Zotero.IPC.broadcast("lockReleased"); - if(callback) callback(); }); - } else { - if(callback) callback(); } + + return Q(); } catch(e) { Zotero.debug(e); - throw e; + return Q.reject(e); } - - return true; } diff --git a/components/zotero-service.js b/components/zotero-service.js index 2804361c6..14a59f6a4 100644 --- a/components/zotero-service.js +++ b/components/zotero-service.js @@ -164,16 +164,11 @@ ZoteroContext.prototype = { */ "switchConnectorMode":function(isConnector) { if(isConnector !== this.isConnector) { - zContext.Zotero.shutdown(function() { - try { - // create a new zContext - makeZoteroContext(isConnector); - zContext.Zotero.init(); - } catch(e) { - dump(e.toSource()); - throw e; - } - }); + zContext.Zotero.shutdown().then(function() { + // create a new zContext + makeZoteroContext(isConnector); + zContext.Zotero.init(); + }).done(); } return zContext; @@ -297,23 +292,11 @@ function ZoteroService() { try { zContext.Zotero.init(); } catch(e) { - if(e === "ZOTERO_SHOULD_START_AS_CONNECTOR") { - // if Zotero should start as a connector, reload it - zContext.Zotero.shutdown(function() { - try { - makeZoteroContext(true); - zContext.Zotero.init(); - } catch(e) { - dump(e.toSource()); - Components.utils.reportError(e); - throw e; - } - }); - } else { - dump(e.toSource()); - Components.utils.reportError(e); - throw e; - } + // if Zotero should start as a connector, reload it + zContext.Zotero.shutdown().then(function() { + makeZoteroContext(true); + zContext.Zotero.init(); + }).done(); } } isFirstLoadThisSession = false; // no longer first load