From 7433ae82710ea5a503d85fc708b58580a421ec7d Mon Sep 17 00:00:00 2001 From: BTMuli Date: Wed, 28 Jun 2023 15:34:42 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20=E7=B1=BB=E5=9E=8B=E6=8B=93?= =?UTF-8?q?=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/Mys/types/News.d.ts | 31 +++++++++++++++ src/plugins/Mys/utils/getNewsCard.ts | 57 ++++++++++++++++++---------- 2 files changed, 69 insertions(+), 19 deletions(-) diff --git a/src/plugins/Mys/types/News.d.ts b/src/plugins/Mys/types/News.d.ts index fdd500a5..8062b5a6 100644 --- a/src/plugins/Mys/types/News.d.ts +++ b/src/plugins/Mys/types/News.d.ts @@ -114,7 +114,21 @@ declare namespace TGApp.Plugins.Mys.News { * @property {string} cover 封面图片 URL * @property {number} postId 帖子 ID * @property {string} subtitle 副标题 + * @property user 发帖用户 + * @property {string} user.nickname 用户昵称 + * @property {string} user.pendant 用户头像挂件 + * @property {string} user.icon 用户头像 + * @property {string} user.label 用户标签 + * @property forum 版块 + * @property {string} forum.name 版块名称 + * @property {string} forum.icon 版块图标 * @property {RenderStatus} status 活动状态,仅活动咨讯有 + * @property data 帖子统计 + * @property {number} data.mark 帖子收藏数 + * @property {number} data.forward 帖子转发数 + * @property {number} data.like 帖子点赞数 + * @property {number} data.reply 帖子回复数 + * @property {number} data.view 帖子浏览数 * @return RenderCard */ export interface RenderCard { @@ -122,6 +136,23 @@ declare namespace TGApp.Plugins.Mys.News { cover: string; postId: number; subtitle: string; + user: { + nickname: string; + pendant: string; + icon: string; + label: string; + }; + forum: { + name: string; + icon: string; + }; + data: { + mark: number; + forward: number; + like: number; + reply: number; + view: number; + }; status?: RenderStatus; } diff --git a/src/plugins/Mys/utils/getNewsCard.ts b/src/plugins/Mys/utils/getNewsCard.ts index 6cebd125..8378b800 100644 --- a/src/plugins/Mys/utils/getNewsCard.ts +++ b/src/plugins/Mys/utils/getNewsCard.ts @@ -55,6 +55,38 @@ export function getActivityStatus(status: number): TGApp.Plugins.Mys.News.Render } } +/** + * @description 获取公共属性 + * @since Alpha v0.2.1 + * @param {TGApp.Plugins.Mys.News.Item} item 咨讯列表项 + * @returns {TGApp.Plugins.Mys.News.RenderCard} 渲染用咨讯列表项 + */ +function getCommonCard(item: TGApp.Plugins.Mys.News.Item): TGApp.Plugins.Mys.News.RenderCard { + return { + title: item.post.subject, + cover: item.cover?.url || item.post.cover || item.post.images[0] || defaultCover, + postId: Number(item.post.post_id), + subtitle: item.post.post_id, + user: { + nickname: item.user.nickname, + pendant: item.user.pendant, + icon: item.user.avatar_url, + label: item.user.certification.label, + }, + forum: { + name: item.forum.name, + icon: item.forum.icon, + }, + data: { + mark: item.stat.bookmark_num, + forward: item.stat.forward_num, + like: item.stat.like_num, + reply: item.stat.reply_num, + view: item.stat.view_num, + }, + }; +} + /** * @description 获取渲染用公告数据 * @since Alpha v0.2.1 @@ -66,12 +98,7 @@ export function getNoticeCard( ): TGApp.Plugins.Mys.News.RenderCard[] { const noticeCard: TGApp.Plugins.Mys.News.RenderCard[] = []; noticeData.list.map((item: TGApp.Plugins.Mys.News.Item) => { - return noticeCard.push({ - title: item.post.subject, - cover: item.cover?.url || item.post.cover || item.post.images[0] || defaultCover, - postId: Number(item.post.post_id), - subtitle: item.post.post_id, - }); + return noticeCard.push(getCommonCard(item)); }); return noticeCard; } @@ -90,13 +117,10 @@ export function getActivityCard( const startTime = new Date(Number(item.news_meta.start_at_sec) * 1000).toLocaleDateString(); const endTime = new Date(Number(item.news_meta.end_at_sec) * 1000).toLocaleDateString(); const statusInfo = getActivityStatus(item.news_meta.activity_status); - return activityCard.push({ - title: item.post.subject, - cover: item.cover?.url || item.post.cover || item.post.images[0] || defaultCover, - postId: Number(item.post.post_id), - subtitle: `${startTime} - ${endTime}`, - status: statusInfo, - }); + let commonCard = getCommonCard(item); + commonCard.subtitle = `${startTime} - ${endTime}`; + commonCard.status = statusInfo; + return activityCard.push(commonCard); }); return activityCard; } @@ -112,12 +136,7 @@ export function getNewsCard( ): TGApp.Plugins.Mys.News.RenderCard[] { const newsCard: TGApp.Plugins.Mys.News.RenderCard[] = []; newsData.list.map((item: TGApp.Plugins.Mys.News.Item) => { - return newsCard.push({ - title: item.post.subject, - cover: item.cover?.url || item.post.cover || item.post.images[0] || defaultCover, - postId: Number(item.post.post_id), - subtitle: item.post.post_id, - }); + return newsCard.push(getCommonCard(item)); }); return newsCard; }