import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ state: { token: '', userId: '', role: 'student', alumniVerify: 'pending', classId: '', name: '', nickname: '', phone: '', newUser: false }, getters: { isLoggedIn: function(state) { return !!state.token }, isVerified: function(state) { return state.alumniVerify === 'accepted' }, hasClass: function(state) { return state.classId !== '' && state.classId !== null } }, mutations: { setToken(state, token) { state.token = token uni.setStorageSync('token', token) }, setUserInfo(state, userInfo) { state.userId = userInfo.userId state.role = userInfo.role || 'student' state.alumniVerify = userInfo.alumniVerify || 'pending' state.classId = userInfo.classId || '' state.name = userInfo.name || '' state.nickname = userInfo.nickname || '' state.phone = userInfo.phone || '' state.newUser = userInfo.newUser || false uni.setStorageSync('userId', userInfo.userId) uni.setStorageSync('role', state.role) uni.setStorageSync('alumniVerify', state.alumniVerify) uni.setStorageSync('classId', state.classId) uni.setStorageSync('userInfo', { userId: userInfo.userId, role: state.role, alumniVerify: state.alumniVerify, classId: state.classId, name: state.name, nickname: state.nickname, phone: state.phone }) }, setClassId(state, classId) { state.classId = classId uni.setStorageSync('classId', classId) }, setAlumniVerify(state, status) { state.alumniVerify = status uni.setStorageSync('alumniVerify', status) var userInfo = uni.getStorageSync('userInfo') || {} userInfo.alumniVerify = status uni.setStorageSync('userInfo', userInfo) }, logout(state) { state.token = '' state.userId = '' state.role = 'student' state.alumniVerify = 'pending' state.classId = '' state.name = '' state.nickname = '' state.phone = '' state.newUser = false uni.removeStorageSync('token') uni.removeStorageSync('userId') uni.removeStorageSync('role') uni.removeStorageSync('alumniVerify') uni.removeStorageSync('classId') uni.removeStorageSync('userInfo') } }, actions: { login({ commit }, data) { commit('setToken', data.token) commit('setUserInfo', { userId: data.userId, role: data.role, alumniVerify: data.alumniVerify, classId: data.classId, name: data.name, nickname: data.nickname, phone: data.phone, newUser: data.newUser }) } } }) export default store