import axios from 'axios' import toCamel from 'camelcase-keys' import { useEffect, useState } from 'react' import PostFormTagsArea from '@/components/PostFormTagsArea' import PostOriginalCreatedTimeField from '@/components/PostOriginalCreatedTimeField' import Label from '@/components/common/Label' import { Button } from '@/components/ui/button' import { API_BASE_URL } from '@/config' import type { FC } from 'react' import type { Post, Tag } from '@/types' const tagsToStr = (tags: Tag[]): string => { const result: Tag[] = [] const walk = (tag: Tag) => { const { children, ...rest } = tag result.push (rest) children?.forEach (walk) } tags.filter (t => t.category !== 'nico').forEach (walk) return [...(new Set (result.map (t => t.name)))].join (' ') } type Props = { post: Post onSave: (newPost: Post) => void } export default (({ post, onSave }: Props) => { const [originalCreatedBefore, setOriginalCreatedBefore] = useState (post.originalCreatedBefore) const [originalCreatedFrom, setOriginalCreatedFrom] = useState (post.originalCreatedFrom) const [title, setTitle] = useState (post.title) const [tags, setTags] = useState ('') const handleSubmit = async () => { const res = await axios.put ( `${ API_BASE_URL }/posts/${ post.id }`, { title, tags, original_created_from: originalCreatedFrom, original_created_before: originalCreatedBefore }, { headers: { 'Content-Type': 'multipart/form-data', 'X-Transfer-Code': localStorage.getItem ('user_code') ?? '' } }) const data = toCamel (res.data as any, { deep: true }) as Post onSave ({ ...post, title: data.title, tags: data.tags, originalCreatedFrom: data.originalCreatedFrom, originalCreatedBefore: data.originalCreatedBefore } as Post) } useEffect (() => { setTags(tagsToStr (post.tags)) }, [post]) return (
{/* タイトル */}
setTitle (ev.target.value)}/>
{/* タグ */} {/* オリジナルの作成日時 */} {/* 送信 */}
) }) satisfies FC