import { useAuthStore } from '../stores/auth';
import { TAB_PERMISSIONS } from '../routeConfig';

export interface TabItem {
  key: string;
  [prop: string]: unknown;
}

/**
 * 根据权限过滤详情页 Tab 列表。
 *
 * @param prefix - Tab 权限映射前缀（如 "patient"），对应 routeConfig.ts 中 "patient#tabKey"
 * @param tabs   - 完整 Tab 列表
 * @returns 过滤后有权限可见的 Tab 列表
 */
export function usePermFilteredTabs<T extends TabItem>(prefix: string, tabs: T[]): T[] {
  const permissions = useAuthStore((s) => s.permissions);

  return tabs.filter((tab) => {
    const lookupKey = `${prefix}#${tab.key}`;
    const requiredPerm = TAB_PERMISSIONS[lookupKey];

    // 未在 TAB_PERMISSIONS 中声明的 Tab，安全默认：不显示
    if (requiredPerm === undefined && !(lookupKey in TAB_PERMISSIONS)) {
      if (import.meta.env.DEV) {
        console.warn(
          `[usePermFilteredTabs] Tab "${lookupKey}" 未在 routeConfig.ts TAB_PERMISSIONS 中声明，已隐藏。请添加声明。`,
        );
      }
      return false;
    }

    // 显式声明为 undefined（无需权限）→ 始终可见
    if (requiredPerm === undefined) return true;

    return permissions.includes(requiredPerm);
  });
}
