tagsbox: fix deleted tags reappearing (#5533)

https://forums.zotero.org/discussion/110655/z7-beta-tags-reappear-after-quickly-deleting-them

If a library has many tags and one quickly clicks on "-" button
to deleted multiple tags from an item, the database updates
may not keep up with UI. To address this, save item only
once after a debounce.

Fixes: #5410
This commit is contained in:
abaevbog 2025-10-08 12:37:17 -07:00 • committed by GitHub
parent cc4c8cd191
commit 2e3deb0a21
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -241,7 +241,11 @@
this.remove(tagName);
try {
item.removeTag(tagName);
await item.saveTx();
// Save item after a debounce to avoid triggering multiple
// save operations. If there are many tags in the library,
// db transaction may not keep up with UI changes, and cause
// some deleted rows to reappear.
this._saveItemDebounced(item);
}
catch (e) {
this._forceRenderAll();
@ -638,6 +642,10 @@
}
}
_saveItemDebounced = Zotero.Utilities.debounce(async (item) => {
await item.saveTx();
});
_id(id) {
return this.querySelector(`[id=${id}]`);
}