import { createStore } from 'vuex' import { reportVisitPage } from '@/api.js' const loginStatusEnum = { notLogin: 'not-login', visitor: 'visitor', wxUser: 'wxUser', } export default createStore({ state: { haveShownStartUp: true, // 暂定不使用加载页 loginStatus: loginStatusEnum.notLogin, token: '', userInfo: { userName: '', userId: null, }, pageVisitRecord: {}, }, getters: { loginStatusEnum() { return loginStatusEnum } }, mutations: { recordShowStartUp(state) { state.haveShownStartUp = true }, setLoginStatus(state, value) { state.loginStatus = value }, setUserName(state, value) { state.userInfo.userName = value }, setToken(state, value) { state.token = value localStorage.setItem('token', value) }, setUserInfo(state, value) { state.userInfo = value localStorage.setItem('userInfo', JSON.stringify(value)) if (state.userInfo.score === null) { state.userInfo.score = 0 } }, logoutCallback(state) { state.loginStatus = loginStatusEnum.notLogin state.token = '' localStorage.removeItem('token') state.userInfo = {} localStorage.removeItem('userInfo') }, getPageVisitRecordFromStorage(state) { let pageVisitRecordStr = localStorage.getItem('pageVisitRecord') if (pageVisitRecordStr) { state.pageVisitRecord = JSON.parse(pageVisitRecordStr) } }, setPageVisitRecord(state, value) { state.pageVisitRecord = value } }, actions: { recordPageVisitIfNeeded({ state, commit }, { pageId }) { let needUpdateStorage = false let userId = undefined if (state.loginStatus !== loginStatusEnum.wxLogin) { userId = 'visitor' } else { userId = state.userInfo.userId } if (!state.pageVisitRecord[userId]) { state.pageVisitRecord[userId] = {} needUpdateStorage = true } let lastVisitTime = undefined lastVisitTime = state.pageVisitRecord[userId][pageId] if (lastVisitTime === undefined) { state.pageVisitRecord[userId][pageId] = 0 needUpdateStorage = true } let lastVisitTimeObj = new Date(lastVisitTime) let thisVisitTimeObj = new Date() if (!(lastVisitTimeObj.getFullYear() === thisVisitTimeObj.getFullYear() && lastVisitTimeObj.getMonth() === thisVisitTimeObj.getMonth() && lastVisitTimeObj.getDay() === thisVisitTimeObj.getDay())) { state.pageVisitRecord[userId][pageId] = thisVisitTimeObj.getTime() needUpdateStorage = true reportVisitPage(pageId) } if (needUpdateStorage) { localStorage.setItem('pageVisitRecord', JSON.stringify(state.pageVisitRecord)) } } }, modules: { } })