feat: オリジナルの作成日時追加( #101 ) (#117)

#101 オリジナルの作成日時(より前)の自動設定

#101 余白追加

#101 余白追加

#101 オリジナルの作成日時,フォームにフィールド追加

#101 マイグレとコントローラ

Co-authored-by: miteruzo <miteruzo@naver.com>
Reviewed-on: #117
This commit was merged in pull request #117.
This commit is contained in:
2025-09-22 05:05:30 +09:00
parent 3119d475e5
commit 6bca0215d8
9 changed files with 194 additions and 28 deletions
+23 -5
View File
@@ -3,6 +3,7 @@ import toCamel from 'camelcase-keys'
import { 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'
@@ -16,6 +17,10 @@ type Props = { post: Post
export default (({ post, onSave }: Props) => {
const [originalCreatedBefore, setOriginalCreatedBefore] =
useState<string | null> (post.originalCreatedBefore)
const [originalCreatedFrom, setOriginalCreatedFrom] =
useState<string | null> (post.originalCreatedFrom)
const [title, setTitle] = useState (post.title)
const [tags, setTags] = useState<string> (post.tags
.filter (t => t.category !== 'nico')
@@ -23,13 +28,19 @@ export default (({ post, onSave }: Props) => {
.join (' '))
const handleSubmit = async () => {
const res = await axios.put (`${ API_BASE_URL }/posts/${ post.id }`, { title, tags },
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') ?? '' } } )
'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 } as Post)
title: data.title,
tags: data.tags,
originalCreatedFrom: data.originalCreatedFrom,
originalCreatedBefore: data.originalCreatedBefore } as Post)
}
return (
@@ -40,12 +51,19 @@ export default (({ post, onSave }: Props) => {
<input type="text"
className="w-full border rounded p-2"
value={title}
onChange={e => setTitle (e.target.value)}/>
onChange={ev => setTitle (ev.target.value)}/>
</div>
{/* タグ */}
<PostFormTagsArea tags={tags} setTags={setTags}/>
{/* オリジナルの作成日時 */}
<PostOriginalCreatedTimeField
originalCreatedFrom={originalCreatedFrom}
setOriginalCreatedFrom={setOriginalCreatedFrom}
originalCreatedBefore={originalCreatedBefore}
setOriginalCreatedBefore={setOriginalCreatedBefore}/>
{/* 送信 */}
<Button onClick={handleSubmit}
className="px-4 py-2 bg-blue-600 text-white rounded disabled:bg-gray-400">