commit 8e083c688a32d64fbba8a48e58fbc2fcccfe1be1
parent 2f65c7d29c08cf41c261e1219d57f57001a5f07d
Author: Adomas VenĨkauskas <adomas.ven@gmail.com>
Date: Mon, 19 Dec 2016 11:38:56 +0200
Fix connector translator caching from repo and standalone
Diffstat:
2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/chrome/content/zotero/xpcom/connector/repo.js b/chrome/content/zotero/xpcom/connector/repo.js
@@ -150,7 +150,8 @@ Zotero.Repo = new function() {
if(!result && tryRepoOnFailure) {
_updateFromRepo(reset, callback);
} else {
- _handleResponse(result, reset);
+ // Standalone always returns all translators without .deleted property
+ _handleResponse(result, true);
if(callback) callback(!!result);
}
});
diff --git a/chrome/content/zotero/xpcom/connector/translator.js b/chrome/content/zotero/xpcom/connector/translator.js
@@ -222,18 +222,19 @@ Zotero.Translators = new function() {
* the specified translators.
*/
this.update = function(newMetadata, reset) {
- if(!_initialized) Zotero.Translators.init();
- if(!newMetadata.length) return;
+ if (!_initialized) Zotero.Translators.init();
+ if (!newMetadata.length) return;
+ var serializedTranslators = [];
- if(!reset) {
- var existingTranslatorIDs = new Set();
- var serializedTranslators = [];
+ if (reset) {
+ serializedTranslators = newMetadata.map((t) => new Zotero.Translator(t));
+ }
+ else {
var hasChanged = false;
// Update translators with new metadata
for(var i in newMetadata) {
var newTranslator = newMetadata[i];
- existingTranslatorIDs.add(newTranslator.translatorID);
if(_translators.hasOwnProperty(newTranslator.translatorID)) {
var oldTranslator = _translators[newTranslator.translatorID];
@@ -257,11 +258,11 @@ Zotero.Translators = new function() {
}
}
- let deletedTranslators = Object.keys(_translators).filter(id => !existingTranslatorIDs.has(id));
+ let deletedTranslators = Object.keys(_translators).filter(id => _translators[id].deleted);
if (deletedTranslators.length) {
hasChanged = true;
for (let id of deletedTranslators) {
- Zotero.debug(`Translators: Removing ${_translators[ID].label}`);
+ Zotero.debug(`Translators: Removing ${_translators[id].label}`);
delete _translators[id];
}
}
@@ -326,7 +327,7 @@ Zotero.Translators.CodeGetter.prototype.getCodeFor = Zotero.Promise.method(funct
// include test cases)
|| (Zotero.Repo && translator.codeSource === Zotero.Repo.SOURCE_REPO)))) {
// get code
- return translator.getCode();
+ return translator.getCode().catch((e) => Zotero.debug(`Failed to retrieve code for ${translator.translatorID}`));
}
});