vuex-xhr-state
Version:
Use Vuex to manage the state of you're ajax calls.
37 lines (36 loc) • 1.82 kB
JavaScript
import { MUTATIONS } from './keys';
import initialState from './state';
export default (function (options) {
var _a;
return _a = {},
_a[MUTATIONS.REQUEST] = function (state, payload) {
var _a;
state.PENDING = Object.assign({}, state.PENDING, (_a = {}, _a[payload.key] = true, _a));
},
_a[MUTATIONS.RECEIVED] = function (state, payload) {
var _a, _b, _c, _d;
state.PENDING = Object.assign({}, state.PENDING, (_a = {}, _a[payload.key] = false, _a));
if (options.cache) {
state.ERROR = Object.assign({}, state.ERROR, (_b = {}, _b[payload.key] = false, _b));
state.FETCHED = Object.assign({}, state.FETCHED, (_c = {}, _c[payload.key] = true, _c));
state.RESPONSE = Object.assign({}, state.RESPONSE, (_d = {}, _d[payload.key] = payload.response, _d));
}
},
_a[MUTATIONS.FAILED] = function (state, payload) {
var _a, _b, _c, _d;
state.PENDING = Object.assign({}, state.PENDING, (_a = {}, _a[payload.key] = false, _a));
if (options.cache) {
state.ERROR = Object.assign({}, state.ERROR, (_b = {}, _b[payload.key] = true, _b));
state.FETCHED = Object.assign({}, state.FETCHED, (_c = {}, _c[payload.key] = false, _c));
state.RESPONSE = Object.assign({}, state.RESPONSE, (_d = {}, _d[payload.key] = payload.response, _d));
}
},
_a[MUTATIONS.INVALIDATE] = function (state, payload) {
var _a;
state.FETCHED = Object.assign({}, state.FETCHED, (_a = {}, _a[payload.key] = false, _a));
},
_a[MUTATIONS.RESET] = function (state) {
Object.assign(state, initialState(options));
},
_a;
});