diff options
author | crupest <crupest@outlook.com> | 2023-07-31 00:08:48 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2023-07-31 00:09:12 +0800 |
commit | d9c1d512fa64ef4f8c08ca34f7a5842642879bcc (patch) | |
tree | e71cd57b30ed67462ecaf010812b6d902c7fa675 /FrontEnd/src/views/timeline/TimelinePostListView.tsx | |
parent | 538d6830a0022b49b99695095d85e567b0c86e71 (diff) | |
download | timeline-d9c1d512fa64ef4f8c08ca34f7a5842642879bcc.tar.gz timeline-d9c1d512fa64ef4f8c08ca34f7a5842642879bcc.tar.bz2 timeline-d9c1d512fa64ef4f8c08ca34f7a5842642879bcc.zip |
...
Diffstat (limited to 'FrontEnd/src/views/timeline/TimelinePostListView.tsx')
-rw-r--r-- | FrontEnd/src/views/timeline/TimelinePostListView.tsx | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/FrontEnd/src/views/timeline/TimelinePostListView.tsx b/FrontEnd/src/views/timeline/TimelinePostListView.tsx deleted file mode 100644 index f878b004..00000000 --- a/FrontEnd/src/views/timeline/TimelinePostListView.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { Fragment } from "react"; -import * as React from "react"; - -import { HttpTimelinePostInfo } from "@/http/timeline"; - -import TimelinePostView from "./TimelinePostView"; -import TimelineDateLabel from "./TimelineDateLabel"; - -function dateEqual(left: Date, right: Date): boolean { - return ( - left.getDate() == right.getDate() && - left.getMonth() == right.getMonth() && - left.getFullYear() == right.getFullYear() - ); -} - -export interface TimelinePostListViewProps { - posts: HttpTimelinePostInfo[]; - onReload: () => void; -} - -const TimelinePostListView: React.FC<TimelinePostListViewProps> = (props) => { - const { posts, onReload } = props; - - const groupedPosts = React.useMemo< - { - date: Date; - posts: (HttpTimelinePostInfo & { index: number })[]; - }[] - >(() => { - const result: { - date: Date; - posts: (HttpTimelinePostInfo & { index: number })[]; - }[] = []; - let index = 0; - for (const post of posts) { - const time = new Date(post.time); - if (result.length === 0) { - result.push({ date: time, posts: [{ ...post, index }] }); - } else { - const lastGroup = result[result.length - 1]; - if (dateEqual(lastGroup.date, time)) { - lastGroup.posts.push({ ...post, index }); - } else { - result.push({ date: time, posts: [{ ...post, index }] }); - } - } - index++; - } - return result; - }, [posts]); - - return ( - <> - {groupedPosts.map((group) => { - return ( - <Fragment key={group.date.toDateString()}> - <TimelineDateLabel date={group.date} /> - {group.posts.map((post) => { - return ( - <TimelinePostView - key={post.id} - post={post} - onChanged={onReload} - onDeleted={onReload} - /> - ); - })} - </Fragment> - ); - })} - </> - ); -}; - -export default TimelinePostListView; |