Skip to content

Commit 9f0b7ab

Browse files
authored
fix: 浏览器 无法显示 时间轴的问题 (#391)
1 parent ccab025 commit 9f0b7ab

1 file changed

Lines changed: 24 additions & 4 deletions

File tree

client/src/page/timeline.tsx

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,43 @@ import {headersWithAuth} from "../utils/auth"
77
import {siteName} from "../utils/constants"
88
import {useTranslation} from "react-i18next";
99

10+
interface FeedItem {
11+
id: number;
12+
createdAt: Date;
13+
title: string | null;
14+
}
1015

1116
export function TimelinePage() {
12-
const [feeds, setFeeds] = useState<Partial<Record<number, { id: number; title: string | null; createdAt: Date; }[]>>>()
17+
const [feeds, setFeeds] = useState<Partial<Record<number, FeedItem[]>>>()
1318
const [length, setLength] = useState(0)
1419
const ref = useRef(false)
1520
const { t } = useTranslation()
1621
function fetchFeeds() {
1722
client.feed.timeline.get({
1823
headers: headersWithAuth()
19-
}).then(({ data }) => {
24+
})
25+
.then(({ data }) => {
2026
if (data && typeof data !== 'string') {
21-
setLength(data.length)
22-
const groups = Object.groupBy(data, ({ createdAt }) => new Date(createdAt).getFullYear())
27+
const arr = Array.isArray(data) ? data : []
28+
setLength(arr.length)
29+
// 兼容的分组逻辑
30+
const groups = (Object.groupBy
31+
? Object.groupBy(arr, ({ createdAt }) => new Date(createdAt).getFullYear())
32+
: arr.reduce<Record<number, FeedItem[]>>((acc, item) => {
33+
const key = new Date(item.createdAt).getFullYear()
34+
;(acc[key] ||= []).push(item)
35+
return acc
36+
}, {})
37+
)
38+
2339
setFeeds(groups)
2440
}
2541
})
42+
.catch(err => {
43+
console.error("fetchFeeds error:", err)
44+
})
2645
}
46+
2747
useEffect(() => {
2848
if (ref.current) return
2949
fetchFeeds()

0 commit comments

Comments
 (0)