UNPKG

undo-redo-vuex

Version:

A Vuex plugin for module namespaced undo and redo functionality. This plugin takes inspiration from and extends the work of [vuex-undo-redo](https://github.com/anthonygore/vuex-undo-redo).

84 lines (72 loc) 1.64 kB
const debug = process.env.NODE_ENV !== "production"; const state = { token: "", status: "" }; const validateToken = (token: string) => token === "login-token"; const getters = { isAuthenticated: (state: any) => validateToken(state.token) }; const apiLogin = (): Promise<{ token: string }> => new Promise(resolve => { setTimeout(() => { resolve({ token: "login-token" }); }, 200); }); const apiLogout = () => new Promise(resolve => { setTimeout(() => { resolve(); }, 200); }); const actions = { async login({ commit }: { commit: any }) { try { commit("setStatusLoading"); const { token } = await apiLogin(); validateToken(token); commit("setStatusSuccess", { token }); } catch (e) { console.error(e); commit("setStatusError"); } }, async logout({ commit }: { commit: any }) { try { commit("setStatusLoading"); await apiLogout(); commit("setStatusLoggedOut"); } catch (e) { console.error(e); commit("setStatusError"); } } }; const mutations = { setStatusLoading(state: any) { state.status = "loading"; }, setStatusSuccess(state: any, { token }: { token: string }) { state.status = "success"; state.token = token; }, setToken(state: any, { token }: { token: string }) { state.token = token; }, setStatusError(state: any) { state.status = "error"; state.token = ""; }, setStatusLoggedOut(state: any) { state.status = "success"; state.token = ""; } }; export default { state, getters, actions, mutations, namespaced: true, debug };