aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/views/timeline/TimelinePostListView.tsx
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2023-07-31 00:08:48 +0800
committercrupest <crupest@outlook.com>2023-07-31 00:09:12 +0800
commitd9c1d512fa64ef4f8c08ca34f7a5842642879bcc (patch)
treee71cd57b30ed67462ecaf010812b6d902c7fa675 /FrontEnd/src/views/timeline/TimelinePostListView.tsx
parent538d6830a0022b49b99695095d85e567b0c86e71 (diff)
downloadtimeline-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.tsx76
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;