www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit deb85038634ac6f99bc7811164c8b090880e71a6
parent a853bb0661520ec0061a652706c31b6e1d25470b
Author: Adomas VenĨkauskas <adomas.ven@gmail.com>
Date:   Wed, 14 Dec 2016 15:28:06 +0200

Remove coroutine from translate.js not supported in connector

From 7fc352b9

Diffstat:
Mchrome/content/zotero/xpcom/translation/translate.js | 111++++++++++++++++++++++++++++++++++++++-----------------------------------------
1 file changed, 53 insertions(+), 58 deletions(-)

diff --git a/chrome/content/zotero/xpcom/translation/translate.js b/chrome/content/zotero/xpcom/translation/translate.js @@ -1540,73 +1540,68 @@ Zotero.Translate.Base.prototype = { * Saves items to the database, taking care to defer attachmentProgress notifications * until after save */ - _saveItems: Zotero.Promise.coroutine(function* (items) { + _saveItems: Zotero.Promise.method(function (items) { var itemDoneEventsDispatched = false; var deferredProgress = []; var attachmentsWithProgress = []; - try { - var newItems = yield this._itemSaver.saveItems( - items.slice(), - function (attachment, progress, error) { - var attachmentIndex = this._savingAttachments.indexOf(attachment); - if(progress === false || progress === 100) { - if(attachmentIndex !== -1) { - this._savingAttachments.splice(attachmentIndex, 1); - } - } else if(attachmentIndex === -1) { - this._savingAttachments.push(attachment); - } - - if(itemDoneEventsDispatched) { - // itemDone event has already fired, so we can fire attachmentProgress - // notifications - this._runHandler("attachmentProgress", attachment, progress, error); - this._checkIfDone(); - } else { - // Defer until after we fire the itemDone event - deferredProgress.push([attachment, progress, error]); - attachmentsWithProgress.push(attachment); + function attachmentCallback(attachment, progress, error) { + var attachmentIndex = this._savingAttachments.indexOf(attachment); + if(progress === false || progress === 100) { + if(attachmentIndex !== -1) { + this._savingAttachments.splice(attachmentIndex, 1); + } + } else if(attachmentIndex === -1) { + this._savingAttachments.push(attachment); + } + + if(itemDoneEventsDispatched) { + // itemDone event has already fired, so we can fire attachmentProgress + // notifications + this._runHandler("attachmentProgress", attachment, progress, error); + this._checkIfDone(); + } else { + // Defer until after we fire the itemDone event + deferredProgress.push([attachment, progress, error]); + attachmentsWithProgress.push(attachment); + } + } + + return this._itemSaver.saveItems(items.slice(), attachmentCallback.bind(this)).then(function(newItems) { + // Remove attachments not being saved from item.attachments + for(var i=0; i<items.length; i++) { + var item = items[i]; + for(var j=0; j<item.attachments.length; j++) { + if(attachmentsWithProgress.indexOf(item.attachments[j]) === -1) { + item.attachments.splice(j--, 1); } - }.bind(this) - ) - } - catch (e) { + } + } + + // Trigger itemDone events + for(var i=0, nItems = items.length; i<nItems; i++) { + this._runHandler("itemDone", newItems[i], items[i]); + } + + // Specify that itemDone event was dispatched, so that we don't defer + // attachmentProgress notifications anymore + itemDoneEventsDispatched = true; + + // Run deferred attachmentProgress notifications + for(var i=0; i<deferredProgress.length; i++) { + this._runHandler("attachmentProgress", deferredProgress[i][0], + deferredProgress[i][1], deferredProgress[i][2]); + } + + this._savingItems -= items.length; + this.newItems = this.newItems.concat(newItems); + this._checkIfDone(); + }.bind(this)).catch(function(e) { this._savingItems -= items.length; Zotero.debug("REDUCING SAVING ITEMS ERROR TO " + this._savingItems); Zotero.logError(e); this.complete(false, e); - return; - } - - // Remove attachments not being saved from item.attachments - for(var i=0; i<items.length; i++) { - var item = items[i]; - for(var j=0; j<item.attachments.length; j++) { - if(attachmentsWithProgress.indexOf(item.attachments[j]) === -1) { - item.attachments.splice(j--, 1); - } - } - } - - // Trigger itemDone events - for(var i=0, nItems = items.length; i<nItems; i++) { - this._runHandler("itemDone", newItems[i], items[i]); - } - - // Specify that itemDone event was dispatched, so that we don't defer - // attachmentProgress notifications anymore - itemDoneEventsDispatched = true; - - // Run deferred attachmentProgress notifications - for(var i=0; i<deferredProgress.length; i++) { - this._runHandler("attachmentProgress", deferredProgress[i][0], - deferredProgress[i][1], deferredProgress[i][2]); - } - - this._savingItems -= items.length; - this.newItems = this.newItems.concat(newItems); - this._checkIfDone(); + }.bind(this)); }), /**