aboutsummaryrefslogtreecommitdiff
path: root/Timeline/ClientApp/src/app/timeline/TimelinePageTemplate.tsx
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-07-31 00:14:32 +0800
committercrupest <crupest@outlook.com>2020-07-31 00:14:32 +0800
commit9e500f240a76bd0e16c8c63b764dd81c01f46f78 (patch)
treeac0900fbc185e0ceb859ae80b2ed81b42011c6e7 /Timeline/ClientApp/src/app/timeline/TimelinePageTemplate.tsx
parent5a90a7d0de9ae8410ef8c23a6994fdba7657666d (diff)
downloadtimeline-9e500f240a76bd0e16c8c63b764dd81c01f46f78.tar.gz
timeline-9e500f240a76bd0e16c8c63b764dd81c01f46f78.tar.bz2
timeline-9e500f240a76bd0e16c8c63b764dd81c01f46f78.zip
Update post list when create or delete post.
Diffstat (limited to 'Timeline/ClientApp/src/app/timeline/TimelinePageTemplate.tsx')
-rw-r--r--Timeline/ClientApp/src/app/timeline/TimelinePageTemplate.tsx44
1 files changed, 10 insertions, 34 deletions
diff --git a/Timeline/ClientApp/src/app/timeline/TimelinePageTemplate.tsx b/Timeline/ClientApp/src/app/timeline/TimelinePageTemplate.tsx
index 88066b76..a68d08c6 100644
--- a/Timeline/ClientApp/src/app/timeline/TimelinePageTemplate.tsx
+++ b/Timeline/ClientApp/src/app/timeline/TimelinePageTemplate.tsx
@@ -14,7 +14,7 @@ import {
usePostList,
} from '../data/timeline';
-import { TimelinePostInfoEx, TimelineDeleteCallback } from './Timeline';
+import { TimelineDeleteCallback } from './Timeline';
import { TimelineMemberDialog } from './TimelineMember';
import TimelinePropertyChangeDialog from './TimelinePropertyChangeDialog';
import { TimelinePageTemplateUIProps } from './TimelinePageTemplateUI';
@@ -55,7 +55,7 @@ export default function TimelinePageTemplate<
undefined
);
- const rawPosts = usePostList(timeline?.name);
+ const postListState = usePostList(timeline?.name);
const [error, setError] = React.useState<string | undefined>(undefined);
@@ -182,43 +182,19 @@ export default function TimelinePageTemplate<
const onDelete: TimelineDeleteCallback = React.useCallback(
(index, id) => {
- service.deletePost(name, id).subscribe(
- () => {
- // TODO: Remove this.
- setPosts((oldPosts) =>
- without(
- oldPosts as TimelinePostInfoEx[],
- (oldPosts as TimelinePostInfoEx[])[index]
- )
- );
- },
- () => {
- pushAlert({
- type: 'danger',
- message: t('timeline.deletePostFailed'),
- });
- }
- );
+ service.deletePost(name, id).subscribe(null, () => {
+ pushAlert({
+ type: 'danger',
+ message: t('timeline.deletePostFailed'),
+ });
+ });
},
[service, name, t]
);
const onPost: TimelinePostSendCallback = React.useCallback(
(req) => {
- return service
- .createPost(name, req)
- .pipe(
- map((newPost) => {
- // TODO: Remove this.
- setPosts((oldPosts) =>
- concat(oldPosts as TimelinePostInfoEx[], {
- ...newPost,
- deletable: true,
- })
- );
- })
- )
- .toPromise();
+ return service.createPost(name, req).toPromise().then();
},
[service, name]
);
@@ -245,7 +221,7 @@ export default function TimelinePageTemplate<
<UiComponent
error={error}
timeline={timeline}
- posts={posts}
+ postListState={postListState}
onDelete={onDelete}
onPost={
timeline != null && service.hasPostPermission(user, timeline)