import { useTranslation } from "react-i18next"; import { SuggestedTask } from "./task.types"; import { useIsCreatingConversation } from "#/hooks/use-is-creating-conversation"; import { useCreateConversation } from "#/hooks/mutation/use-create-conversation"; import { cn } from "#/utils/utils"; import { useUserRepositories } from "#/hooks/query/use-user-repositories"; import { TaskIssueNumber } from "./task-issue-number"; import { Provider } from "#/types/settings"; import { useOptimisticUserMessage } from "#/hooks/use-optimistic-user-message"; const getTaskTypeMap = ( t: (key: string) => string, ): Record => ({ FAILING_CHECKS: t("HOME$FIX_FAILING_CHECKS"), MERGE_CONFLICTS: t("HOME$RESOLVE_MERGE_CONFLICTS"), OPEN_ISSUE: t("HOME$OPEN_ISSUE"), UNRESOLVED_COMMENTS: t("HOME$RESOLVE_UNRESOLVED_COMMENTS"), }); interface TaskCardProps { task: SuggestedTask; } export function TaskCard({ task }: TaskCardProps) { const { setOptimisticUserMessage } = useOptimisticUserMessage(); const { data: repositories } = useUserRepositories(); const { mutate: createConversation, isPending } = useCreateConversation(); const isCreatingConversation = useIsCreatingConversation(); const { t } = useTranslation(); const getRepo = (repo: string, git_provider: Provider) => { const selectedRepo = repositories?.find( (repository) => repository.full_name === repo && repository.git_provider === git_provider, ); return selectedRepo; }; const handleLaunchConversation = () => { const repo = getRepo(task.repo, task.git_provider); setOptimisticUserMessage(t("TASK$ADDRESSING_TASK")); return createConversation({ selectedRepository: repo, suggested_task: task, }); }; // Determine the correct URL format based on git provider let href: string; if (task.git_provider === "gitlab") { const issueType = task.task_type === "OPEN_ISSUE" ? "issues" : "merge_requests"; href = `https://gitlab.com/${task.repo}/-/${issueType}/${task.issue_number}`; } else { const hrefType = task.task_type === "OPEN_ISSUE" ? "issues" : "pull"; href = `https://github.com/${task.repo}/${hrefType}/${task.issue_number}`; } return (
  • {getTaskTypeMap(t)[task.task_type]}

    {task.title}

  • ); }