refactor: 简化博客文章归一化

This commit is contained in:
sunlei 2026-06-05 16:21:25 +08:00
parent 3e3de3ab4e
commit e5dc83b149

View File

@ -4,7 +4,6 @@ import {
fetchBlogArticleDetail, fetchBlogArticleDetail,
fetchBlogArticleList, fetchBlogArticleList,
type WordpressPublicArticle, type WordpressPublicArticle,
type WordpressResolvedTerm,
} from '@/api/blogArticles'; } from '@/api/blogArticles';
import { import {
articles as fallbackArticles, articles as fallbackArticles,
@ -170,10 +169,10 @@ async function loadArticle(slug: string) {
} }
function normalizeWordpressArticle(article: WordpressPublicArticle): BlogArticle { function normalizeWordpressArticle(article: WordpressPublicArticle): BlogArticle {
const category = getFirstTerm(article.categoriesResolved, { const category = article.categoriesResolved?.[0] || {
name: '未分类', name: '未分类',
slug: 'uncategorized', slug: 'uncategorized',
}); };
const contentHtml = const contentHtml =
article.contentHtml || article.contentHtml ||
(typeof article.content === 'object' ? article.content.rendered || article.content.raw : article.content) || (typeof article.content === 'object' ? article.content.rendered || article.content.raw : article.content) ||
@ -192,7 +191,7 @@ function normalizeWordpressArticle(article: WordpressPublicArticle): BlogArticle
author: article.authorName || 'KwiTsukasa', author: article.authorName || 'KwiTsukasa',
category: decodeHtml(category.name || '未分类'), category: decodeHtml(category.name || '未分类'),
categorySlug: decodeSlug(category.slug || 'uncategorized'), categorySlug: decodeSlug(category.slug || 'uncategorized'),
comments: article.comment_status === 'open' ? 0 : 0, comments: 0,
content: contentText ? [contentText] : [], content: contentText ? [contentText] : [],
contentHtml, contentHtml,
cover: article.cover || coverPool[article.id % coverPool.length] || defaultCover, cover: article.cover || coverPool[article.id % coverPool.length] || defaultCover,
@ -249,10 +248,6 @@ function buildTags(articles: BlogArticle[]): BlogTag[] {
return Array.from(groups.values()); return Array.from(groups.values());
} }
function getFirstTerm(terms: WordpressResolvedTerm[] | undefined, fallback: WordpressResolvedTerm) {
return terms?.[0] || fallback;
}
function getRenderedText(value: WordpressPublicArticle['title']) { function getRenderedText(value: WordpressPublicArticle['title']) {
if (typeof value === 'string') return decodeHtml(value); if (typeof value === 'string') return decodeHtml(value);