mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-15 09:48:14 +08:00
🎨 类型拓展
This commit is contained in:
31
src/plugins/Mys/types/News.d.ts
vendored
31
src/plugins/Mys/types/News.d.ts
vendored
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user