From a15fb83cc49a7e1a7ac2b774c49ce2e82b5133ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adomas=20Ven=C4=8Dkauskas?= Date: Wed, 21 Apr 2021 13:06:08 +0300 Subject: [PATCH] Fix feed sort being wrong --- chrome/content/zotero/itemTree.jsx | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/chrome/content/zotero/itemTree.jsx b/chrome/content/zotero/itemTree.jsx index 251580884b..1a84cd2b8d 100644 --- a/chrome/content/zotero/itemTree.jsx +++ b/chrome/content/zotero/itemTree.jsx @@ -1128,7 +1128,7 @@ var ItemTree = class ItemTree extends LibraryTree { showHeader: true, columns: this._getColumns(), onColumnPickerMenu: this._displayColumnPickerMenu, - onColumnSort: this._handleColumnSort, + onColumnSort: this.collectionTreeRow.isFeed() ? null : this._handleColumnSort, getColumnPrefs: this._getColumnPrefs, storeColumnPrefs: this._storeColumnPrefs, containerWidth: this.domEl.clientWidth, @@ -1392,15 +1392,7 @@ var ItemTree = class ItemTree extends LibraryTree { var primaryField = this._getSortField(); var sortFields = this._getSortFields(); - var order = 1; - const columns = this._getColumns(); - for (const field of sortFields) { - const col = columns.find(c => c.dataKey == primaryField); - if (col) { - order = col.sortDirection; - break; - } - } + var order = this._getSortDirection(sortFields); var collation = Zotero.getLocaleCollation(); var sortCreatorAsString = Zotero.Prefs.get('sortCreatorAsString'); @@ -3127,9 +3119,6 @@ var ItemTree = class ItemTree extends LibraryTree { _handleColumnSort = async (index, sortDirection) => { let columnSettings = this._getColumnPrefs(); let column = this._getColumn(index); - if (this.collectionTreeRow.isFeed()) { - return; - } if (column.dataKey == 'hasAttachment') { Zotero.debug("Caching best attachment states"); if (!this._cachedBestAttachmentStates) { @@ -3326,6 +3315,20 @@ var ItemTree = class ItemTree extends LibraryTree { document.children[0].appendChild(menupopup); menupopup.openPopup(null, null, event.clientX + 2, event.clientY + 2); } + + _getSortDirection(sortFields) { + if (this.collectionTreeRow.isFeed()) { + return Zotero.Prefs.get('feeds.sortAscending') ? 1 : -1; + } + const columns = this._getColumns(); + for (const field of sortFields) { + const col = columns.find(c => c.dataKey == field); + if (col) { + return col.sortDirection; + } + } + return 1; + } _getSortField() { if (this.collectionTreeRow.isFeed()) {