From 16af3c0592eb29aa77e20c9842de7030137be375 Mon Sep 17 00:00:00 2001 From: thislight Date: Wed, 25 Sep 2024 20:32:50 +0800 Subject: [PATCH] TootBottomSheet: fix #13 * use the .reblog to replace the remote toot --- src/timelines/TootBottomSheet.tsx | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/timelines/TootBottomSheet.tsx b/src/timelines/TootBottomSheet.tsx index 07287c9..2fc7307 100644 --- a/src/timelines/TootBottomSheet.tsx +++ b/src/timelines/TootBottomSheet.tsx @@ -8,12 +8,7 @@ import { type Component, } from "solid-js"; import Scaffold from "../material/Scaffold"; -import { - AppBar, - CircularProgress, - IconButton, - Toolbar, -} from "@suid/material"; +import { AppBar, CircularProgress, IconButton, Toolbar } from "@suid/material"; import { Title } from "../material/typography"; import { ArrowBack as BackIcon, @@ -41,8 +36,6 @@ function getCache(acct: string, id: string) { } } - - const TootBottomSheet: Component = (props) => { const params = useParams<{ acct: string; id: string }>(); const location = useLocation<{ tootBottomSheetPushedCount?: number }>(); @@ -122,6 +115,11 @@ const TootBottomSheet: Component = (props) => { const onBookmark = async () => { const status = remoteToot()!; const client = actSession()!.client; + setRemoteToot( + Object.assign({}, status, { + bookmarked: !status.bookmarked, + }), + ); const result = await (status.bookmarked ? client.v1.statuses.$select(status.id).unbookmark() : client.v1.statuses.$select(status.id).bookmark()); @@ -141,12 +139,17 @@ const TootBottomSheet: Component = (props) => { ? client.v1.statuses.$select(status.id).unreblog() : client.v1.statuses.$select(status.id).reblog()); vibrate([20, 30]); - setRemoteToot(result); + setRemoteToot(result.reblog!); }; const onFav = async () => { const status = remoteToot()!; const client = actSession()!.client; + setRemoteToot( + Object.assign({}, status, { + favourited: !status.favourited, + }), + ); const result = await (status.favourited ? client.v1.statuses.$select(status.id).favourite() : client.v1.statuses.$select(status.id).unfavourite());