banggood-store
Version:
bang data store
154 lines (131 loc) • 5.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ObservablePromiseModel = exports.promiseStatus = exports.REJECT_ACTION = exports.RESOLVE_ACTION = undefined;
var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require("babel-runtime/helpers/createClass");
var _createClass3 = _interopRequireDefault(_createClass2);
var _metadata = require("babel-runtime/core-js/reflect/metadata");
var _metadata2 = _interopRequireDefault(_metadata);
var _defineProperty = require("babel-runtime/core-js/object/define-property");
var _defineProperty2 = _interopRequireDefault(_defineProperty);
var _typeof2 = require("babel-runtime/helpers/typeof");
var _typeof3 = _interopRequireDefault(_typeof2);
var _getOwnPropertyDescriptor = require("babel-runtime/core-js/object/get-own-property-descriptor");
var _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);
exports.observablePromise = observablePromise;
var _rxjs = require("rxjs");
var _mobx = require("mobx");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = (0, _getOwnPropertyDescriptor2.default)(target, key) : desc,
d;
if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof3.default)(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
}return c > 3 && r && (0, _defineProperty2.default)(target, key, r), r;
};
var __metadata = undefined && undefined.__metadata || function (k, v) {
if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof3.default)(Reflect)) === "object" && typeof _metadata2.default === "function") return (0, _metadata2.default)(k, v);
};
function observablePromise(data) {
return new ObservablePromiseModel(data);
}
var RESOLVE_ACTION = exports.RESOLVE_ACTION = 'observableFromPromise-resolve';
var REJECT_ACTION = exports.REJECT_ACTION = 'observableFromPromise-reject';
var promiseStatus = exports.promiseStatus = {
none: 'none',
pending: 'pending',
resolved: 'resolved',
rejected: 'rejected',
timeout: 'timeout',
serverError: 'serverError',
onLine: 'onLine'
};
function getObservableState(data) {
if (data && !(data instanceof _rxjs.Observable)) {
if ((typeof data === "undefined" ? "undefined" : (0, _typeof3.default)(data)) === 'object') {
if (data instanceof Array) {
this.state = promiseStatus.resolved;
this.data = data;
} else if (data['status'] || data['message']) {
if (data['status'] === 504) {
this.state = promiseStatus.timeout;
} else if (data['status'] === 500) {
if (!data['onLine']) {
this.state = promiseStatus.onLine;
} else {
this.state = promiseStatus.serverError;
}
} else {
this.state = promiseStatus.rejected;
}
this.data = null;
this.error = data['message'];
} else {
this.state = promiseStatus.resolved;
this.data = data;
}
}
}
}
var ObservablePromiseModel = exports.ObservablePromiseModel = function () {
function ObservablePromiseModel(data) {
var _this = this;
(0, _classCallCheck3.default)(this, ObservablePromiseModel);
// promise = null;
this.state = promiseStatus.none;
this.error = null;
this.data = null;
if (data instanceof _rxjs.Observable) {
this.state = promiseStatus.pending;
var subscription = data.subscribe({
next: (0, _mobx.action)(function (result) {
getObservableState.call(_this, result);
subscription.unsubscribe();
//return Object.assign({},this);
}),
error: function error(err) {
console.log(err);
}
});
}
getObservableState.call(this, data);
}
(0, _createClass3.default)(ObservablePromiseModel, [{
key: "isPending",
get: function get() {
return this.state === promiseStatus.pending;
}
}, {
key: "isResolved",
get: function get() {
return this.state === promiseStatus.resolved;
}
}, {
key: "isRejected",
get: function get() {
return this.state === promiseStatus.rejected;
}
}, {
key: "isTimeout",
get: function get() {
return this.state === promiseStatus.timeout;
}
}, {
key: "isServerError",
get: function get() {
return this.state === promiseStatus.serverError;
}
}, {
key: "isOnLine",
get: function get() {
return this.state !== promiseStatus.onLine;
}
}]);
return ObservablePromiseModel;
}();
__decorate([_mobx.observable, __metadata("design:type", Object)], ObservablePromiseModel.prototype, "state", void 0);
__decorate([_mobx.observable, __metadata("design:type", Object)], ObservablePromiseModel.prototype, "data", void 0);