<script>
	import { mapState, mapMutations } from 'vuex'
	import { version } from './package.json'
	import { getUserinfo } from '@/api/index.js'
	import { curVersion, wxappid } from '@/common/config.js'
	import checkUpdate from '@/uni_modules/uni-upgrade-center-app/utils/check-update';

	export default {
		data() {
			return {
				isWeixin: false
			}
		},
		computed: {
			...mapState(['userId', 'chatToken', 'settings', 'version']),
		},
		onLaunch: function(option) {
			console.log('App Launch', option);
			// #ifdef MP-WEIXIN
			this.autoUpdate()
			this.globalData.scene = option.scene
			const res = uni.getSystemInfoSync();
			console.log('getSystemInfoSync', res);
			this.globalData.systemInfo = res;
			this.globalData.isIOS = ['ios'].includes(res.platform)
			// #endif

			// if (!this.chatToken || curVersion !== this.version) {
			// 	// this.getCode()
			// 	this.$store.dispatch('login').then(rst => {
			// 	})
			// }

			// #ifdef H5
				this.isWeixin = this.isWechat()
				if (!this.chatToken || curVersion !== this.version) {
					if (this.isWeixin){
						this.checkWeChatCode()//通过微信官方接口获取code之后，会重新刷新设置的回调地址【redirect_uri】
					} else {
						// 不是微信环境，走手机号验证码登录
						this.checkWeChatCode()
					}
					this.$store.dispatch('login').then(rst => {
					})
				} else {
					this.updateUserinfo()
				}
			// #endif
			// 线上示例使用
			// console.log('%c uni-app官方团队诚邀优秀前端工程师加盟，一起打造更卓越的uni-app & uniCloud，欢迎投递简历到 hr2013@dcloud.io', 'color: red');
			
			// if (option.query && option.query.uid) {
			// 	console.log(option.query.uid);
			// 	this.setShareId(option.query.uid)
			// }

		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		},
		globalData: {
			scene: null,
			testQuestion: ''
		},
		methods: {
			...mapMutations(['setLoginInfo', 'setSessionId', 'setVersion', 'setShareId']),
			autoUpdate() {
				var self = this
				// 获取小程序更新机制兼容
				if (wx.canIUse('getUpdateManager')) {
					const updateManager = wx.getUpdateManager()
					//1. 检查小程序是否有新版本发布
					updateManager.onCheckForUpdate(function(res) {
						// 请求完新版本信息的回调
						if (res.hasUpdate) {
							//2. 小程序有新版本，则静默下载新版本，做好更新准备
							updateManager.onUpdateReady(function() {
								wx.showModal({
									title: '更新提示',
									content: '新版本已经准备好，是否重启应用？',
									success: function(res) {
										if (res.confirm) {
											//3. 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
											updateManager.applyUpdate()
										} else if (res.cancel) {
											
										}
									}
								})
							})
							updateManager.onUpdateFailed(function() {
								// 新的版本下载失败
								wx.showModal({
									title: '已经有新版本了哟~',
									content: '新版本已经上线啦~，请您删除当前小程序，重新搜索打开哟~',
								})
							})
						}
					})
				} else {
					// 如果希望用户在最新版本的客户端上体验您的小程序，可以这样子提示
					wx.showModal({
						title: '提示',
						content: '当前微信版本过低，可能无法使用某些功能，请升级到最新微信版本后重试。'
					})
				}
			},
			// 是否在微信中
			isWechat() {
				return String(navigator.userAgent.toLowerCase().match(/MicroMessenger/i)) === "micromessenger";
			},
			//方法:用来提取code
			getUrlCode(name) {
				return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ''])[1]
					.replace(/\+/g, '%20')) || null
			},
			//检查浏览器地址栏中微信接口返回的code
			checkWeChatCode() {
				debugger
				let code = this.getUrlCode('code')
				uni.showToast({
					title:`微信code=${code}`
				})
				if (code) {
					this.$store.dispatch('login', code)
				} else {
					this.getWeChatCode()
				}
			},
			//请求微信接口，用来获取code
			getWeChatCode() {
				let local = encodeURIComponent(window.location.href); //获取当前页面地址作为回调地址
				let appid = wxappid
				// scope是应用授权作用域，
				// snsapi_base （不弹出授权页面，直接跳转，只能获取用户openid），
				// snsapi_userinfo （弹出授权页面，可通过openid拿到昵称、性别、所在地。并且， 即使在未关注的情况下，只要用户授权，也能获取其信息 ）
				const snsapi = 'snsapi_userinfo' 
				
				//通过微信官方接口获取code之后，会重新刷新设置的回调地址【redirect_uri】
				window.location.href =
					"https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
					appid + 
					"&redirect_uri=" +
					local +
					"&response_type=code&scope=" +
					snsapi +
					"&state=1#wechat_redirect";
			},
			
			async updateUserinfo() {
				const res = await getUserinfo()
				if (res.code === 0) {
					this.setLoginInfo(res.data)
				}
			},
		},
		
	}
</script>

<style>
	/* #ifndef APP-PLUS-NVUE */
	/* uni.css - 通用组件、模板样式库，可以当作一套ui库应用 */
	@import './common/uni.css';
	@import '/static/customicons.css';
	@import '/static/icon/iconfont.css';

	/* H5 兼容 pc 所需 */
	/* #ifdef H5 */
	@media screen and (min-width: 768px) {
		body {
			overflow-y: scroll;
		}
	}

	/* 顶栏通栏样式 */
	/* .uni-top-window {
	    left: 0;
	    right: 0;
	} */
	* {
		box-sizing: border-box;
	}

	uni-page-body {
		background-color: @mainBg  !important;
		min-height: 100% !important;
	}

	.uni-top-window uni-tabbar .uni-tabbar {
		background-color: #fff !important;
	}

	.uni-app--showleftwindow .hideOnPc {
		display: none !important;
	}

	/* #endif */

	/* 以下样式用于 hello uni-app 演示所需 */
	page {
		background-color: @mainBg;
		height: 100%;
		font-size: 28rpx;
		/* line-height: 1.8; */
		/* padding-bottom: constant(safe-area-inset-bottom);
		padding-bottom: env(safe-area-inset-bottom); */
	}  
	.uni-page-head-btn .uni-btn-icon {
		color: @fontColor;
	}
	
	.uni-page-head__title {
		color: @fontColor;
	}
	 

	/* #endif*/
</style>
