UNPKG

vuex-xhr-state

Version:

Use Vuex to manage the state of you're ajax calls.

66 lines (65 loc) 2.23 kB
var _a, _b, _c; export var GLOBAL_NAMESPACE = 'globalXhrState'; var MUTATIONS = { ADD_PENDING: 'ADD_PENDING', REMOVE_PENDING: 'END_PENDING', SET_ERROR: 'SET_ERROR', RESET_ERROR: 'RESET_ERROR', }; export var GLOBAL_ACTIONS = { REQUEST: 'REQUEST', RECEIVED: 'END_PENDING', FAILED: 'SET_ERROR', RESET_ERROR: 'RESET_ERROR', }; export var GLOBAL_GETTERS = { ANY_PENDING: 'ANY_PENDING', ANY_ERROR: 'ANY_ERROR', LAST_ERROR_RESPONSE: 'LAST_ERROR_RESPONSE', }; var ACTIONS = GLOBAL_ACTIONS; var unique = function (array) { return array.filter(function (el, index, arr) { return index === arr.indexOf(el); }); }; export var globalStore = { namespaced: true, state: { activeLoaders: [], // inError: false, last_error: {}, }, getters: (_a = {}, _a[GLOBAL_GETTERS.ANY_PENDING] = function (state) { return state.activeLoaders.length > 0; }, // [GLOBAL_GETTERS.ANY_ERROR]: state => state.inError, _a[GLOBAL_GETTERS.LAST_ERROR_RESPONSE] = function (state) { return state.last_error; }, _a), actions: (_b = {}, _b[ACTIONS.REQUEST] = function (_a, key) { var commit = _a.commit; return commit(MUTATIONS.ADD_PENDING, key); }, _b[ACTIONS.RECEIVED] = function (_a, key) { var commit = _a.commit; return commit(MUTATIONS.REMOVE_PENDING, key); }, _b[ACTIONS.FAILED] = function (_a, payload) { var commit = _a.commit; if (!payload.catched) { commit(MUTATIONS.SET_ERROR, payload); } commit(MUTATIONS.REMOVE_PENDING, payload.key); }, _b), mutations: (_c = {}, _c[MUTATIONS.ADD_PENDING] = function (state, key) { state.activeLoaders.push(key); state.activeLoaders = unique(state.activeLoaders); }, _c[MUTATIONS.REMOVE_PENDING] = function (state, key) { state.activeLoaders = unique(state.activeLoaders).filter(function (p) { return p !== key; }); }, _c[MUTATIONS.SET_ERROR] = function (state, payload) { state.last_error = payload.response; }, _c), };