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

Page({
  data: {
    statusBarHeight: 0,
    loading: true,
    status: "pending" as "pending" | "rejected",
    application: null as null | {
      id: number
      site_code: string
      role_type: string
      phone: string
      status: string
      reject_reason: string | null
      created_at: string
    },
  },

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

  onShow() {
    this.fetchStatus()
  },

  onPullDownRefresh() {
    this.fetchStatus().finally(() => {
      wx.stopPullDownRefresh()
    })
  },

  async fetchStatus() {
    try {
      const data = await request({
        url: "/api/xcx/me",
        method: "GET",
        needAuth: true,
      })

      // 同步 globalData 和 Storage
      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)

      // 已通过 → 跳转主页
      if (data.status === "approved") {
        wx.reLaunch({ url: "/pages/mvp/mvp" })
        return
      }

      // 已禁用 → 跳转无权限页
      if (data.status === "disabled") {
        wx.reLaunch({ url: "/pages/no-permission/no-permission" })
        return
      }

      // 已拒绝 → 跳转无权限页
      if (data.status === "rejected") {
        wx.reLaunch({ url: "/pages/no-permission/no-permission" })
        return
      }

      // 全新用户（尚未提交申请）→ 跳回申请页
      if (data.status === "new") {
        wx.reLaunch({ url: "/pages/apply/apply" })
        return
      }

      this.setData({
        loading: false,
        status: data.status,
        application: data.latest_application || null,
      })
    } catch (err: any) {
      this.setData({ loading: false })
      wx.showToast({ title: "获取状态失败", icon: "none" })
    }
  },

  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" })
  },
})
