snappymail/dev/Knoin/AbstractModel.js
2020-10-18 19:19:45 +02:00

32 lines
604 B
JavaScript

function disposeOne(disposable) {
if (disposable && 'function' === typeof disposable.dispose) {
disposable.dispose();
}
}
export class AbstractModel {
disposables = [];
/**
* @param {string} modelName = ''
*/
constructor() {
// this.sModelName = new.target.name;
}
regDisposables(value) {
if (Array.isArray(value)) {
value.forEach(item => this.disposables.push(item));
} else if (value) {
this.disposables.push(value);
}
}
onDestroy() {
if (Array.isArray(this.disposables)) {
this.disposables.forEach(disposeOne);
}
Object.values(this).forEach(disposeOne);
}
}