Fx60: Replace Object.watch() in locateManager

This commit is contained in:
Dan Stillman 2019-01-24 19:07:56 -05:00
parent 3688564c69
commit a9d142c83a

View file

@ -277,17 +277,14 @@ Zotero.LocateManager = new function() {
* @param {Object} [obj] The locate engine, in parsed form, as it was serialized to JSON * @param {Object} [obj] The locate engine, in parsed form, as it was serialized to JSON
*/ */
var LocateEngine = function(obj) { var LocateEngine = function(obj) {
this.alias = this.name = "Untitled"; this._alias = this._name = "Untitled";
this.description = this._urlTemplate = this.icon = null; this._description = null;
this.hidden = false; this._icon = null;
this._hidden = false;
this._urlTemplate = null;
this._urlParams = []; this._urlParams = [];
if(obj) for(var prop in obj) this[prop] = obj[prop]; if(obj) for(var prop in obj) this[prop] = obj[prop];
// Queue deferred serialization whenever a property is modified
for (let prop of ["alias", "name", "description", "icon", "hidden"]) {
this.watch(prop, _watchLocateEngineProperties);
}
} }
LocateEngine.prototype = { LocateEngine.prototype = {
@ -488,4 +485,19 @@ Zotero.LocateManager = new function() {
this.icon = OS.Path.toFileURI(iconFile); this.icon = OS.Path.toFileURI(iconFile);
} }
} }
// Queue deferred serialization whenever a property is modified
for (let prop of ["alias", "name", "description", "icon", "hidden"]) {
let propName = '_' + prop;
Object.defineProperty(LocateEngine.prototype, prop, {
get: function () {
return this[propName];
},
set: function (val) {
var oldVal = this[propName];
this[propName] = val;
_watchLocateEngineProperties(prop, oldVal, val);
}
});
}
} }