Fix removed translator handling in connectors
This commit is contained in:
parent
c5527a82fb
commit
a853bb0661
|
@ -225,22 +225,17 @@ Zotero.Translators = new function() {
|
||||||
if(!_initialized) Zotero.Translators.init();
|
if(!_initialized) Zotero.Translators.init();
|
||||||
if(!newMetadata.length) return;
|
if(!newMetadata.length) return;
|
||||||
|
|
||||||
if(reset) {
|
if(!reset) {
|
||||||
var serializedTranslators = newMetadata.filter(function(translator) {
|
var existingTranslatorIDs = new Set();
|
||||||
return !translator.deleted;
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
var serializedTranslators = [];
|
var serializedTranslators = [];
|
||||||
var hasChanged = false;
|
var hasChanged = false;
|
||||||
|
|
||||||
// Update translators with new metadata
|
// Update translators with new metadata
|
||||||
for(var i in newMetadata) {
|
for(var i in newMetadata) {
|
||||||
var newTranslator = newMetadata[i];
|
var newTranslator = newMetadata[i];
|
||||||
|
existingTranslatorIDs.add(newTranslator.translatorID);
|
||||||
|
|
||||||
if(newTranslator.deleted) {
|
if(_translators.hasOwnProperty(newTranslator.translatorID)) {
|
||||||
// handle translator deletions
|
|
||||||
delete _translators[newTranslator.translatorID];
|
|
||||||
} else if(_translators.hasOwnProperty(newTranslator.translatorID)) {
|
|
||||||
var oldTranslator = _translators[newTranslator.translatorID];
|
var oldTranslator = _translators[newTranslator.translatorID];
|
||||||
|
|
||||||
// check whether translator has changed
|
// check whether translator has changed
|
||||||
|
@ -251,17 +246,26 @@ Zotero.Translators = new function() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Zotero.debug("Translators: Updating "+newTranslator.label);
|
Zotero.debug(`Translators: Updating ${newTranslator.label}`);
|
||||||
oldTranslator.init(newTranslator);
|
oldTranslator.init(newTranslator);
|
||||||
hasChanged = true;
|
hasChanged = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Zotero.debug("Translators: Adding "+newTranslator.label);
|
Zotero.debug(`Translators: Adding ${newTranslator.label}`);
|
||||||
_translators[newTranslator.translatorID] = new Zotero.Translator(newTranslator);
|
_translators[newTranslator.translatorID] = new Zotero.Translator(newTranslator);
|
||||||
hasChanged = true;
|
hasChanged = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let deletedTranslators = Object.keys(_translators).filter((ID) => !existingTranslatorIDs.has(ID));
|
||||||
|
if (deletedTranslators.length) {
|
||||||
|
hasChanged = true;
|
||||||
|
for (let ID of deletedTranslators) {
|
||||||
|
Zotero.debug(`Translators: Removing ${_translators[ID].label}`);
|
||||||
|
delete _translators[ID];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(!hasChanged) return;
|
if(!hasChanged) return;
|
||||||
|
|
||||||
// Serialize translators
|
// Serialize translators
|
||||||
|
|
Loading…
Reference in New Issue
Block a user