banggood-store
Version:
bang data store
99 lines (85 loc) • 2.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DisposeFunction = exports.default = undefined;
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
exports.dispose = dispose;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var StateManage = function () {
function StateManage() {
(0, _classCallCheck3.default)(this, StateManage);
this.states = {};
}
(0, _createClass3.default)(StateManage, [{
key: 'get',
value: function get(type) {
var Name = type.Name,
namespace = type.meta.namespace;
var name = Name;
var states = this.states[namespace];
return states ? states[name] : null;
}
}, {
key: 'set',
value: function set(type, value) {
var Name = type.Name,
namespace = type.meta.namespace;
var name = Name;
var states = this.states[namespace];
if (!states) {
states = this.states[namespace] = {};
}
var state = states[name];
if (state && state != value) {
dispose(state);
}
states[name] = value;
}
}, {
key: 'remove',
value: function remove(type) {
var Name = type.Name,
namespace = type.meta.namespace;
var name = Name;
var states = this.states[namespace];
if (!states) {
return;
}
var state = states[name];
if (state) {
dispose(state);
delete states[name];
}
}
}, {
key: 'clear',
value: function clear() {
for (var namespace in this.states) {
var states = this.states[namespace];
//console.info(this.states);
for (var name in states) {
// console.info(states[name]);
dispose(states[name]);
}
}
this.states = {};
}
}]);
return StateManage;
}();
exports.default = StateManage;
var DisposeFunction = exports.DisposeFunction = 'onDispose';
function dispose(state) {
//console.info(state[DisposeFunction]);
if (state && state[DisposeFunction] && typeof state[DisposeFunction] === 'function') {
try {
state[DisposeFunction]();
} catch (e) {
console.error(e);
}
}
}