// 小程序登录
function appLogin() {
    return new Promise(function (resolve, reject) {
        uni.login({
            success(res) {
                if (!res.code) {
                    uni.hideLoading();
                    uni.showModal({
                        content: res.errMsg,
                        showCancel: false
                    });
                }
                resolve(res);
            },
            fail() {
                uni.hideLoading();
                uni.showModal({
                    content: '小程序登录失败，请重试',
                    showCancel: false
                });
                reject();
            }
        });
    });
}

// 小程序授权
function authorization(data) {
	const app = getApp();
    return new Promise(async function (resolve, reject) {
		data.wxAppNo = app.globalData.wxAppNo
        const res = await app.$vm.$u.api.loginWechatAuth(data)
        if (res) {
            if (res.code == 200 && res.data) {
                resolve(res);
            } else {
                reject(res);
            }
        } else {
            uni.showModal({
                title: '请求失败',
                content: res.message
            });
        }
    });
}

// 小程序注册
function signup(data) {
	const app = getApp();
    return new Promise(async function (resolve, reject) {
		data.wxAppNo = app.globalData.wxAppNo
        const res = await app.$vm.$u.api.loginWechatAuth(data)
        if (res) {
            if (res.code == 200 && res.data) {
                resolve(res);
            } else {
				console.log(res.message)
				uni.showModal({
				    content: '登录失败，请重试',
				    showCancel: false
				});
                reject(res);
            }
        } else {
			uni.showModal({
			    content: '请求失败',
			    showCancel: false
			});
        }
    });

}

function oauth() {
	return new Promise(function (resolve, reject) {
		uni.getProvider({
			service: 'oauth',
			success: function (res) {
				if (~res.provider.indexOf('weixin')) {
					// weixin		微信登录
					login('weixin').then(res=>{resolve(res)}).catch(err=>{reject(err)})
				} else if (~res.provider.indexOf('qq')) {
					// qq			QQ登录
					login('qq').then(res=>{resolve(res)}).catch(err=>{reject(err)})
				} else if (~res.provider.indexOf('sinaweibo')) {
					// sinaweibo	新浪微博登录
					login('sinaweibo').then(res=>{resolve(res)}).catch(err=>{reject(err)})
				} else if (~res.provider.indexOf('xiaomi')) {
					// xiaomi		小米登录
					login('xiaomi').then(res=>{resolve(res)}).catch(err=>{reject(err)})
				} else if (~res.provider.indexOf('univerify')) {
					// univerify	一键登录	App
					login('univerify').then(res=>{resolve(res)}).catch(err=>{reject(err)})
				} else if (~res.provider.indexOf('apple')) {
					// apple		Apple登录
					login('apple').then(res=>{resolve(res)}).catch(err=>{reject(err)})
				}
			}
		});
	});
}

function login(provider) {
	return new Promise(function (resolve, reject) {
		uni.login({
			provider: provider,
			success(res) {
				resolve(res);
			},
			fail(err) {
				console.log(JSON.stringify(err));
				reject(err);
			}
		});
	});
}

/**
 * 初始化用户信息
 * @param {Object} userInfo 用户信息
 * @param {Object} vm Vue对象实例
 */
function setUserData(userInfo, vm) {
	if (userInfo && userInfo.token) {
		// 如果已经登录则直接获取相关信息
		vm.$u.vuex("vuex_token", userInfo.token);
		vm.$u.vuex("vuex_user", userInfo);
		vm.$u.vuex("vuex_wx_uid", userInfo.wxopenid);
	} else {
		vm.$u.vuex("vuex_token", "");
		vm.$u.vuex("vuex_user", null);
		vm.$u.vuex("vuex_wx_uid", "");
	}
	vm.$u.vuex("vuex_settled", null);
}

module.exports = {
    appLogin: appLogin,
    authorization: authorization,
    signup: signup,
	oauth: oauth,
	setUserData,
}