---
import TaxonomyPageLayout from '../../../../layouts/TaxonomyPageLayout.astro';
import { type Lang } from '@/types/i18n';
import { defaultLang } from '@/i18n/ui';
import { getTaxonomyPageData } from '@/utils/blog-utils';

// 为动态路由生成静态路径
export async function getStaticPaths() {
  const allPosts = await import.meta.glob('../posts/*.md', { eager: true });
  
  // 收集所有标签ID或标签
  const uniqueTags = new Set<string>();
  
  Object.values(allPosts).forEach((post: any) => {
    // 优先使用 tagId 作为路由标识符
    if (post.frontmatter?.tagId && Array.isArray(post.frontmatter.tagId)) {
      post.frontmatter.tagId.forEach((tagId: string) => {
        if (tagId) uniqueTags.add(tagId.toLowerCase());
      });
    } 
    // 如果没有 tagId，则使用 tags 作为后备
    else if (post.frontmatter?.tags && Array.isArray(post.frontmatter.tags)) {
      post.frontmatter.tags.forEach((tag: string) => {
        if (tag) uniqueTags.add(tag.toLowerCase());
      });
    }
  });
  
  // 为每个标签生成路径，对包含特殊字符的标签进行编码
  return Array.from(uniqueTags).map(tag => ({
    params: { tag: encodeURIComponent(tag) },
    props: { tag }
  }));
}

// 获取当前语言环境
const lang = Astro.currentLocale as Lang || defaultLang;

// 获取当前标签（从URL参数）
export interface Props {
  tag: string;
}

const { tag } = Astro.params;
const decodedTag = tag ? decodeURIComponent(tag) : '';

// 获取分类页面数据，使用工具函数
const { posts: sortedBlogPosts, categories, tags, allPosts } = 
  await getTaxonomyPageData(lang, { tag: decodedTag });

// 查找与当前标签ID匹配的标签名称
let tagName = "";

// 从博客文章中查找匹配的标签名称
for (const post of Object.values(allPosts)) {
  const frontmatter = (post as any).frontmatter;
  if (frontmatter?.tagId && Array.isArray(frontmatter.tagId) && 
      frontmatter?.tags && Array.isArray(frontmatter.tags)) {
    // 查找标签ID和标签名称的索引匹配
    const tagIndex = frontmatter.tagId.findIndex((id: string) => 
      id.toLowerCase() === decodedTag.toLowerCase()
    );
    
    if (tagIndex !== -1 && tagIndex < frontmatter.tags.length) {
      tagName = frontmatter.tags[tagIndex];
      break;
    }
  }
}

// 如果没有找到匹配的标签名称，则使用标签ID并格式化（首字母大写）
if (!tagName) {
  tagName = decodedTag.charAt(0).toUpperCase() + decodedTag.slice(1);
}

// 动态生成页面标题和描述
const pageTitle = `# ${tagName} - 博客 | Joey Z.`;
const pageDescription = `浏览带有 # ${tagName} 标签的文章。深入了解我关于 ${tagName} 及相关主题的想法。`;
---

<TaxonomyPageLayout
  lang={lang}
  title={pageTitle}
  description={pageDescription}
  taxonomyType="tag"
  currentTaxonomy={decodedTag}
  displayName={tagName}
  posts={sortedBlogPosts}
  categories={categories}
  tags={tags}
/>

<style>
  .line-clamp-3 {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
</style>