Don't store translator code in localStorage

This commit is contained in:
Simon Kornblith 2011-06-30 22:14:45 +00:00
parent 39298312db
commit 1d72849d99
2 changed files with 13 additions and 26 deletions

View file

@ -55,16 +55,7 @@ Zotero.Repo = new function() {
* @param {Function} callback Callback to pass code when retreived
*/
this.getTranslatorCode = function(translatorID, callback) {
// we might have code in localstorage
if(!Zotero.isFx) {
var localCode = localStorage[TRANSLATOR_CODE_PREFIX+translatorID];
if(localCode) {
callback(localCode);
return;
}
}
// otherwise, try standalone
// try standalone
Zotero.Connector.callMethod("getTranslatorCode", {"translatorID":translatorID}, function(result) {
if(result) {
_haveCode(result, translatorID, callback);
@ -95,8 +86,8 @@ Zotero.Repo = new function() {
// repo. if not (because it's from a different source), we won't save it.
var lastUpdatedIndex = code.indexOf('"lastUpdated"');
if (lastUpdatedIndex == -1) {
callback(false);
Zotero.logError(new Error("Invalid or missing translator metadata JSON object for " + translatorID));
callback(false);
return;
}
@ -105,20 +96,20 @@ Zotero.Repo = new function() {
var m = infoRe.exec(header);
if (!m) {
Zotero.logError(new Error("Invalid or missing translator metadata JSON object for " + translatorID));
callback(false);
return;
}
var metadata = JSON.parse(m[0]);
var translator = Zotero.Translators.getWithoutCode(translatorID);
if(metadata.lastUpdated === translator.lastUpdated) {
localStorage["translatorCode-"+translatorID] = code;
} else if(Zotero.Date.sqlToDate(metadata.lastUpdated) > Zotero.Date.sqlToDate(translator.lastUpdated)) {
Zotero.debug("Repo: Retrieved code for "+metadata.label+" newer than stored metadata; updating");
Zotero.Translators.update([metadata]);
localStorage["translatorCode-"+translatorID] = code;
} else {
Zotero.debug("Repo: Retrieved code for "+metadata.label+" older than stored metadata; not caching");
if(metadata.lastUpdated !== translator.lastUpdated) {
if(Zotero.Date.sqlToDate(metadata.lastUpdated) > Zotero.Date.sqlToDate(translator.lastUpdated)) {
Zotero.debug("Repo: Retrieved code for "+metadata.label+" newer than stored metadata; updating");
Zotero.Translators.update([metadata]);
} else {
Zotero.debug("Repo: Retrieved code for "+metadata.label+" older than stored metadata; not caching");
}
}
}
callback(code);

View file

@ -230,7 +230,7 @@ Zotero.Translators = new function() {
}
/**
* Saves all translator data to localStorage
* Saves all translator metadata to localStorage
* @param {Object[]} newMetadata Metadata for new translators
* @param {Boolean} reset Whether to clear all existing translators and overwrite them with
* the specified translators.
@ -244,6 +244,8 @@ Zotero.Translators = new function() {
if(!Zotero.isFx) {
// clear cached translatorCode
Zotero.debug("Translators: Resetting translators");
// XXX this is only to clear localStorage for people who installed yesterday and
// should disappear soon
for(var i in localStorage) {
if(i.substr(0, TRANSLATOR_CODE_PREFIX.length) === TRANSLATOR_CODE_PREFIX) {
delete localStorage[i];
@ -270,12 +272,6 @@ Zotero.Translators = new function() {
continue;
}
if(!Zotero.isFx) {
// if lastUpdated does not match between old and new translator,
// invalidate translator code cache
delete localStorage["translatorCode-"+newTranslator.translatorID];
}
Zotero.debug("Translators: Updating "+newTranslator.label);
oldTranslator.init(newTranslator);
hasChanged = true;