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

Vue.use(Vuex); //vue的插件机制

import api from '@/api/api.js'

//Vuex.Store 构造器选项
const store = new Vuex.Store({
	state: {
		configList: {}, //配置列表
		userInfo: {}, //用户信息
		themeMode: uni.getStorageSync('themeMode') || 'light', // 主题模式：light(白天)或dark(黑夜)
		isLogin : !!uni.getStorageSync('token')
	},
	getters: {
		// 当前主题模式
		currentTheme(state) {
			return state.themeMode
		},
		// 是否为黑夜模式
		isDarkMode(state) {
			return state.themeMode === 'dark'
		}
	},
	mutations: {
		// 初始化配置
		initConfig(state) {
			api('getConfig', res => {
				if (res.code == 200) {
					// state.configList = res.result

					res.result.forEach(n => {
						state.configList[n.keyName] = n.keyContent
					})
				}
			})
		},
		// 切换主题模式
		toggleThemeMode(state) {
			state.themeMode = state.themeMode === 'light' ? 'dark' : 'light'
			// 保存到本地存储，以便下次打开时恢复
			uni.setStorageSync('themeMode', state.themeMode)
		},
		// 设置为指定主题模式
		setThemeMode(state, mode) {
			if (mode === 'light' || mode === 'dark') {
				state.themeMode = mode
				// 保存到本地存储，以便下次打开时恢复
				uni.setStorageSync('themeMode', state.themeMode)
			}
		},
		// 初始化主题模式
		initThemeMode(state) {
			// 从本地存储中读取主题设置
			const savedMode = uni.getStorageSync('themeMode')
			if (savedMode) {
				state.themeMode = savedMode
			}
		},
		login(state) {
			uni.showLoading({
				title: '登录中...'
			})
			uni.login({
				success(res) {
					if (res.errMsg != "login:ok") {
						return
					}

					api('wxLogin', {
						code: res.code
					}, res => {

						uni.hideLoading()

						if (res.code != 200) {
							return
						}

						state.userInfo = res.result.userInfo
						uni.setStorageSync('token', res.result.token)
						state.isLogin = true

						if (!state.userInfo.nickName || !state.userInfo.headImage) {
							uni.navigateTo({
								url: '/pages_order/auth/wxUserInfo'
							})
						} else {
							uni.navigateBack(-1)
						}
					})
				}
			})
		},
		getUserInfo(state) {
			api('getUserInfo', res => {
				if (res.code == 200) {
					state.userInfo = res.result
				}
			})
		},
		// 退出登录
		logout(state, title = '确认退出登录吗') {
			uni.showModal({
				title,
				success(r) {
					if (r.confirm) {
						state.userInfo = {}
						state.isLogin = false
						uni.removeStorageSync('token')
						uni.reLaunch({
							url: '/pages/index/index'
						})
					}
				}
			})
		},
	},
	actions: {},
})

export default store