import { App } from 'vue'
import useMenuTreeStore from '@/store/menuTree'

/**
 * 判断当前页面是否有指定按钮 / 权限 code。
 * 既能在 <template> 里直接用（通过 app.config.globalProperties），
 * 也能在 <script setup> 里 import 使用。
 */
export function roleShow(name?: string | string[] | null): boolean {
  // 必须在 install() 里调用 useMenuTreeStore()，
  // 不能在模块顶层调用 —— 否则 main.ts 在 app.use(store) 安装 pinia 之前
  // import 这文件就会触发 "getActivePinia()" was called but there was no active Pinia
  if (!name) return false
  const menuTreeStore = useMenuTreeStore()
  const roles = menuTreeStore.reqMenu.buttons
  if (!roles) return false
  if (Array.isArray(name)) {
    return name.some((key) => roles.includes(key))
  }
  return roles.includes(name)
}

export default {
  // 已经在 main.ts 中注册了 roleShow
  // 其中左边栏里的 statusCode 是后端返回的，在sass-manage里添加时要和后端返回的statusCode一致
  install(app: App) {
    app.config.globalProperties.roleShow = roleShow
  },
}
