Fix marking of childItems as loaded for non-top-level items

Now that attachments and notes can have child items too
This commit is contained in:
Dan Stillman 2020-12-27 19:49:50 -05:00
parent ea04c32c9d
commit b1e324ddfb
2 changed files with 20 additions and 3 deletions

View file

@ -594,6 +594,9 @@ Zotero.Items = function() {
});
};
//
// Attachments
//
var sql = "SELECT parentItemID, A.itemID, value AS title, "
+ "CASE WHEN DI.itemID IS NULL THEN 0 ELSE 1 END AS trashed "
+ "FROM itemAttachments A "
@ -742,9 +745,11 @@ Zotero.Items = function() {
ids.forEach(id => setAnnotationItem(id, []));
}
// Mark all top-level items as having child items loaded
sql = "SELECT itemID FROM items I WHERE libraryID=?" + idSQL + " AND itemID NOT IN "
+ "(SELECT itemID FROM itemAttachments UNION SELECT itemID FROM itemNotes)";
// Mark either all passed items or all items as having child items loaded
sql = "SELECT itemID FROM items I WHERE libraryID=?";
if (idSQL) {
sql += idSQL;
}
yield Zotero.DB.queryAsync(
sql,
params,

View file

@ -624,4 +624,16 @@ describe("Zotero.Items", function () {
);
});
});
describe("#_loadChildItems()", function () {
it("should mark child items as loaded for an attachment", async function () {
var attachment = await importPDFAttachment();
var itemID = attachment.id;
Zotero.Items.unload([itemID]);
attachment = await Zotero.Items.getAsync(itemID);
await attachment.loadDataType('childItems');
assert.isTrue(attachment._loaded.childItems);
attachment.getAnnotations();
});
});
});