From 691d0ca9d144b70b5bcad26c440b44dea7b59505 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Sat, 29 Feb 2020 16:24:34 -0500 Subject: [PATCH] Allow saved searches to be edited or deleted on error E.g., "too many SQL variables" Fixes #1734 --- chrome/content/zotero/xpcom/collectionTreeRow.js | 13 +++++++++++-- chrome/content/zotero/zoteroPane.js | 13 +++++++++++-- chrome/locale/en-US/zotero/zotero.properties | 1 + 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/chrome/content/zotero/xpcom/collectionTreeRow.js b/chrome/content/zotero/xpcom/collectionTreeRow.js index a5a65929ad..b4043eb3c1 100644 --- a/chrome/content/zotero/xpcom/collectionTreeRow.js +++ b/chrome/content/zotero/xpcom/collectionTreeRow.js @@ -272,8 +272,17 @@ Zotero.CollectionTreeRow.prototype.getSearchResults = Zotero.Promise.coroutine(f } if(!Zotero.CollectionTreeCache.lastResults) { - var s = yield this.getSearchObject(); - Zotero.CollectionTreeCache.lastResults = yield s.search(); + let s = yield this.getSearchObject(); + Zotero.CollectionTreeCache.error = false; + try { + Zotero.CollectionTreeCache.lastResults = yield s.search(); + } + catch (e) { + Zotero.logError(e); + Zotero.CollectionTreeCache.lastResults = []; + // Flag error so ZoteroPane::onCollectionSelected() can show a message + Zotero.CollectionTreeCache.error = true; + } Zotero.CollectionTreeCache.lastTreeRow = this; } diff --git a/chrome/content/zotero/zoteroPane.js b/chrome/content/zotero/zoteroPane.js index a4a518493b..b6dd805513 100644 --- a/chrome/content/zotero/zoteroPane.js +++ b/chrome/content/zotero/zoteroPane.js @@ -1190,8 +1190,17 @@ var ZoteroPane = new function() Zotero.Prefs.clear('lastViewedFolder'); ZoteroPane_Local.displayErrorMessage(); }; - this.itemsView.onRefresh.addListener(() => this.setTagScope()); - this.itemsView.onLoad.addListener(() => Zotero.uiIsReady()); + this.itemsView.onRefresh.addListener(() => { + this.setTagScope(); + }); + this.itemsView.onLoad.addListener(() => { + // Show error if items list couldn't loaded (e.g., bad search), as set in + // Zotero.CollectionTreeRow::getSearchResults() + if (Zotero.CollectionTreeCache.error) { + this.setItemsPaneMessage(Zotero.getString('pane.items.loadError')); + } + Zotero.uiIsReady(); + }); // If item data not yet loaded for library, load it now. // Other data types are loaded at startup diff --git a/chrome/locale/en-US/zotero/zotero.properties b/chrome/locale/en-US/zotero/zotero.properties index b2a1fd078b..822df434ab 100644 --- a/chrome/locale/en-US/zotero/zotero.properties +++ b/chrome/locale/en-US/zotero/zotero.properties @@ -282,6 +282,7 @@ pane.items.intro.text2 = View the [Quick Start Guide] to learn how to begin buil pane.items.intro.text3 = Already using %S on another computer? [Set up syncing] to pick up right where you left off. pane.items.loading = Loading items… +pane.items.loadError = Error loading items list pane.items.columnChooser.moreColumns = More Columns pane.items.columnChooser.secondarySort = Secondary Sort (%S) pane.items.attach.link.uri.unrecognized = Zotero did not recognize the URI you entered. Please check the address and try again.