From aeb49dabb2f346981131c728d79910a1992170f1 Mon Sep 17 00:00:00 2001 From: BTMuli Date: Sat, 9 Dec 2023 20:17:06 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=84=20=E4=BF=AE=E5=A4=8D=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0=E8=BF=87=E9=95=BF=E5=AF=BC=E8=87=B4=E7=9A=84=E6=B8=B2?= =?UTF-8?q?=E6=9F=93=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/common/Posts.vue | 9 ++-- src/plugins/Mys/index.ts | 3 +- src/plugins/Mys/utils/getPostsCard.ts | 70 +++++++++++++++++++++++++++ src/views/t-post.vue | 29 ++++++----- 4 files changed, 93 insertions(+), 18 deletions(-) create mode 100644 src/plugins/Mys/utils/getPostsCard.ts diff --git a/src/pages/common/Posts.vue b/src/pages/common/Posts.vue index 0a903b30..a1720e96 100644 --- a/src/pages/common/Posts.vue +++ b/src/pages/common/Posts.vue @@ -62,7 +62,7 @@
{{ post.user.nickname }} - {{ post.user.label }} + {{ post.user.label }}
@@ -429,6 +429,7 @@ function freshCurForum(newVal: string): void { .pcu-right { position: relative; display: flex; + max-width: calc(100% - 50px); height: 50px; flex-direction: column; align-items: start; @@ -444,14 +445,14 @@ function freshCurForum(newVal: string): void { } .pcu-right :nth-child(2) { - display: flex; + overflow: hidden; width: 100%; height: 20px; - align-items: center; - justify-content: start; border-top: 2px solid var(--common-shadow-2); font-size: 14px; opacity: 0.7; + text-overflow: ellipsis; + white-space: nowrap; } .post-card-forum { diff --git a/src/plugins/Mys/index.ts b/src/plugins/Mys/index.ts index 14a06e4e..3170f946 100644 --- a/src/plugins/Mys/index.ts +++ b/src/plugins/Mys/index.ts @@ -17,6 +17,7 @@ import getGachaCard from "./utils/getGachaCard"; import getLotteryCard from "./utils/getLotteryCard"; import { getActivityCard, getNewsCard, getNoticeCard } from "./utils/getNewsCard"; import getPositionCard from "./utils/getPositionCard"; +import { getPostsCard } from "./utils/getPostsCard"; const Mys = { Api: MysApi, @@ -25,7 +26,7 @@ const Mys = { }, Posts: { get: getForumList, - card: getNewsCard, + card: getPostsCard, nav: getHomeNavigator, }, Gacha: { diff --git a/src/plugins/Mys/utils/getPostsCard.ts b/src/plugins/Mys/utils/getPostsCard.ts new file mode 100644 index 00000000..97322536 --- /dev/null +++ b/src/plugins/Mys/utils/getPostsCard.ts @@ -0,0 +1,70 @@ +/** + * @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: Number(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; +} diff --git a/src/views/t-post.vue b/src/views/t-post.vue index 6ade55ea..9609ff0f 100644 --- a/src/views/t-post.vue +++ b/src/views/t-post.vue @@ -41,11 +41,7 @@