vuex-xhr-state
Version:
Use Vuex to manage the state of you're ajax calls.
33 lines (32 loc) • 1.32 kB
JavaScript
import { payloadToKey } from './helpers';
import { GET } from './keys';
export default (function (cache) {
var _a;
var result = (_a = {},
_a[GET.PENDING] = function (state) { return function (payload) {
return state.PENDING[payloadToKey(payload)];
}; },
_a);
if (cache) {
result[GET.HAS_ERROR] = function (state) { return function (payload) {
return state.ERROR[payloadToKey(payload)];
}; };
result[GET.FETCHED] = function (state) { return function (payload) {
return state.FETCHED[payloadToKey(payload)];
}; };
result[GET.DATA] = function (state) { return function (payload) {
var key = payloadToKey(payload);
if (state.RESPONSE[key] && !state.ERROR[key]) {
// @todo split response en error response in different state variable
// @ts-ignore
return state.RESPONSE[key].data;
}
return state.DEFAULT;
}; };
result[GET.RESPONSE] = function (state) {
return function (payload) { return state.RESPONSE[payloadToKey(payload)]; };
};
result[GET.PAYLOAD_KEYS] = function (state) { return function () { return Object.keys(state.RESPONSE); }; };
}
return result;
});