UNPKG

apollo-mobx

Version:

HOC for querying graphql server

79 lines (78 loc) 2.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var mobx_1 = require("mobx"); var utils_1 = require("./utils"); var Observer = (function () { function Observer() { this.data = {}; this.loading = true; this.networkStatus = 0; this.version = 0; } Observer.prototype.start = function (client, query, _a) { var _this = this; var variables = _a.variables, options = tslib_1.__rest(_a, ["variables"]); if (this.client !== client) { this.client = client; this.variables = variables; this.cleanup(); } else if (!utils_1.shallowCompare(this.variables, variables)) { this.loading = true; this.variables = variables; this.cleanup(); } else if (this.query) { return; } return new Promise(function () { _this.loading = true; _this.query = client.watchQuery(tslib_1.__assign({ query: query, variables: variables }, options)); _this.query.options.notifyOnNetworkStatusChange = true; var applyChanges = mobx_1.action(function (res) { _this.data = res.data; _this.loading = res.loading; _this.networkStatus = res.networkStatus; _this.version++; }); _this.subscription = _this.query.subscribe({ next: function (result) { applyChanges(result); }, error: function (err) { console.error('err', err); } }); }); }; Observer.prototype.finish = function () { this.loading = false; this.networkStatus = 0; }; Observer.prototype.cleanup = function () { if (this.subscription) { this.subscription.unsubscribe(); } }; tslib_1.__decorate([ mobx_1.observable, tslib_1.__metadata("design:type", Object) ], Observer.prototype, "loading", void 0); tslib_1.__decorate([ mobx_1.observable, tslib_1.__metadata("design:type", Object) ], Observer.prototype, "networkStatus", void 0); tslib_1.__decorate([ mobx_1.observable, tslib_1.__metadata("design:type", Object) ], Observer.prototype, "version", void 0); tslib_1.__decorate([ mobx_1.action, tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", []), tslib_1.__metadata("design:returntype", void 0) ], Observer.prototype, "finish", null); return Observer; }()); exports.Observer = Observer;