const request = require('./WXHttpRequest.js');
const url = require('./const.js');
const util = require('./util.js');

const HOST = url.baseApi;


function genAPIUrl(action) {
	return HOST + action;
}

// 登录
function wxLogin(successcallback, failcallback) {
    wx.showToast({
        title: '登录中...',
        icon: 'loading',
        duration: 1500,
        mask:true
    })
    wx.login({  
        success: function(res) {
            if (res.code) {
                // 获取openid
                 let url = genAPIUrl('wx/user/openId')
                 let data = { code: res.code }
                 return request.getInstance().url(url).data(data).send().success(successcallback).fail(failcallback);
            } else {
                console.log('获取用户登录态失败!' + res.errMsg)
            }
        }
    })
}
//登录
function getLoginSchedule(sessionKey, openId, successcallback, failcallback) {
    wx.getSetting({
        success: function(res) {
            // 已经授权,可以直接调用 getUserInfo 获取头像昵称
            wx.getUserInfo({
                withCredentials: true,
                success: function (res) {
                  let url = genAPIUrl('wx/user/loginRegist');
                  const userData = {
                      encryptedData: res.encryptedData,
                      sessionKey: sessionKey,
                      iv: res.iv
                  }
                  request.getInstance().url(url).header({
                      "content-type": "application/x-www-form-urlencoded; charset=UTF-8"
                  }).data(userData).method('POST').send().success(res => {
                      wx.hideToast()
                      wx.showToast({
                          title: '登录成功',
                          icon: 'success',
                          duration: 1500,
                          mask: true
                      })
                      wx.setStorageSync('uid', res.data.data.data.uid)
                      wx.setStorageSync('user', res.data.data.data)
                      console.log(res)
                      successcallback(res)
                  });
                },
                fail: function(res) {
                    failcallback(res)
                }
            })
          } 
      })
}
// 获取原来的 openid 和 session_key
function getOpenidSessionKey(successcallback, failcallback) {
    if (wx.getStorageSync('user')) {
      successcallback(
        wx.getStorageSync('user'),
        //分享小程序按钮
        wx.showShareMenu({
          withShareTicket: true
        })
      );
      return;
    }
    wxLogin(function(res) {
      if(res.data.code == 200){
        let sessionKey = res.data.data.session_key;
        let openId = res.data.data.openid;
        getLoginSchedule(sessionKey, openId, successcallback, failcallback);
      }

    },function(res) {
        failcallback(res);
    })    
}



module.exports = {
    getOpenidSessionKey
}