From 006295dc4558861aa88cc25d7f8633d781585edb Mon Sep 17 00:00:00 2001 From: Codex Night Worker Date: Thu, 12 Nov 2026 22:51:01 +0900 Subject: [PATCH] AI: address review on PR #465 --- frontend/src/components/PostEditForm.tsx | 56 ++++++++++++++---------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/frontend/src/components/PostEditForm.tsx b/frontend/src/components/PostEditForm.tsx index 5990c92..0e0f922 100644 --- a/frontend/src/components/PostEditForm.tsx +++ b/frontend/src/components/PostEditForm.tsx @@ -15,7 +15,7 @@ import { msToTime } from '@/lib/utils' import { useValidationErrors } from '@/lib/useValidationErrors' import { useUITranslation } from '@/lib/useUITranslation' -import type { FC, FormEvent } from 'react' +import type { FC, FormEvent, ReactNode } from 'react' import type { Post, TagWithSections } from '@/types' @@ -23,6 +23,8 @@ type PostFormField = 'parentPostIds' | 'tags' | 'videoMs' | 'originalCreatedAt' | 'originalCreatedFrom' | 'originalCreatedBefore' +type PostEditData = Omit[0], 'id'> + const groupedMessages = (...values: (string[] | undefined)[]): string[] => [...new Set (values.flatMap (value => value ?? []))] @@ -155,23 +157,33 @@ const PostEditForm: FC = ({ post, onSave }) => { setDisabled (true) try { - const differences = [ - { name: label ('shared:labels.title'), - prev: post.title ?? '', current: title ?? '' }, - { name: label ('shared:labels.parentPosts'), - prev: (post.parentPosts ?? []).map (parent => parent.id).join (' '), - current: parentPostIds }, - { name: label ('tags:title'), - prev: tagsToStr (post.tags), current: tags }, - { name: label ('shared:labels.duration'), - prev: videoMsToDurationValue (post.videoMs), - current: videoFlg ? duration : '' }, - { name: <>{label ('shared:labels.originalCreatedAt')}{' '} - {label ('shared:labels.since')}, - prev: post.originalCreatedFrom ?? '', current: originalCreatedFrom ?? '' }, - { name: <>{label ('shared:labels.originalCreatedAt')}{' '} - {label ('shared:labels.before')}, - prev: post.originalCreatedBefore ?? '', current: originalCreatedBefore ?? '' }] + const current: PostEditData = { + title, tags, parentPostIds, + duration: videoFlg ? duration : null, + originalCreatedFrom, originalCreatedBefore } + const fields: { + [Key in keyof PostEditData]-?: { + name: ReactNode + prev: PostEditData[Key] } } = { + title: { name: label ('shared:labels.title'), prev: post.title }, + parentPostIds: { + name: label ('shared:labels.parentPosts'), + prev: (post.parentPosts ?? []).map (parent => parent.id).join (' ') }, + tags: { name: label ('tags:title'), prev: tagsToStr (post.tags) }, + duration: { + name: label ('shared:labels.duration'), + prev: videoMsToDurationValue (post.videoMs) }, + originalCreatedFrom: { + name: <>{label ('shared:labels.originalCreatedAt')}{' '} + {label ('shared:labels.since')}, + prev: post.originalCreatedFrom }, + originalCreatedBefore: { + name: <>{label ('shared:labels.originalCreatedAt')}{' '} + {label ('shared:labels.before')}, + prev: post.originalCreatedBefore } } + const differences = (Object.keys (fields) as (keyof PostEditData)[]) + .map (key => ({ key, name: fields[key].name, + prev: fields[key].prev ?? '', current: current[key] ?? '' })) .filter (row => row.prev !== row.current) if (!(await dialogue.confirm ({ @@ -179,8 +191,8 @@ const PostEditForm: FC = ({ post, onSave }) => { confirmText: label ('shared:actions.update'), description: (
- {differences.map ((row, index) => ( -
+ {differences.map (row => ( +
{row.name}
{row.prev && ( @@ -196,9 +208,7 @@ const PostEditForm: FC = ({ post, onSave }) => {
) }))) return - await update ({ id: post.id, title, tags, parentPostIds, - duration: videoFlg ? duration : null, - originalCreatedFrom, originalCreatedBefore }, + await update ({ id: post.id, ...current }, { baseVersionNo: post.versionNo }) } finally