import { useLogin } from '@/hooks/useLogin'
import { getToken } from '@/utils/common'
import { getNeedLoginPages } from '@/utils/pages'

const loginBack = useLogin()

/**
 * 检测是否需要登录
 */
export function checkNeedLogin(route: AnyObject) {
    const pages = getNeedLoginPages()

    if (pages.includes(route.path) && !getToken()) {
        setTimeout(() => {
            loginBack.setLoginBack({ url: route.path, param: route.query || {} })
        }, 100)
    }
}
/**
 * 功能操作权限检查
 * @param {string | Array} requiredPermissions  需要检查的权限列表或单个权限
 * @param {boolean} [hasMsg=true]  是否显示提示信息
 * @param {string} [msg='您没有权限执行此操作'] 提示信息
 * @returns {Promise<boolean>}
 */
export async function checkBtnPermission(permissions:any,requiredPermissions:any,hasMsg: boolean = true, msg:any = '你没有权限执行此操作'): Promise<boolean> {
  if (!requiredPermissions) {
	uni.showToast({ title: '需要检查的权限列表或单个权限不能为空', icon: 'none' })
    return false
  }
  if (!Array.isArray(requiredPermissions)) {
    requiredPermissions = [requiredPermissions]
  }
  if (!Array.isArray(permissions)) {
	uni.showToast({ title: '权限错误', icon: 'none' })
    return false
  }
  if(permissions.length === 0){
	  return true
  }
  // 假设 permissions 是一个包含用户所有权限的数组
  if (requiredPermissions.every((permission:any) => permissions.includes(`${permission}`))) {
    // 有权限，继续执行后续逻辑
    return true
  } else {
    // 没有权限，显示提示信息并终止执行
    if (hasMsg)	uni.showToast({ title: msg, icon: 'none' })
    return false
  }
}
