// pages/no-permission/no-permission.ts
// 无权限页面 — 账号已禁用或无访问权限时展示
// onShow 时查询最新状态，状态变化时自动跳转

import { request } from "../../utils/request"

Page({
  data: {
    statusBarHeight: 0,
  },

  onLoad() {
    const { statusBarHeight = 0 } = wx.getWindowInfo()
    this.setData({ statusBarHeight })
  },

  onShow() {
    this._checkStatus()
  },

  /** 查询最新用户状态，非 disabled 时自动跳转 */
  async _checkStatus() {
    const token = wx.getStorageSync("token")
    if (!token) {
      wx.reLaunch({ url: "/pages/login/login" })
      return
    }
    try {
      const data = await request({
        url: "/api/xcx/me",
        method: "GET",
        needAuth: true,
      })
      const app = getApp<IAppOption>()
      app.globalData.authUser = {
        userId: data.user_id,
        status: data.status,
        nickname: data.nickname,
      }
      wx.setStorageSync("userId", data.user_id)
      wx.setStorageSync("userStatus", data.status)

      switch (data.status) {
        case "disabled":
        case "rejected":
          break // 留在当前页
        case "approved":
          wx.reLaunch({ url: "/pages/mvp/mvp" })
          break
        case "pending":
          wx.reLaunch({ url: "/pages/reviewing/reviewing" })
          break
        case "new":
          wx.reLaunch({ url: "/pages/apply/apply" })
          break
      }
    } catch {
      // 网络错误不阻塞
    }
  },

  /** 更换登录账号：清除凭证后跳转登录页 */
  onSwitchAccount() {
    const app = getApp<IAppOption>()
    app.globalData.token = undefined
    app.globalData.refreshToken = undefined
    app.globalData.authUser = undefined
    wx.removeStorageSync("token")
    wx.removeStorageSync("refreshToken")
    wx.removeStorageSync("userId")
    wx.removeStorageSync("userStatus")
    wx.reLaunch({ url: "/pages/login/login" })
  },
})
