import { KANBAN_COLUMN_DISPLAY, REVIEW_STATE_DISPLAY, TASK_STATUS_LABELS, } from '@renderer/utils/memberHelpers'; import { getTaskKanbanColumn } from '@shared/utils/reviewState'; import { deriveTaskDisplayId, formatTaskDisplayLabel } from '@shared/utils/taskIdentity'; import type { TeamTaskWithKanban } from '@shared/types'; interface TaskRowProps { task: TeamTaskWithKanban; } export const TaskRow = ({ task }: TaskRowProps): React.JSX.Element => { const blockedByIds = task.blockedBy?.filter((id) => id.length > 0) ?? []; const blocksIds = task.blocks?.filter((id) => id.length > 0) ?? []; const kanbanColumn = getTaskKanbanColumn(task); return ( {formatTaskDisplayLabel(task)} {task.subject} {task.owner ?? 'Unassigned'}
{kanbanColumn && kanbanColumn in KANBAN_COLUMN_DISPLAY ? KANBAN_COLUMN_DISPLAY[kanbanColumn].label : (TASK_STATUS_LABELS[task.status] ?? task.status)} {task.reviewState === 'needsFix' ? ( {REVIEW_STATE_DISPLAY.needsFix.label} ) : null}
{blockedByIds.length > 0 ? ( {blockedByIds.map((id) => `#${deriveTaskDisplayId(id)}`).join(', ')} ) : ( {'\u2014'} )} {blocksIds.length > 0 ? ( {blocksIds.map((id) => `#${deriveTaskDisplayId(id)}`).join(', ')} ) : ( {'\u2014'} )} ); };