import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
	state: {
		// 用户信息
		user_infos: '',
		// aes化的密码信息
		row_data: '',
		// aes化的用户主密码
		row_pwd: '',
		// 配置信息
		settings: '',
		// 主页状态
		home_state: '',
	},
	mutations: {
		// 设置用户信息
		SET_USERINFO(state, user_infos) {
			state.user_infos = user_infos;
		},
		// 设置aes化的密码信息
		SET_ROWDATA(state, row_data) {
			state.row_data = row_data;
		},
		// 设置aes化的用户主密码
		SET_ROWPWD(state, row_pwd) {
			state.row_pwd = row_pwd;
		},
		// 设置配置信息
		SET_SETTINGS(state, settings) {
			state.settings = settings;
		},
		// 设置主页状态
		SET_HOMESTATE(state, home_state) {
			state.home_state = home_state
		},
	},
	actions: {
		// 设置用户信息
		setUserInfo({
			commit
		}, arg) {
			commit('SET_USERINFO', arg[0]);
			setItem.call(arg[1])
		},
		// 设置aes化的密码信息
		setRowData({
			commit
		}, arg) {
			commit('SET_ROWDATA', arg[0]);
			setItem.call(arg[1])
		},
		// 设置aes化的用户主密码
		setRowPwd({
			commit
		}, arg) {
			commit('SET_ROWPWD', arg[0]);
			setItem.call(arg[1])
		},
		// 设置配置信息
		setSettings({
			commit
		}, arg) {
			commit('SET_SETTINGS', arg[0]);
			setItem.call(arg[1])
		},
		// 设置主页状态
		setHomeState({
			commit
		}, arg) {
			commit('SET_HOMESTATE', arg[0]);
			setItem.call(arg[1])
		},
	},
	modules: {}
})


function setItem() {
  let state = this.$store.state
  for(let key of Object.keys(state)) {
    localStorage.setItem("canary_" + key , JSON.stringify(state[key]));
  }
}