import Vue from "vue"; import Vuex from "vuex"; import { Auth } from "aws-amplify"; Vue.use(Vuex); const store = new Vuex.Store({ state: { authorized: false, user: null, userEmail: null }, mutations: { user(state, user) { state.authorized = !!user && user.attributes && user.attributes.email_verified; state.user = user; }, userEmail(state, userEmail) { state.userEmail = userEmail; } }, actions: { async fetchUser({ commit }) { try { const user = await Auth.currentAuthenticatedUser(); const expires = user.getSignInUserSession().getIdToken().payload.exp - Math.floor(new Date().getTime() / 1000); console.log(`Token expires in ${expires} seconds.`); commit("user", user); commit("userEmail", user.attributes.email); } catch (err) { commit("user", null); commit("userEmail", null); } } }, modules: {}, // getters: { // userEmail: state => { // return state.userEmail; // } // } }); // store.dispatch.fetchUser() export default store;