Skip to content

Commit

Permalink
Remove coroutine from translate.js not supported in connector
Browse files Browse the repository at this point in the history
From 7fc352b
  • Loading branch information
adomasven committed Dec 14, 2016
1 parent a853bb0 commit deb8503
Showing 1 changed file with 53 additions and 58 deletions.
111 changes: 53 additions & 58 deletions chrome/content/zotero/xpcom/translation/translate.js
Expand Up @@ -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));
}),

/**
Expand Down

0 comments on commit deb8503

Please sign in to comment.