このコミットが含まれているのは:
2026-05-11 03:32:47 +09:00
コミット add60cb413
72個のファイルの変更1659行の追加247行の削除
+11 -8
ファイルの表示
@@ -13,6 +13,7 @@ import MainArea from '@/components/layout/MainArea'
import { Button } from '@/components/ui/button'
import { toast } from '@/components/ui/use-toast'
import { SITE_TITLE } from '@/config'
import { isApiError } from '@/lib/api'
import { fetchPost, toggleViewedFlg } from '@/lib/posts'
import { postsKeys, tagsKeys } from '@/lib/queryKeys'
import { cn } from '@/lib/utils'
@@ -26,7 +27,7 @@ import type { NiconicoViewerHandle, Post, User } from '@/types'
type Props = { user: User | null }
export default (({ user }: Props) => {
const PostDetailPage: FC<Props> = ({ user }) => {
const { id } = useParams ()
const postId = String (id ?? '')
const postKey = postsKeys.show (postId)
@@ -44,16 +45,16 @@ export default (({ user }: Props) => {
const changeViewedFlg = useMutation ({
mutationFn: async () => {
const cur = qc.getQueryData<any> (postKey)
const cur = qc.getQueryData<Post> (postKey)
const next = !(cur?.viewed)
await toggleViewedFlg (postId, next)
return next
},
onMutate: async () => {
await qc.cancelQueries ({ queryKey: postKey })
const prev = qc.getQueryData<any> (postKey)
const prev = qc.getQueryData<Post> (postKey)
qc.setQueryData (postKey,
(cur: any) => cur ? { ...cur, viewed: !(cur.viewed) } : cur)
(cur: Post | undefined) => cur ? { ...cur, viewed: !(cur.viewed) } : cur)
return { prev }
},
onError: (...[, , ctx]) => {
@@ -69,7 +70,7 @@ export default (({ user }: Props) => {
if (!(errorFlg))
return
const code = (error as any)?.response.status ?? (error as any)?.status
const code = isApiError (error) ? error.response?.status : undefined
if (code)
setStatus (code)
}, [errorFlg, error])
@@ -169,9 +170,9 @@ export default (({ user }: Props) => {
<Tab name="編輯">
<PostEditForm
post={post}
onSave={newPost => {
onSave={newPost => {
qc.setQueryData (postsKeys.show (postId),
(prev: any) => newPost ?? prev)
(prev: Post | undefined) => newPost ?? prev)
qc.invalidateQueries ({ queryKey: postsKeys.root })
qc.invalidateQueries ({ queryKey: tagsKeys.root })
}}/>
@@ -185,4 +186,6 @@ export default (({ user }: Props) => {
{post && <TagDetailSidebar post={post} sp/>}
</div>
</div>)
}) satisfies FC<Props>
}
export default PostDetailPage