const state = () => ({
	openid: '',
	isReg: '',
	id: '',
	name: '',
	number: '',
	password: '',
	phone: '',
	status: '',
	type: '',
	username: '',
	userBasicInfo: {},

})

// getters
const getters = {
	// doneOpenid: (state, getters, rootState) => {
	// 	return state.openid
	// },
}

// actions
const actions = {

	async login({
		commit,
		dispatch,
		state
	}, params) {
		const login_result = await uni.$u.api.getLoginApi({
			...params
		});

		if (login_result) {
			
			let vuex_token = `Bearer ${login_result.access_token}`
			await uni.$u.vuex('vuex_token', vuex_token);
			await uni.$u.vuex('vuex_phone', login_result.phone);

			switch (login_result.status) {

				case 'not_reg': //未注册
					// uni.$u.route({
					// 	url: '/pages/student/my/login/login',
					// 	type: 'reLaunch',
					// });
					break;

				case 'annulled': //已注销
					// uni.$u.route({
					// 	url: '/pages/student/my/written-off/written-off',
					// 	type: 'navigateTo',
					// });
					break;

				case 'annulling': //注销中
					uni.$u.route({
						url: '/pages/common/login/login',
						// type: 'navigateTo',
					});
					break;

				case 'active': //已注册
					const userInfo = await dispatch(`getUserInfo`);
					
					if (userInfo) {
						uni.navigateBack({
							delta: 1
						});
					}
					
					break;
			}
			
			return login_result;
		}


	},

	async loginOut({
		commit,
		dispatch,
		state
	}, params) {
		console.log('loginOut')
		await uni.$u.vuex('vuex_user', '');
		await uni.$u.vuex('vuex_token', '');
		await uni.setStorageSync('lifeData', {});

		uni.$u.route('/pages/common/login/login');
	},

	async getUserInfo({
		commit,
		dispatch,
		state
	}, params) {

		const userInfo = await uni.$u.api.getUserApi();
		await uni.$u.vuex('vuex_user', userInfo);

		return userInfo;
	},
}

// mutations
const mutations = {

	setUserInfo(state, userInfo) {
		state.id = userInfo.id;
		state.name = userInfo.name;
		state.phone = userInfo.phone;
		state.username = userInfo.username;
		state.userBasicInfo = userInfo.userBasicInfo;
	},
}

export default {
	namespaced: true,
	state,
	getters,
	actions,
	mutations
}