/**
 * Topbar 路由行为配置
 * 用于管理不同路由下 Topbar 的显示和样式行为
 */

export interface TopbarRouteConfig {
  /** 移动端是否隐藏 Topbar */
  hideOnMobile?: boolean;
  /** 是否启用背景模糊效果 */
  enableBlur?: boolean;
}

/**
 * 路由配置映射表
 * key: 路由路径模式（支持 :id 等动态参数）
 * value: 对应的行为配置
 */
export const topbarRouteConfigs: Record<string, TopbarRouteConfig> = {
  '/profile/edit': { hideOnMobile: true },
  '/profile/mask': { hideOnMobile: true },
  '/profile/mask/:id': { hideOnMobile: true },
  '/profile/account': { hideOnMobile: true },
  '/character/:id': { hideOnMobile: true },
  '/chat/:id': { enableBlur: true },
};

/**
 * 将路由模式转换为正则表达式进行匹配
 * @param pathname 当前路由路径
 * @param pattern 路由模式（支持 :id 等动态参数）
 * @returns 是否匹配
 */
export function matchRoutePattern(pathname: string, pattern: string): boolean {
  // 将路由模式中的 :param 转换为正则表达式
  const regexPattern = pattern
    .replace(/:[^/]+/g, '[^/]+') // 将 :id, :userId 等替换为 [^/]+
    .replace(/\//g, '\\/'); // 转义斜杠
  const regex = new RegExp(`^${regexPattern}$`);
  return regex.test(pathname);
}

/**
 * 获取当前路由的 Topbar 配置
 * @param pathname 当前路由路径
 * @returns 合并后的配置对象
 */
export function getTopbarConfig(pathname: string): TopbarRouteConfig {
  for (const [pattern, config] of Object.entries(topbarRouteConfigs)) {
    if (matchRoutePattern(pathname, pattern)) {
      return config;
    }
  }
  // 返回默认配置
  return {};
}
