このコミットが含まれているのは:
2026-07-16 18:52:07 +09:00
コミット 95c3f08a44
11個のファイルの変更317行の追加203行の削除
+12 -21
ファイルの表示
@@ -18,6 +18,7 @@ import { loadPostImportSession,
mergeImportResults,
mergeValidatedImportRows,
processableImportRows,
resultRepairMode,
reviewSummaryCounts,
savePostImportSession } from '@/lib/postImportSession'
import Forbidden from '@/pages/Forbidden'
@@ -191,7 +192,8 @@ const PostImportReviewPage: FC<Props> = ({ user }) => {
}
const submit = async () => {
if (sessionId == null || session == null || processable.length === 0)
const currentSession = sessionRef.current
if (sessionId == null || currentSession == null || processable.length === 0)
return
setLoading (true)
@@ -199,7 +201,7 @@ const PostImportReviewPage: FC<Props> = ({ user }) => {
{
const validated = await apiPost<{ rows: PostImportRow[] }> ('/posts/import/validate', {
rows:
session.rows
currentSession.rows
.filter (row => row.importStatus !== 'created')
.map (row => ({ sourceRow: row.sourceRow,
url: row.url,
@@ -209,11 +211,11 @@ const PostImportReviewPage: FC<Props> = ({ user }) => {
metadataUrl: row.metadataUrl })),
changed_row: -1 })
const validatedRows = initialisePreviewRows (validated.rows)
const mergedRows = mergeValidatedImportRows (session.rows, validatedRows)
const mergedRows = mergeValidatedImportRows (currentSession.rows, validatedRows)
const firstInvalid = mergedRows.find (row => Object.keys (row.validationErrors).length > 0)
if (firstInvalid != null)
{
const nextSession = { ...session, rows: mergedRows }
const nextSession = { ...currentSession, rows: mergedRows }
sessionRef.current = nextSession
setSession (nextSession)
void editRow (firstInvalid)
@@ -244,26 +246,15 @@ const PostImportReviewPage: FC<Props> = ({ user }) => {
return {
...row,
importStatus: 'pending',
recoverable: true,
validationErrors: recoverable.errors ?? { },
importErrors: undefined }
})
const firstRecoverable = nextRows.find (row =>
Object.keys (row.validationErrors).length > 0
&& row.importStatus !== 'created')
if (firstRecoverable != null)
{
const repairSession = { ...session,
rows: nextRows,
repairMode: 'failed' as const }
sessionRef.current = repairSession
setSession (repairSession)
const saved = savePostImportSession (sessionId, repairSession, message =>
toast ({ title: '取込状態を保存できませんでした', description: message }))
if (saved)
void editRow (firstRecoverable)
return
}
const nextSession = { ...session, rows: nextRows, repairMode: 'all' as const }
const nextSession = {
...currentSession,
rows: nextRows,
repairMode: resultRepairMode (nextRows) }
sessionRef.current = nextSession
setSession (nextSession)
const saved = savePostImportSession (sessionId, nextSession, message =>
toast ({ title: '取込状態を保存できませんでした', description: message }))