Asyncify various functions to fix cross-library drag-and-drop error

When dragging an item to another library, we have to check if there's a
linked item in the target library, but items might not yet be laoded in
the other library, so item.getLinkedItem() can fail with "Item [n] not
yet loaded].

Fixing required asyncifying the follow functions:

- Zotero.Item::getLinkedItem()
- Zotero.Collection::getLinkedCollection()
- Zotero.URI.getURIItem()
- Zotero.URI.getURICollection()
- Various integration functions
This commit is contained in:
Dan Stillman 2017-03-03 16:33:48 -05:00
commit fe9fc8bc5a
9 changed files with 93 additions and 99 deletions

View file

@ -451,7 +451,7 @@ describe("Zotero.DataObject", function() {
var item2URI = Zotero.URI.getItemURI(item2);
yield item2.addLinkedItem(item1);
var linkedItem = item1.getLinkedItem(item2.libraryID);
var linkedItem = yield item1.getLinkedItem(item2.libraryID);
assert.equal(linkedItem.id, item2.id);
})
@ -462,7 +462,7 @@ describe("Zotero.DataObject", function() {
var item2 = yield createDataObject('item', { libraryID: group.libraryID });
yield item2.addLinkedItem(item1);
var linkedItem = item2.getLinkedItem(item1.libraryID);
var linkedItem = yield item2.getLinkedItem(item1.libraryID);
assert.isFalse(linkedItem);
})
@ -473,7 +473,7 @@ describe("Zotero.DataObject", function() {
var item2 = yield createDataObject('item', { libraryID: group.libraryID });
yield item2.addLinkedItem(item1);
var linkedItem = item2.getLinkedItem(item1.libraryID, true);
var linkedItem = yield item2.getLinkedItem(item1.libraryID, true);
assert.equal(linkedItem.id, item1.id);
})
})