feat(AgentItem): add session count chip for active agents

Display active session count as a chip next to agent name when agent is active
This commit is contained in:
icarus 2025-09-27 13:38:21 +08:00
parent ccc5e830d7
commit 29242154d0

View File

@ -1,6 +1,7 @@
import { Avatar, Button, cn } from '@heroui/react'
import { Avatar, Button, Chip, cn } from '@heroui/react'
import { DeleteIcon, EditIcon } from '@renderer/components/Icons'
import { getAgentAvatar } from '@renderer/config/agent'
import { useSessions } from '@renderer/hooks/agents/useSessions'
import AgentSettingsPopup from '@renderer/pages/settings/AgentSettings/AgentSettingsPopup'
import { AgentEntity } from '@renderer/types'
import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuTrigger } from '@renderer/ui/context-menu'
@ -18,17 +19,16 @@ interface AgentItemProps {
const AgentItem: FC<AgentItemProps> = ({ agent, isActive, onDelete, onPress }) => {
const { t } = useTranslation()
// const { isOpen, onOpen, onClose } = useDisclosure()
// const { agents } = useAgents()
const { sessions } = useSessions(agent.id)
const AgentLabel = useCallback(() => {
const displayName = agent.name ?? agent.id
const avatar = getAgentAvatar(agent.type)
return (
<>
<div className="flex items-center gap-2">
<Avatar className="h-6 w-6" src={avatar} name={displayName} />
<span className="text-sm">{displayName}</span>
</>
</div>
)
}, [agent.id, agent.name, agent.type])
@ -37,8 +37,17 @@ const AgentItem: FC<AgentItemProps> = ({ agent, isActive, onDelete, onPress }) =
<ContextMenu modal={false}>
<ContextMenuTrigger>
<ButtonContainer onPress={onPress} className={isActive ? 'active' : ''}>
<AssistantNameRow className="name" title={agent.name ?? agent.id}>
<AssistantNameRow className="name flex w-full justify-between" title={agent.name ?? agent.id}>
<AgentLabel />
{isActive && (
<Chip
variant="bordered"
size="sm"
radius="full"
className="aspect-square h-5 w-5 items-center justify-center border-[0.5px] text-[10px]">
{sessions.length}
</Chip>
)}
</AssistantNameRow>
</ButtonContainer>
</ContextMenuTrigger>