このコミットが含まれているのは:
@@ -13,7 +13,9 @@ import { apiPost } from '@/lib/api'
|
||||
import useDialogue from '@/lib/dialogues/useDialogue'
|
||||
import { canEditContent } from '@/lib/users'
|
||||
import { loadPostImportSession,
|
||||
canEditReviewRow,
|
||||
creatableImportRows,
|
||||
hasExactSourceRows,
|
||||
initialisePreviewRows,
|
||||
mergeImportResults,
|
||||
mergeValidatedImportRow,
|
||||
@@ -106,6 +108,8 @@ const PostImportReviewPage: FC<Props> = ({ user }) => {
|
||||
const currentSession = sessionRef.current
|
||||
if (currentSession == null)
|
||||
return { saved: false, row: null }
|
||||
if (!(canEditReviewRow (row)))
|
||||
return { saved: false, row: null }
|
||||
|
||||
const baseRow =
|
||||
resetRequested
|
||||
@@ -234,8 +238,7 @@ const PostImportReviewPage: FC<Props> = ({ user }) => {
|
||||
const expectedSourceRows = currentSession.rows
|
||||
.filter (row => row.importStatus !== 'created')
|
||||
.map (row => row.sourceRow)
|
||||
const validatedSourceRows = new Set (validatedRows.map (_1 => _1.sourceRow))
|
||||
if (expectedSourceRows.some (_1 => !(validatedSourceRows.has (_1))))
|
||||
if (!(hasExactSourceRows (expectedSourceRows, validatedRows)))
|
||||
{
|
||||
toast ({ title: '再検証結果が不完全でした' })
|
||||
return
|
||||
@@ -254,6 +257,16 @@ const PostImportReviewPage: FC<Props> = ({ user }) => {
|
||||
void editRow (firstInvalid)
|
||||
return
|
||||
}
|
||||
const validatedSession = {
|
||||
...latestAfterValidate,
|
||||
rows: mergedRows,
|
||||
repairMode: resultRepairMode (mergedRows) }
|
||||
sessionRef.current = validatedSession
|
||||
setSession (validatedSession)
|
||||
const savedValidated = savePostImportSession (sessionId, validatedSession, message =>
|
||||
toast ({ title: '取込状態を保存できませんでした', description: message }))
|
||||
if (!(savedValidated))
|
||||
return
|
||||
|
||||
const result = await apiPost<{
|
||||
created: number
|
||||
@@ -267,10 +280,13 @@ const PostImportReviewPage: FC<Props> = ({ user }) => {
|
||||
provenance: row.provenance,
|
||||
tagSources: row.tagSources,
|
||||
metadataUrl: row.metadataUrl })) })
|
||||
const latestAfterImport = sessionRef.current ?? {
|
||||
...latestAfterValidate,
|
||||
rows: mergedRows,
|
||||
repairMode: resultRepairMode (mergedRows) }
|
||||
const expectedImportRows = processableImportRows (mergedRows).map (row => row.sourceRow)
|
||||
if (!(hasExactSourceRows (expectedImportRows, result.rows)))
|
||||
{
|
||||
toast ({ title: '登録結果が不完全でした' })
|
||||
return
|
||||
}
|
||||
const latestAfterImport = sessionRef.current ?? validatedSession
|
||||
const mergedResults = mergeImportResults (latestAfterImport.rows, result.rows)
|
||||
const recoverableRows = result.rows.filter (row =>
|
||||
row.status === 'failed'
|
||||
|
||||
新しい課題から参照
ユーザをブロックする