From d306fa9142a8dd4490f7681bce01000953156231 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adomas=20Ven=C4=8Dkauskas?= Date: Thu, 6 Jun 2024 10:07:59 +0300 Subject: [PATCH] Sort translators before calculating the translator hash --- .../zotero/xpcom/connector/server_connector.js | 6 ++++-- .../zotero/xpcom/translation/translators.js | 16 +++++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/chrome/content/zotero/xpcom/connector/server_connector.js b/chrome/content/zotero/xpcom/connector/server_connector.js index 380b34c80b..9c4b3b9b16 100644 --- a/chrome/content/zotero/xpcom/connector/server_connector.js +++ b/chrome/content/zotero/xpcom/connector/server_connector.js @@ -1695,13 +1695,15 @@ Zotero.Server.Connector.Ping.prototype = { //Zotero.debug("Setting active URL to " + req.data.activeURL); Zotero.QuickCopy.lastActiveURL = req.data.activeURL; } - let translatorsHash = await Zotero.Translators.getTranslatorsHash(); + let translatorsHash = await Zotero.Translators.getTranslatorsHash(false); + let sortedTranslatorHash = await Zotero.Translators.getTranslatorsHash(true); let response = { prefs: { automaticSnapshots: Zotero.Prefs.get('automaticSnapshots'), googleDocsAddNoteEnabled: true, - translatorsHash + translatorsHash, + sortedTranslatorHash } }; if (Zotero.QuickCopy.hasSiteSettings()) { diff --git a/chrome/content/zotero/xpcom/translation/translators.js b/chrome/content/zotero/xpcom/translation/translators.js index 925eaf4667..b50084f7de 100644 --- a/chrome/content/zotero/xpcom/translation/translators.js +++ b/chrome/content/zotero/xpcom/translation/translators.js @@ -40,6 +40,7 @@ Zotero.Translators = new function() { this.TRANSLATOR_ID_RDF = '5e3ad958-ac79-463d-812b-a86a9235c28f'; this._translatorsHash = null; + this._sortedTranslatorHash = null; /** * Initializes translator cache, loading all translator metadata into memory @@ -269,6 +270,7 @@ Zotero.Translators = new function() { this.reinit = async function (options = {}) { await this.init(Object.assign({}, options, { reinit: true })); this._translatorsHash = null; + this._sortedTranslatorHash = null; await Zotero.QuickCopy.init(); }; @@ -333,16 +335,20 @@ Zotero.Translators = new function() { /** * Gets a hash of all translators (to check whether Connector needs an update) */ - this.getTranslatorsHash = async function () { - if (this._translatorsHash) return this._translatorsHash; + this.getTranslatorsHash = async function (sorted) { + let prop = sorted ? "_sortedTranslatorHash" : "_translatorsHash"; + if (this[prop]) return this[prop]; await this.init(); - const translators = await this.getAll(); + let translators = await this.getAll(); + if (sorted) { + translators.sort((a, b) => a.translatorID.localeCompare(b.translatorID)); + } let hashString = ""; for (let translator of translators) { hashString += `${translator.translatorID}:${translator.lastUpdated},`; } - this._translatorsHash = Zotero.Utilities.Internal.md5(hashString); - return this._translatorsHash; + this[prop] = Zotero.Utilities.Internal.md5(hashString); + return this[prop]; }; /**