import React, { useMemo } from 'react'; import { MemberBadge } from '@renderer/components/team/MemberBadge'; import { buildMemberColorMap } from '@renderer/utils/memberHelpers'; import { computeAwaitingReply } from '@renderer/utils/taskCommentPendingReply'; import { formatDistanceToNowStrict } from 'date-fns'; import type { ResolvedTeamMember, TaskComment } from '@shared/types'; interface TaskCommentAwaitingReplyProps { comments: TaskComment[] | undefined; taskOwner: string | undefined; taskCreatedBy: string | undefined; members: ResolvedTeamMember[]; } /** * Compact indicator shown between the comment input and the comment list * when the human user is awaiting a reply from the task owner or creator. */ export const TaskCommentAwaitingReply = ({ comments, taskOwner, taskCreatedBy, members, }: TaskCommentAwaitingReplyProps): React.JSX.Element | null => { const colorMap = useMemo(() => buildMemberColorMap(members), [members]); const result = useMemo( () => computeAwaitingReply(comments, taskOwner, taskCreatedBy), [comments, taskOwner, taskCreatedBy] ); if (!result.isAwaiting) return null; const since = formatDistanceToNowStrict(result.userCommentAtMs, { addSuffix: true }); return (