mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-04 03:40:33 +08:00
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:
parent
ccc5e830d7
commit
29242154d0
@ -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>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user