Fix attachment box preview discard

fix: #4659
This commit is contained in:
windingwind 2024-09-03 04:16:17 +00:00 • committed by Dan Stillman
parent 7652fb25f0
commit 3861af50d1
2 changed files with 39 additions and 34 deletions

View file

@ -320,12 +320,45 @@
this._previewDiscarded = false;
this.previewElem.render();
}
this._lastPreviewRenderTime = Date.now();
this._lastPreviewRenderId = `${Date.now()}-${Math.random()}`;
return;
}
Zotero.debug('Refreshing attachment box');
this._asyncRendering = true;
await this.renderAttachmentInfo();
if (this.usePreview) {
this.previewElem.item = this.item;
await this.previewElem.render();
}
this._asyncRendering = false;
this._lastPreviewRenderId = `${Date.now()}-${Math.random()}`;
}
discard() {
if (!this._preview) return;
let lastPreviewRenderId = this._lastPreviewRenderId;
setTimeout(() => {
if (!this._asyncRendering && this._lastPreviewRenderId === lastPreviewRenderId) {
this._preview?.discard();
this._previewDiscarded = true;
}
}, this._discardPreviewTimeout);
}
onViewClick(event) {
ZoteroPane_Local.viewAttachment(this.item.id, event, !this.editable);
}
onShowClick(event) {
ZoteroPane_Local.showAttachmentInFilesystem(this.item.id, event.originalTarget, !this.editable);
}
async renderAttachmentInfo() {
// Cancel editing filename when refreshing
this._isEditingFilename = false;
@ -469,34 +502,6 @@
else {
selectButton.hidden = true;
}
if (this.usePreview) {
this.previewElem.item = this.item;
await this.previewElem.render();
}
this._asyncRendering = false;
this._lastPreviewRenderTime = `${Date.now()}-${Math.random()}`;
}
discard() {
if (!this._preview) return;
let lastRenderTime = this._lastPreviewRenderId;
setTimeout(() => {
if (!this._asyncRendering && this._lastPreviewRenderId === lastRenderTime) {
this._preview?.discard();
this._previewDiscarded = true;
}
}, this._discardPreviewTimeout);
}
onViewClick(event) {
ZoteroPane_Local.viewAttachment(this.item.id, event, !this.editable);
}
onShowClick(event) {
ZoteroPane_Local.showAttachmentInFilesystem(this.item.id, event.originalTarget, !this.editable);
}
updateItemIndexedState() {

View file

@ -48,7 +48,7 @@
_preview = null;
_lastPreviewRenderTime = "";
_lastPreviewRenderId = "";
_discardPreviewTimeout = 60000;
@ -189,7 +189,7 @@
this._previewDiscarded = false;
this.previewElem.render();
}
this._lastPreviewRenderTime = `${Date.now()}-${Math.random()}`;
this._lastPreviewRenderId = `${Date.now()}-${Math.random()}`;
return;
}
this._renderStage = "final";
@ -209,9 +209,9 @@
discard() {
if (!this._preview) return;
let lastRenderTime = this._lastPreviewRenderTime;
let lastPreviewRenderId = this._lastPreviewRenderId;
setTimeout(() => {
if (!this._asyncRendering && this._lastPreviewRenderTime === lastRenderTime) {
if (!this._asyncRendering && this._lastPreviewRenderId === lastPreviewRenderId) {
this._preview?.discard();
this._previewDiscarded = true;
}
@ -246,7 +246,7 @@
}
this.previewElem.item = attachment;
await this.previewElem.render();
this._lastPreviewRenderTime = `${Date.now()}-${Math.random()}`;
this._lastPreviewRenderId = `${Date.now()}-${Math.random()}`;
}
async _getPreviewAttachment() {