import Taro from '@tarojs/taro'
import { clearStorageByLoginUser } from '@/utils/server'
import type { User } from '@/api/system/user/model'

/**
 * 登录态 / 游客态 标识。
 * - member: 已登录
 * - guest : 游客（未登录或登录态过期）
 */
export type UserMode = 'member' | 'guest'

export function isLoggedIn(): boolean {
  return !!Taro.getStorageSync('access_token') && !!Taro.getStorageSync('UserId')
}

export function getUserMode(): UserMode {
  return isLoggedIn() ? 'member' : 'guest'
}

export function isGuest(): boolean {
  return !isLoggedIn()
}

export function goToRegister(options?: { redirect?: string }) {
  const redirect = options?.redirect ? `?redirect=${encodeURIComponent(options.redirect)}` : ''
  Taro.navigateTo({ url: `/passport/login${redirect}` })
}

export function ensureLoggedIn(redirect?: string): boolean {
  if (isLoggedIn()) return true
  goToRegister({ redirect })
  return false
}

export function logout() {
  clearStorageByLoginUser()
}

/**
 * 判断用户是否被禁用（status === 1）
 */
export function isUserDisabled(user?: User | null): boolean {
  return user?.status === 1
}

/**
 * 拦截被禁用的用户：清除登录态、弹窗提示、跳转登录页。
 * 返回 false 表示用户已被禁用并已处理，调用方应中止后续流程。
 */
export function blockDisabledUser(user?: User | null): boolean {
  if (!isUserDisabled(user)) return true

  clearStorageByLoginUser()
  Taro.showModal({
    title: '账号已被禁用',
    content: '您的账号已被管理员禁用，暂时无法使用小程序。如有疑问请联系门店客服。',
    showCancel: false,
    confirmText: '我知道了',
    confirmColor: '#ee0a24',
    success: () => {
      Taro.reLaunch({ url: '/passport/login' })
    },
  })
  return false
}
