refactor: improved code readability for filtering agents
This commit is contained in:
parent
ac21c90b6f
commit
ab1c597e1c
@ -6,8 +6,8 @@ import { createAssistantFromAgent } from '@renderer/services/assistant'
|
|||||||
import { Agent } from '@renderer/types'
|
import { Agent } from '@renderer/types'
|
||||||
import { uuid } from '@renderer/utils'
|
import { uuid } from '@renderer/utils'
|
||||||
import { Col, Input, Row, Tabs as TabsAntd, Typography } from 'antd'
|
import { Col, Input, Row, Tabs as TabsAntd, Typography } from 'antd'
|
||||||
import { debounce, groupBy, omit } from 'lodash'
|
import { groupBy, omit } from 'lodash'
|
||||||
import { FC, useEffect, useMemo, useState } from 'react'
|
import { FC, useMemo, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import ReactMarkdown from 'react-markdown'
|
import ReactMarkdown from 'react-markdown'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
@ -30,33 +30,25 @@ const getAgentsFromSystemAgents = () => {
|
|||||||
|
|
||||||
const AgentsPage: FC = () => {
|
const AgentsPage: FC = () => {
|
||||||
const [search, setSearch] = useState('')
|
const [search, setSearch] = useState('')
|
||||||
const [filteredAgentGroups, setFilteredAgentGroups] = useState({})
|
|
||||||
const agentGroups = useMemo(() => groupBy(getAgentsFromSystemAgents(), 'group'), [])
|
const agentGroups = useMemo(() => groupBy(getAgentsFromSystemAgents(), 'group'), [])
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
|
|
||||||
const debouncedSearch = useMemo(
|
const filteredAgentGroups = useMemo(() => {
|
||||||
() =>
|
if (!search.trim()) return agentGroups
|
||||||
debounce((searchTerm: string) => {
|
|
||||||
if (!searchTerm.trim()) {
|
|
||||||
setFilteredAgentGroups(agentGroups)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const filtered = {}
|
const filtered = {}
|
||||||
Object.entries(agentGroups).forEach(([group, agents]) => {
|
Object.entries(agentGroups).forEach(([group, agents]) => {
|
||||||
const filteredAgents = agents.filter(
|
const filteredAgents = agents.filter(
|
||||||
(agent) =>
|
(agent) =>
|
||||||
agent.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
|
agent.name.toLowerCase().includes(search.toLowerCase()) ||
|
||||||
agent.prompt?.toLowerCase().includes(searchTerm.toLowerCase())
|
agent.prompt?.toLowerCase().includes(search.toLowerCase())
|
||||||
)
|
)
|
||||||
if (filteredAgents.length > 0) {
|
if (filteredAgents.length > 0) {
|
||||||
filtered[group] = filteredAgents
|
filtered[group] = filteredAgents
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
setFilteredAgentGroups(filtered)
|
return filtered
|
||||||
}, 500),
|
}, [agentGroups, search])
|
||||||
[agentGroups]
|
|
||||||
)
|
|
||||||
|
|
||||||
const getAgentName = (agent: Agent) => {
|
const getAgentName = (agent: Agent) => {
|
||||||
return agent.emoji ? agent.emoji + ' ' + agent.name : agent.name
|
return agent.emoji ? agent.emoji + ' ' + agent.name : agent.name
|
||||||
@ -91,10 +83,6 @@ const AgentsPage: FC = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
debouncedSearch(search)
|
|
||||||
}, [search, debouncedSearch])
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Container>
|
<Container>
|
||||||
<Navbar>
|
<Navbar>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user