aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/app/views/timeline-common/TimelinePageTemplate.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'FrontEnd/src/app/views/timeline-common/TimelinePageTemplate.tsx')
-rw-r--r--FrontEnd/src/app/views/timeline-common/TimelinePageTemplate.tsx62
1 files changed, 51 insertions, 11 deletions
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<TManageItem>(
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<TManageItem>(
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: {