// /**
//  * Wechat v1.1.0
//  * @Class Wechat
//  * @description shopro-wechat 1.1.0 wehcat第三方登录组件
//  * @Author lidongtony
//  * @Date 2020-05-20
//  * @Email lidongtony@qq.com
//  */
import api from "@/shopro/request/index";
// import $platform from "@/shopro/platform";
// import store from "@/shopro/store";
import {
	API_URL
} from "@/env";

export default {
	eventMap(event) {
		let map = "";
		switch (event) {
			case "login":
				map = "登录中...";
				break;
			case "refresh":
				map = "更新中...";
				break;
			case "bind":
				map = "绑定中...";
				break;
		}
		return map;
	},

	async login() {
		let token = "";
		// #ifdef MP-WEIXIN
		token = await this.wxMiniProgramOauth("login");
		return token;
		// #endif
		// #ifdef H5
		// #endif
		 
	},
	async refresh() {
		let token = "";
		// #ifdef MP-WEIXIN
		token = await this.wxMiniProgramOauth("refresh");
		return token;
		// #endif
	},
	async bind() {
		let token = "";
		// #ifdef MP-WEIXIN
		token = await this.wxMiniProgramOauth("bind");
		return token;
		// #endif
	 
	},


	// #ifdef MP-WEIXIN
	// 微信小程序静默登录
	async getWxMiniProgramSessionKey(autoLogin = true) {
		let sessionStatus = false;
		let session_key = "";
		/*1.校验session
		2.如果session没有 调用uni.login接口，拿到code值
		3.根据code值，调用后台接口user.checkLogin拿到返回值
		4.如果成功注册，session存储
		*/
		
		return new Promise((resolve, reject) => {
			uni.checkSession({ //校验session
				success(res) {
					if (res.errMsg === "checkSession:ok") sessionStatus = true;
				},
				complete() {
					if (uni.getStorageSync("session_key") && sessionStatus && !autoLogin) {
						resolve(uni.getStorageSync("session_key"));
					} else {
						let mallId ,openId ;
						if (uni.getExtConfig) { //拿到ext配置项
							uni.getExtConfig({
								success:(res) => {
								  console.log(res.extConfig)
									mallId = res.extConfig.mallId
									openId = res.extConfig.openId
								}
							})
						}
						uni.login({
							success: function(info) {
								let code = info.code;
								api("user.checkLogin", {
									code:code,
									mallId:mallId
								}).then(res => {
									 // 2000 // 需要跳往 系统 内部错误页面
									 // 2001 // 需要跳往 注册页
									 // 2002 // 需要跳往 无卡页
									 // 2003 // 需要跳往 企业错误页
									 // 2004 // 微界面查询失败，请稍后再试。
									 // 2005 // 企业关闭（系统维护中）
									if (res.code === 0) {
										// uni.setStorageSync("session_key", res.data.sessionKey);
										// uni.setStorageSync("userInfo", res.data);
										if (res.data.token) {
											resolve(res.data);
										}  
									}else if(res.code === 2000){
										
										reject(false);
										
									}else{
										reject(res.msg);
									}
								});
							}
						});
					}
				}
			});
		});
	},

	// 微信小程序获取用户信息登录
	wxMiniProgramOauth(event = "login") {
		let that = this;
		let session_key = uni.getStorageSync("session_key");
		uni.showLoading({
			title: that.eventMap(event)
		});
		return new Promise((resolve, reject) => {
			uni.getUserProfile({ // 必须手动确认触发
				desc: "完善会员资料", // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
				success: res => {
					if (res.errMsg === "getUserProfile:ok") {
						api("user.wxMiniProgramOauth", {
							event,
							session_key,
							encryptedData: res.encryptedData,
							iv: res.iv,
							signature: res.signature,
						}).then(res => {
							if (res.code === 1) {
								resolve(res.data.token);
							} else {
								uni.removeStorageSync("session_key");
								that.getWxMiniProgramSessionKey(false);
								resolve(false);
							}
						});
					}
				},
				complete: res => {
					uni.hideLoading();
				}
			});
		});

	},

	// 小程序更新
	checkMiniProgramUpdate() {
		if (uni.canIUse("getUpdateManager")) {
			const updateManager = uni.getUpdateManager();
			updateManager.onCheckForUpdate(function(res) {
				// 请求完新版本信息的回调
				if (res.hasUpdate) {
					updateManager.onUpdateReady(function() {
						uni.showModal({
							title: "更新提示",
							content: "新版本已经准备好，是否重启应用？",
							success: function(res) {
								if (res.confirm) {
									// 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
									updateManager.applyUpdate();
								}
							}
						});
					});
					updateManager.onUpdateFailed(function() {
						// 新的版本下载失败
						uni.showModal({
							title: "已经有新版本了哟~",
							content: "新版本已经上线啦~，请您删除当前小程序，重新搜索打开哟~"
						});
					});
				}
			});
		}
	},
	// #endif


};
