import {
		postTokenApi,
		getUserInfoApi,
	} from '@/config/api.js';

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

	})

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

	// actions
	const actions = {

		async login({
			commit,
			dispatch,
			state
		}, params) {
			const login_result = await postTokenApi({
				...params
			}, {
				custom: {
					auth: false
				}
			});
			
			console.log(login_result)

			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/student/my/freezing/freezing',
							type: 'navigateTo',
						});
						break;

					case 'active': //已注册
						const userInfo = await dispatch(`getUserInfo`);

						// if (userInfo) {
						// 	const {
						// 		student = {}
						// 	} = userInfo;
						// 	if (student && JSON.stringify(student) != '{}' && student.status == 'verified') {
						// 		uni.$u.route({
						// 			url: 'pages/student/tabBar/internship/internship',
						// 			type: 'switchTab',
						// 			params: {

						// 			}
						// 		})

						// 	} else {
						// 		uni.$u.route({
						// 			url: `/pages/student/my/student-status-certification/student-status-certification`,
						// 			type: 'reLaunch',
						// 			params: {

						// 			}
						// 		})
						// 	}
						// }

						break;
				}

				return login_result;
			}


		},

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

			await uni.$u.vuex('vuex_user', {});
			await uni.$u.vuex('vuex_token', {});
			await uni.setStorageSync('lifeData', {});

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

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

			const userInfo = await getUserInfoApi();
			
			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
	}