import { wxh5login } from '../api/apis'

export async function WxH5Login() {
// 判断是否在微信浏览器且在H5环境中
  const isWeixin = isWeixinBrowser()
  const isH5 = await isH5Environment()

  if (isWeixin && isH5) {
    // 获取当前URL中的code参数
    const url = new URL(window.location.href)
    const params = new URLSearchParams(url.search)
    const code = params.get('code')

    if (code) {
      // 如果code存在，说明已经通过授权跳转过来，进行登录操作
      wxh5login({
        code,
      }).then((res) => {
        console.log('login response', res)
        if (res.code === 0) {
          uni.setStorageSync('token', res.data.accessToken)
        }
        else {
          console.error('登录失败:', res.message || '未知错误')
        }
      }).catch((err) => {
        console.error('登录请求错误:', err)
      })
    }
    else {
      // 如果没有code参数，进行微信静默授权
      authorizeFunc('snsapi_base') // 使用静默授权
    }
  }
}

// 判断是否在微信浏览器中
function isWeixinBrowser() {
  return /MicroMessenger/i.test(navigator.userAgent)
}

// 判断是否在H5环境中，使用 uni.getSystemInfoAsync 获取系统信息
async function isH5Environment() {
  try {
    const res = uni.getSystemInfoSync()
    return res.uniPlatform === 'web' // 判断平台是否为H5
  }
  catch (error) {
    console.error('获取系统信息失败:', error)
    return false // 如果获取失败，默认返回false
  }
}

// 授权跳转，snsapi_base 为静默授权
function authorizeFunc(snsapi) {
  const currentUrl = window.location.href // 获取当前页面URL
  console.log('currentUrl', currentUrl)

  const appId = 'wxd1554b7a57cecc9e' // 你的公众号AppID
  const redirectUri = encodeURIComponent(currentUrl) // 当前页面的URL进行编码
  const state = snsapi // 授权类型：snsapi_base
  const scope = snsapi // 授权的范围，静默授权

  // 构建微信授权URL
  const authUrl
    = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirectUri}&response_type=code&scope=${scope}&state=${state}#wechat_redirect`

  // 跳转到授权URL
  window.location.href = authUrl
}
