import FieldError from '@/components/common/FieldError' import PostImportTagLinks from '@/components/posts/import/PostImportTagLinks' import { Button } from '@/components/ui/button' import PostImportThumbnailPreview from '@/components/posts/import/PostImportThumbnailPreview' import PostImportStatusBadge from '@/components/posts/import/PostImportStatusBadge' import { displayPostImportStatus } from '@/components/posts/import/postImportRowStatus' import { hasVideoTag } from '@/lib/postImportSession' import { canEditReviewRow, canRetryResultRow } from '@/lib/postImportSession' import { cn, originalCreatedAtString } from '@/lib/utils' import type { FC } from 'react' import type { PostImportRow } from '@/lib/postImportSession' type Props = { row: PostImportRow displayNumber?: number onEdit?: () => void onRetry?: () => void onToggleSkip?: (checked: boolean) => void rowMessages?: string[] editDisabled?: boolean retryDisabled?: boolean skipDisabled?: boolean showActions?: boolean showSkipToggle?: boolean } const summaryWarning = (row: PostImportRow): string | null => Object.values (row.fieldWarnings ?? { }).flat ()[0] ?? row.baseWarnings?.[0] ?? null const summaryDate = (row: PostImportRow): string => originalCreatedAtString ( row.attributes.originalCreatedFrom?.toString () ?? null, row.attributes.originalCreatedBefore?.toString () ?? null) const PostImportRowSummary: FC = ( { row, displayNumber, onEdit, onRetry, onToggleSkip, rowMessages, editDisabled, retryDisabled, skipDisabled, showActions = true, showSkipToggle = false }, ) => { const warning = summaryWarning (row) const displayStatus = displayPostImportStatus (row) const editVisible = onEdit != null const editAllowed = editVisible && canEditReviewRow (row) const retryAllowed = onRetry != null && canRetryResultRow (row) const skipChecked = row.skipReason === 'manual' const rowNumber = displayNumber ?? row.sourceRow const duration = String (row.attributes.duration ?? '') const showDuration = hasVideoTag (row.attributes.tags) && duration !== '' const skipControl = showSkipToggle ? ( ) : null return ( <>
#{rowNumber}
{String (row.attributes.title ?? '')}
{row.url}
{summaryDate (row)}
{showDuration && (
動画時間 {duration}
)} {warning && (
{warning}
)}
{displayStatus != null && }
{skipControl} {showActions && editVisible && ( )} {showActions && retryAllowed && ( )}
#{rowNumber}
{String (row.attributes.title ?? '')}
{row.url}
{displayStatus != null && }
{summaryDate (row)}
{showDuration && (
動画時間 {duration}
)} {warning && (
{warning}
)} {skipControl}
{showActions && (editVisible || retryAllowed) && (
{editVisible && ( )} {retryAllowed && ( )}
)}
) } export default PostImportRowSummary