feat: 重设计私信页并优化开源展柜体验

私信改为飞书风布局,支持缩略图表情/图片、按会话草稿与用户搜索发起会话;主页发私信直达消息页。开源展柜修复空列表粘滞并改版目录式 UI。
This commit is contained in:
2026-09-02 02:45:29 +08:00
parent 1c0f7ede55
commit 500e452c2f
11 changed files with 1176 additions and 258 deletions

View File

@@ -89,6 +89,25 @@ export function formatTime(iso: string) {
return `${d.getFullYear()}年${d.getMonth() + 1}月${d.getDate()}日`;
}
/** 会话列表时间:今天 HH:mm,同年 M月D日,更早含年 */
export function formatConvListTime(iso: string) {
const d = new Date(iso);
if (Number.isNaN(d.getTime())) return iso;
const now = new Date();
const pad = (n: number) => String(n).padStart(2, '0');
if (
d.getFullYear() === now.getFullYear()
&& d.getMonth() === now.getMonth()
&& d.getDate() === now.getDate()
) {
return `${pad(d.getHours())}:${pad(d.getMinutes())}`;
}
if (d.getFullYear() === now.getFullYear()) {
return `${d.getMonth() + 1}月${d.getDate()}日`;
}
return `${d.getFullYear()}年${d.getMonth() + 1}月${d.getDate()}日`;
}
/** 完整日期时间(用于帖子发布/修改时间展示) */
export function formatDateTime(iso: string) {
const d = new Date(iso);

View File

@@ -44,7 +44,7 @@ export type HomeBootPayload = {
recent_comments: RecentComment[];
recent_users: RecentUser[];
tags: TagCount[];
showcase: CommunityShowcaseItem[];
showcase?: CommunityShowcaseItem[];
pages: SitePageSummary[];
limits: ForumLimitsPublic;
branding: SiteBranding;
@@ -77,7 +77,10 @@ export function consumeHomeBoot(): HomeBootPayload | null {
if (Array.isArray(boot.recent_comments)) setCachedRecentComments(boot.recent_comments);
if (Array.isArray(boot.recent_users)) setCachedRecentUsers(boot.recent_users);
if (Array.isArray(boot.tags)) setCachedTags(boot.tags);
if (Array.isArray(boot.showcase)) setSessionSnapshot('showcase', boot.showcase);
// 仅当 boot 显式带 showcase 时灌入(侧栏关闭时省略,避免 [] 粘死)
if ('showcase' in boot && Array.isArray(boot.showcase)) {
setSessionSnapshot('showcase', boot.showcase);
}
// 鉴权 / 签到:有 user 字段即种子(含 null = 已确认访客)
if ('user' in boot) {