このコミットが含まれているのは:
2026-07-13 00:58:02 +09:00
コミット ac82adc6b3
12個のファイルの変更789行の追加256行の削除
+29 -8
ファイルの表示
@@ -13,7 +13,8 @@ import { toast } from '@/components/ui/use-toast'
import { SITE_TITLE } from '@/config'
import { apiPost } from '@/lib/api'
import { canEditContent } from '@/lib/users'
import { loadPostImportSession,
import { clearPostImportSourceDraft,
loadPostImportSession,
mergeImportResults,
retryImportRow,
savePostImportSession,
@@ -63,7 +64,8 @@ const PostImportResultPage: FC<Props> = ({ user }) => {
if (!(sessionId))
return
const loaded = loadPostImportSession (sessionId)
const loaded = loadPostImportSession (sessionId, message =>
toast ({ title: '取込状態を復元できませんでした', description: message }))
setSession (loaded)
setMissing (loaded == null)
}, [sessionId])
@@ -72,7 +74,8 @@ const PostImportResultPage: FC<Props> = ({ user }) => {
if (!(sessionId) || !(session))
return
savePostImportSession (sessionId, session)
savePostImportSession (sessionId, session, message =>
toast ({ title: '取込状態を保存できませんでした', description: message }))
}, [session, sessionId])
const counts = useMemo (() => ({
@@ -104,8 +107,7 @@ const PostImportResultPage: FC<Props> = ({ user }) => {
attributes: target.attributes,
provenance: target.provenance,
tagSources: target.tagSources,
metadataUrl: target.metadataUrl }],
existing: session.existing })
metadataUrl: target.metadataUrl }] })
setSession (current =>
current
? { ...current, rows: mergeImportResults (current.rows, result.rows) }
@@ -126,7 +128,12 @@ const PostImportResultPage: FC<Props> = ({ user }) => {
const nextSession = { ...session, repairMode: 'failed' as const }
setSession (nextSession)
if (sessionId)
savePostImportSession (sessionId, nextSession)
{
const saved = savePostImportSession (sessionId, nextSession, message =>
toast ({ title: '取込状態を保存できませんでした', description: message }))
if (!(saved))
return
}
navigate (`/posts/import/${ sessionId }/review?edit=${ sourceRow }`)
}
@@ -185,6 +192,13 @@ const PostImportResultPage: FC<Props> = ({ user }) => {
<div className="text-xs text-neutral-500 dark:text-neutral-400">
{row.url}
</div>
{row.createdPostId && (
<PrefetchLink
to={`/posts/${ row.createdPostId }`}
className="inline-block text-xs text-sky-700 underline
dark:text-sky-300">
稿 #{row.createdPostId}
</PrefetchLink>)}
<FieldError messages={Object.values (row.importErrors ?? { }).flat ()}/>
</div>
@@ -222,7 +236,10 @@ const PostImportResultPage: FC<Props> = ({ user }) => {
onClick={() => {
const nextSession = { ...session, repairMode: 'all' as const }
setSession (nextSession)
savePostImportSession (sessionId, nextSession)
const saved = savePostImportSession (sessionId, nextSession, message =>
toast ({ title: '取込状態を保存できませんでした', description: message }))
if (!(saved))
return
navigate (`/posts/import/${ sessionId }/review`)
}}>
@@ -230,7 +247,11 @@ const PostImportResultPage: FC<Props> = ({ user }) => {
<Button
type="button"
variant="outline"
onClick={() => navigate ('/posts/import')}>
onClick={() => {
clearPostImportSourceDraft (message =>
toast ({ title: '入力内容を削除できませんでした', description: message }))
navigate ('/posts/import')
}}>
URL
</Button>
</div>