"use client" import { UserIcon } from "lucide-react"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { ScrollArea } from "@/components/ui/scroll-area"; import { IMConversationStatus } from "@/lib/generated/enums"; import { useAgentConversationsStore } from "@/lib/stores/agent-conversations"; import { formatDateTime } from "@/lib/utils"; import { useI18n } from "@/i18n/provider"; type ConversationListProps = { onAfterSelect?: () => void } export function ConversationList({ onAfterSelect }: ConversationListProps) { const t = useI18n() const conversations = useAgentConversationsStore((state) => state.conversations) const loading = useAgentConversationsStore((state) => state.conversationsLoading) const selectedId = useAgentConversationsStore((state) => state.selectedConversationId) const selectConversation = useAgentConversationsStore((state) => state.selectConversation) return ( {loading ? (
{t("conversation.loading")}
) : conversations.length > 0 ? ( conversations.map((conversation) => { const isSelected = selectedId === conversation.id return (
{ void selectConversation(conversation.id).then( () => { onAfterSelect?.() }, () => {}, ) }} >
{conversation.customerName || t("conversation.customerFallback", { id: conversation.customerId || conversation.id, })} {conversation.agentUnreadCount > 0 ? (
{conversation.agentUnreadCount > 99 ? "99+" : conversation.agentUnreadCount}
) : null}
{conversation.lastMessageAt ? formatDateTime(conversation.lastMessageAt) : t("conversation.noTime")}
{conversation.lastMessageSummary || t("conversation.noLatestMessage")}
{conversation.status === IMConversationStatus.Pending && conversation.currentTeamName ? (
{t("conversation.teamOnDuty", { name: conversation.currentTeamName, })}
) : null}
) }) ) : (
{t("conversation.empty")}
)}
) }