From 3da3793282a2bb50f7f3e39fbe08efee7582743b Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 9 Jan 2021 01:07:35 +0800 Subject: ... --- .../views/timeline-common/TimelinePageTemplate.tsx | 62 ++++++++++++++++++---- 1 file changed, 51 insertions(+), 11 deletions(-) (limited to 'FrontEnd/src/app/views/timeline-common/TimelinePageTemplate.tsx') diff --git a/FrontEnd/src/app/views/timeline-common/TimelinePageTemplate.tsx b/FrontEnd/src/app/views/timeline-common/TimelinePageTemplate.tsx index 7f5c8206..caced3b7 100644 --- a/FrontEnd/src/app/views/timeline-common/TimelinePageTemplate.tsx +++ b/FrontEnd/src/app/views/timeline-common/TimelinePageTemplate.tsx @@ -45,7 +45,7 @@ export default function TimelinePageTemplate( null ); - const timelineState = useTimelineInfo(name); + const [timelineState, setTimelineState] = useTimelineInfo(name); const postListState = usePostList(name); const onPost: TimelinePostSendCallback = React.useCallback( @@ -121,24 +121,64 @@ export default function TimelinePageTemplate( onBookmark: user != null ? () => { - void getHttpBookmarkClient() - .put(name, user.token) - .then(() => { - pushAlert({ - message: { - type: "i18n", - key: "timeline.addBookmarkSuccess", + if (timeline.isBookmark) { + setTimelineState({ + ...timelineState, + timeline: { + ...timeline, + isBookmark: false, + }, + }); + void getHttpBookmarkClient() + .delete(name) + .then( + () => { + void timelineService.syncTimeline(name); }, - type: "success", - }); + () => { + pushAlert({ + message: { + type: "i18n", + key: "timeline.removeBookmarkFail", + }, + type: "danger", + }); + setTimelineState(timelineState); + } + ); + } else { + setTimelineState({ + ...timelineState, + timeline: { + ...timeline, + isBookmark: true, + }, }); + void getHttpBookmarkClient() + .put(name) + .then( + () => { + void timelineService.syncTimeline(name); + }, + () => { + pushAlert({ + message: { + type: "i18n", + key: "timeline.addBookmarkFail", + }, + type: "danger", + }); + setTimelineState(timelineState); + } + ); + } } : undefined, onHighlight: user != null && user.hasHighlightTimelineAdministrationPermission ? () => { void getHttpHighlightClient() - .put(name, user.token) + .put(name) .then(() => { pushAlert({ message: { -- cgit v1.2.3