Use lastUpdated dates to determine whether to update translators
This commit is contained in:
parent
b1584a1eae
commit
aeef8ecc15
|
@ -41,18 +41,10 @@ Zotero.Repo = new function() {
|
||||||
_updateFromStandalone(_nextCheck <= Date.now());
|
_updateFromStandalone(_nextCheck <= Date.now());
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Reset all translators and code
|
|
||||||
*/
|
|
||||||
this.reset = function(callback) {
|
|
||||||
Zotero.Prefs.set("connector.repo.lastCheck.repoTime", 0);
|
|
||||||
this.update(true);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Force updating translators
|
* Force updating translators
|
||||||
*/
|
*/
|
||||||
var update = this.update = function(reset, callback) {
|
var update = this.update = function(reset) {
|
||||||
_updateFromStandalone(true, reset);
|
_updateFromStandalone(true, reset);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -121,7 +113,7 @@ Zotero.Repo = new function() {
|
||||||
*/
|
*/
|
||||||
function _updateFromRepo(reset, callback) {
|
function _updateFromRepo(reset, callback) {
|
||||||
var url = ZOTERO_CONFIG.REPOSITORY_URL+"/metadata?last="+
|
var url = ZOTERO_CONFIG.REPOSITORY_URL+"/metadata?last="+
|
||||||
Zotero.Prefs.get("connector.repo.lastCheck.repoTime");
|
(reset ? "0" : Zotero.Prefs.get("connector.repo.lastCheck.repoTime"));
|
||||||
|
|
||||||
Zotero.HTTP.doGet(url, function(xmlhttp) {
|
Zotero.HTTP.doGet(url, function(xmlhttp) {
|
||||||
var success = xmlhttp.status === 200;
|
var success = xmlhttp.status === 200;
|
||||||
|
|
|
@ -244,9 +244,19 @@ Zotero.Translators = new function() {
|
||||||
var newTranslator = new Zotero.Translator(newMetadata[i]);
|
var newTranslator = new Zotero.Translator(newMetadata[i]);
|
||||||
|
|
||||||
if(_translators.hasOwnProperty(newTranslator.translatorID)) {
|
if(_translators.hasOwnProperty(newTranslator.translatorID)) {
|
||||||
if(_translators[newTranslator.translatorID].lastUpdated !== newTranslator.lastUpdated) {
|
var oldLastUpdated = _translators[newTranslator.translatorID].lastUpdated;
|
||||||
|
|
||||||
|
// check whether translator has changed
|
||||||
|
if(oldLastUpdated !== newTranslator.lastUpdated) {
|
||||||
|
// check whether newTranslator is actually newer than the existing
|
||||||
|
// translator, and if not, don't update
|
||||||
|
if(Zotero.Date.sqlToDate(newTranslator.lastUpdated) < Zotero.Date.sqlToDate(oldLastUpdated)) {
|
||||||
|
Zotero.debug("Translators: Received older version of "+newTranslator.label+" from repo ("+newTranslator.lastUpdated+" vs. "+oldLastUpdated+")");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if(!Zotero.isFx) {
|
if(!Zotero.isFx) {
|
||||||
// if lastUpdated does not match between old and new translator
|
// if lastUpdated does not match between old and new translator,
|
||||||
// invalidate translator code cache
|
// invalidate translator code cache
|
||||||
delete localStorage["translatorCode-"+newTranslator.translatorID];
|
delete localStorage["translatorCode-"+newTranslator.translatorID];
|
||||||
}
|
}
|
||||||
|
@ -336,7 +346,7 @@ Zotero.Translators.CodeGetter.prototype.getCodeFor = function(i) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const TRANSLATOR_REQUIRED_PROPERTIES = ["translatorID", "translatorType", "label", "creator", "target",
|
const TRANSLATOR_REQUIRED_PROPERTIES = ["translatorID", "translatorType", "label", "creator", "target",
|
||||||
"priority"];
|
"priority", "lastUpdated"];
|
||||||
var TRANSLATOR_PASSING_PROPERTIES = TRANSLATOR_REQUIRED_PROPERTIES.concat(["displayOptions", "configOptions",
|
var TRANSLATOR_PASSING_PROPERTIES = TRANSLATOR_REQUIRED_PROPERTIES.concat(["displayOptions", "configOptions",
|
||||||
"browserSupport", "code", "runMode"]);
|
"browserSupport", "code", "runMode"]);
|
||||||
var TRANSLATOR_SAVE_PROPERTIES = TRANSLATOR_REQUIRED_PROPERTIES.concat(["browserSupport"]);
|
var TRANSLATOR_SAVE_PROPERTIES = TRANSLATOR_REQUIRED_PROPERTIES.concat(["browserSupport"]);
|
||||||
|
|
|
@ -215,17 +215,14 @@ Zotero.Server.Connector.GetTranslators.prototype = {
|
||||||
// Translator data
|
// Translator data
|
||||||
var responseData = [];
|
var responseData = [];
|
||||||
|
|
||||||
// TODO only send necessary translators
|
|
||||||
var translators = Zotero.Translators.getAll();
|
var translators = Zotero.Translators.getAll();
|
||||||
for each(var translator in translators) {
|
for each(var translator in translators) {
|
||||||
let serializableTranslator = {};
|
let serializableTranslator = {};
|
||||||
for each(var key in ["translatorID", "translatorType", "label", "creator", "target",
|
for each(var key in ["translatorID", "translatorType", "label", "creator", "target",
|
||||||
"priority", "browserSupport"]) {
|
"minVersion", "maxVersion", "configOptions", "displayOptions", "priority",
|
||||||
|
"browserSupport", "inRepository", "lastUpdated"]) {
|
||||||
serializableTranslator[key] = translator[key];
|
serializableTranslator[key] = translator[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do not pass targetless translators that do not support this browser (since that
|
|
||||||
// would mean passing each page back to Zotero)
|
|
||||||
responseData.push(serializableTranslator);
|
responseData.push(serializableTranslator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user