Files
TeyvatGuide/src/plugins/Mys/utils/getPostsCard.ts
BTMuli 8c50da61b1 🗑️ loadMore
2023-12-10 16:03:07 +08:00

71 lines
1.9 KiB
TypeScript

/**
* @file plugins/Mys/utils/getPostsCard.ts
* @description Mys 插件帖子渲染
* @since Beta v0.3.7
*/
const defaultCover = "/source/UI/defaultCover.webp";
/**
* @description 解析单个帖子
* @since Beta v0.3.7
* @param {TGApp.Plugins.Mys.News.Item} post 帖子
* @returns {TGApp.Plugins.Mys.Forum.RenderCard} 渲染用帖子
*/
function getPostCard(post: TGApp.Plugins.Mys.News.Item): TGApp.Plugins.Mys.Forum.RenderCard {
const postCover = post.cover?.url || post.post.cover || post.post.images[0] || defaultCover;
const userLabel = getUserLabel(post);
return {
title: post.post.subject,
cover: postCover,
postId: post.post.post_id,
subtitle: post.post.post_id,
user: {
nickname: post.user.nickname,
pendant: post.user.pendant,
icon: post.user.avatar_url,
label: userLabel,
},
forum: {
name: post.forum.name,
icon: post.forum.icon,
},
data: {
mark: post.stat.bookmark_num,
forward: post.stat.forward_num,
like: post.stat.like_num,
reply: post.stat.reply_num,
view: post.stat.view_num,
},
};
}
/**
* @description 获取用户描述
* @since Beta v0.3.7
* @param {TGApp.Plugins.Mys.News.Item} post 帖子
* @returns {string} 描述
*/
function getUserLabel(post: TGApp.Plugins.Mys.News.Item): string {
if (post.user.certification.label !== "") {
return post.user.certification.label;
}
return post.user.introduce;
}
/**
* @description 获取渲染用帖子数据
* @since Beta v0.3.7
* @param {TGApp.Plugins.Mys.Forum.FullData} posts
* @returns {TGApp.Plugins.Mys.Forum.RenderCard[]}
*/
export function getPostsCard(
posts: TGApp.Plugins.Mys.Forum.FullData,
): TGApp.Plugins.Mys.Forum.RenderCard[] {
const postsCard: TGApp.Plugins.Mys.Forum.RenderCard[] = [];
posts.list.map((post) => {
return postsCard.push(getPostCard(post));
});
return postsCard;
}