UNPKG

react-query

Version:

Hooks for managing, caching and syncing asynchronous and remote data in React

124 lines (97 loc) 3.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.MutationCache = void 0; var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _notifyManager = require("./notifyManager"); var _mutation = require("./mutation"); var _utils = require("./utils"); var _subscribable = require("./subscribable"); // CLASS var MutationCache = /*#__PURE__*/function (_Subscribable) { (0, _inheritsLoose2.default)(MutationCache, _Subscribable); function MutationCache(config) { var _this; _this = _Subscribable.call(this) || this; _this.config = config || {}; _this.mutations = []; _this.mutationId = 0; return _this; } var _proto = MutationCache.prototype; _proto.build = function build(client, options, state) { var mutation = new _mutation.Mutation({ mutationCache: this, mutationId: ++this.mutationId, options: client.defaultMutationOptions(options), state: state, defaultOptions: options.mutationKey ? client.getMutationDefaults(options.mutationKey) : undefined, meta: options.meta }); this.add(mutation); return mutation; }; _proto.add = function add(mutation) { this.mutations.push(mutation); this.notify(mutation); }; _proto.remove = function remove(mutation) { this.mutations = this.mutations.filter(function (x) { return x !== mutation; }); mutation.cancel(); this.notify(mutation); }; _proto.clear = function clear() { var _this2 = this; _notifyManager.notifyManager.batch(function () { _this2.mutations.forEach(function (mutation) { _this2.remove(mutation); }); }); }; _proto.getAll = function getAll() { return this.mutations; }; _proto.find = function find(filters) { if (typeof filters.exact === 'undefined') { filters.exact = true; } return this.mutations.find(function (mutation) { return (0, _utils.matchMutation)(filters, mutation); }); }; _proto.findAll = function findAll(filters) { return this.mutations.filter(function (mutation) { return (0, _utils.matchMutation)(filters, mutation); }); }; _proto.notify = function notify(mutation) { var _this3 = this; _notifyManager.notifyManager.batch(function () { _this3.listeners.forEach(function (listener) { listener(mutation); }); }); }; _proto.onFocus = function onFocus() { this.resumePausedMutations(); }; _proto.onOnline = function onOnline() { this.resumePausedMutations(); }; _proto.resumePausedMutations = function resumePausedMutations() { var pausedMutations = this.mutations.filter(function (x) { return x.state.isPaused; }); return _notifyManager.notifyManager.batch(function () { return pausedMutations.reduce(function (promise, mutation) { return promise.then(function () { return mutation.continue().catch(_utils.noop); }); }, Promise.resolve()); }); }; return MutationCache; }(_subscribable.Subscribable); exports.MutationCache = MutationCache;