aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-11-05 17:07:24 +0800
committercrupest <crupest@outlook.com>2020-11-05 17:07:24 +0800
commite7f63aeecc6830ca88d177d0bbb01955b663b896 (patch)
tree8e3e4a9b7f0c06b48af80b5ac9343eebf7648ae1 /FrontEnd/src
parent40e68d224ce00fe790d5a5c42832eb1c0569abb9 (diff)
downloadtimeline-e7f63aeecc6830ca88d177d0bbb01955b663b896.tar.gz
timeline-e7f63aeecc6830ca88d177d0bbb01955b663b896.tar.bz2
timeline-e7f63aeecc6830ca88d177d0bbb01955b663b896.zip
chore: Clean timeline component code.
Diffstat (limited to 'FrontEnd/src')
-rw-r--r--FrontEnd/src/app/views/timeline-common/Timeline.tsx45
1 files changed, 9 insertions, 36 deletions
diff --git a/FrontEnd/src/app/views/timeline-common/Timeline.tsx b/FrontEnd/src/app/views/timeline-common/Timeline.tsx
index 9047919c..ff9f663a 100644
--- a/FrontEnd/src/app/views/timeline-common/Timeline.tsx
+++ b/FrontEnd/src/app/views/timeline-common/Timeline.tsx
@@ -24,33 +24,7 @@ export interface TimelineProps {
const Timeline: React.FC<TimelineProps> = (props) => {
const { posts, onDelete, onResize } = props;
- const [indexShowDeleteButton, setIndexShowDeleteButton] = React.useState<
- number
- >(-1);
-
- const onItemClick = React.useCallback(() => {
- setIndexShowDeleteButton(-1);
- }, []);
-
- const onToggleDelete = React.useMemo(() => {
- return posts.map((post, i) => {
- return post.deletable
- ? () => {
- setIndexShowDeleteButton((oldIndexShowDeleteButton) => {
- return oldIndexShowDeleteButton !== i ? i : -1;
- });
- }
- : undefined;
- });
- }, [posts]);
-
- const onItemDelete = React.useMemo(() => {
- return posts.map((post, i) => {
- return () => {
- onDelete(i, post.id);
- };
- });
- }, [posts, onDelete]);
+ const [showMoreIndex, setShowMoreIndex] = React.useState<number>(-1);
return (
<div
@@ -61,24 +35,23 @@ const Timeline: React.FC<TimelineProps> = (props) => {
<TimelineTop height="56px" />
{(() => {
const length = posts.length;
- return posts.map((post, i) => {
- const toggleMore = onToggleDelete[i];
-
+ return posts.map((post, index) => {
return (
<TimelineItem
post={post}
key={post.id}
- current={length - 1 === i}
+ current={length - 1 === index}
more={
- toggleMore
+ post.deletable
? {
- isOpen: indexShowDeleteButton === i,
- toggle: toggleMore,
- onDelete: onItemDelete[i],
+ isOpen: showMoreIndex === index,
+ toggle: () =>
+ setShowMoreIndex((old) => (old === index ? -1 : index)),
+ onDelete: () => onDelete(index, post.id),
}
: undefined
}
- onClick={onItemClick}
+ onClick={() => setShowMoreIndex(-1)}
onResize={onResize}
/>
);