Sort translators before calculating the translator hash

This commit is contained in:
Adomas Venčkauskas 2024-06-06 10:07:59 +03:00
parent 71f83c0a35
commit d306fa9142
2 changed files with 15 additions and 7 deletions

View file

@ -1695,13 +1695,15 @@ Zotero.Server.Connector.Ping.prototype = {
//Zotero.debug("Setting active URL to " + req.data.activeURL); //Zotero.debug("Setting active URL to " + req.data.activeURL);
Zotero.QuickCopy.lastActiveURL = 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 = { let response = {
prefs: { prefs: {
automaticSnapshots: Zotero.Prefs.get('automaticSnapshots'), automaticSnapshots: Zotero.Prefs.get('automaticSnapshots'),
googleDocsAddNoteEnabled: true, googleDocsAddNoteEnabled: true,
translatorsHash translatorsHash,
sortedTranslatorHash
} }
}; };
if (Zotero.QuickCopy.hasSiteSettings()) { if (Zotero.QuickCopy.hasSiteSettings()) {

View file

@ -40,6 +40,7 @@ Zotero.Translators = new function() {
this.TRANSLATOR_ID_RDF = '5e3ad958-ac79-463d-812b-a86a9235c28f'; this.TRANSLATOR_ID_RDF = '5e3ad958-ac79-463d-812b-a86a9235c28f';
this._translatorsHash = null; this._translatorsHash = null;
this._sortedTranslatorHash = null;
/** /**
* Initializes translator cache, loading all translator metadata into memory * Initializes translator cache, loading all translator metadata into memory
@ -269,6 +270,7 @@ Zotero.Translators = new function() {
this.reinit = async function (options = {}) { this.reinit = async function (options = {}) {
await this.init(Object.assign({}, options, { reinit: true })); await this.init(Object.assign({}, options, { reinit: true }));
this._translatorsHash = null; this._translatorsHash = null;
this._sortedTranslatorHash = null;
await Zotero.QuickCopy.init(); 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) * Gets a hash of all translators (to check whether Connector needs an update)
*/ */
this.getTranslatorsHash = async function () { this.getTranslatorsHash = async function (sorted) {
if (this._translatorsHash) return this._translatorsHash; let prop = sorted ? "_sortedTranslatorHash" : "_translatorsHash";
if (this[prop]) return this[prop];
await this.init(); 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 = ""; let hashString = "";
for (let translator of translators) { for (let translator of translators) {
hashString += `${translator.translatorID}:${translator.lastUpdated},`; hashString += `${translator.translatorID}:${translator.lastUpdated},`;
} }
this._translatorsHash = Zotero.Utilities.Internal.md5(hashString); this[prop] = Zotero.Utilities.Internal.md5(hashString);
return this._translatorsHash; return this[prop];
}; };
/** /**