feat: enhanced search functionality with translation support
This commit is contained in:
parent
057efbf98c
commit
bf5617393b
@ -180,6 +180,7 @@
|
|||||||
"search.placeholder": "Search topics or messages...",
|
"search.placeholder": "Search topics or messages...",
|
||||||
"continue_chat": "Continue Chatting",
|
"continue_chat": "Continue Chatting",
|
||||||
"search.topics.empty": "No topics found, press Enter to search all messages",
|
"search.topics.empty": "No topics found, press Enter to search all messages",
|
||||||
|
"search.messages": "Search All Messages",
|
||||||
"locate.message": "Locate the message"
|
"locate.message": "Locate the message"
|
||||||
},
|
},
|
||||||
"provider": {
|
"provider": {
|
||||||
|
|||||||
@ -179,6 +179,7 @@
|
|||||||
"search.placeholder": "搜索话题或消息...",
|
"search.placeholder": "搜索话题或消息...",
|
||||||
"continue_chat": "继续聊天",
|
"continue_chat": "继续聊天",
|
||||||
"search.topics.empty": "没有找到相关话题, 点击回车键搜索所有消息",
|
"search.topics.empty": "没有找到相关话题, 点击回车键搜索所有消息",
|
||||||
|
"search.messages": "搜索所有消息",
|
||||||
"locate.message": "定位到消息"
|
"locate.message": "定位到消息"
|
||||||
},
|
},
|
||||||
"provider": {
|
"provider": {
|
||||||
|
|||||||
@ -179,6 +179,7 @@
|
|||||||
"search.placeholder": "搜尋話題或訊息...",
|
"search.placeholder": "搜尋話題或訊息...",
|
||||||
"continue_chat": "繼續聊天",
|
"continue_chat": "繼續聊天",
|
||||||
"search.topics.empty": "沒有找到相關話題, 點擊回車鍵搜尋所有訊息",
|
"search.topics.empty": "沒有找到相關話題, 點擊回車鍵搜尋所有訊息",
|
||||||
|
"search.messages": "搜尋所有訊息",
|
||||||
"locate.message": "定位到訊息"
|
"locate.message": "定位到訊息"
|
||||||
},
|
},
|
||||||
"provider": {
|
"provider": {
|
||||||
|
|||||||
@ -82,7 +82,12 @@ const TopicsPage: FC = () => {
|
|||||||
/>
|
/>
|
||||||
</Header>
|
</Header>
|
||||||
<Divider style={{ margin: 0 }} />
|
<Divider style={{ margin: 0 }} />
|
||||||
<TopicsHistory keywords={search} onClick={onTopicClick as any} style={{ display: isShow('topics') }} />
|
<TopicsHistory
|
||||||
|
keywords={search}
|
||||||
|
onClick={onTopicClick as any}
|
||||||
|
onSearch={onSearch}
|
||||||
|
style={{ display: isShow('topics') }}
|
||||||
|
/>
|
||||||
<TopicMessages topic={topic} style={{ display: isShow('topic') }} />
|
<TopicMessages topic={topic} style={{ display: isShow('topic') }} />
|
||||||
<SearchResults
|
<SearchResults
|
||||||
keywords={isShow('search') ? search : ''}
|
keywords={isShow('search') ? search : ''}
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
|
import { VStack } from '@renderer/components/Layout'
|
||||||
import { useAssistants } from '@renderer/hooks/useAssistant'
|
import { useAssistants } from '@renderer/hooks/useAssistant'
|
||||||
import useScrollPosition from '@renderer/hooks/useScrollPosition'
|
import useScrollPosition from '@renderer/hooks/useScrollPosition'
|
||||||
import { getTopicById } from '@renderer/hooks/useTopic'
|
import { getTopicById } from '@renderer/hooks/useTopic'
|
||||||
import { Topic } from '@renderer/types'
|
import { Topic } from '@renderer/types'
|
||||||
import { Divider, Empty } from 'antd'
|
import { Button, Divider, Empty } from 'antd'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
import { groupBy, isEmpty, orderBy } from 'lodash'
|
import { groupBy, isEmpty, orderBy } from 'lodash'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
@ -11,9 +12,10 @@ import styled from 'styled-components'
|
|||||||
type Props = {
|
type Props = {
|
||||||
keywords: string
|
keywords: string
|
||||||
onClick: (topic: Topic) => void
|
onClick: (topic: Topic) => void
|
||||||
|
onSearch: () => void
|
||||||
} & React.HTMLAttributes<HTMLDivElement>
|
} & React.HTMLAttributes<HTMLDivElement>
|
||||||
|
|
||||||
const TopicsHistory: React.FC<Props> = ({ keywords, onClick, ...props }) => {
|
const TopicsHistory: React.FC<Props> = ({ keywords, onClick, onSearch, ...props }) => {
|
||||||
const { assistants } = useAssistants()
|
const { assistants } = useAssistants()
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { handleScroll, containerRef } = useScrollPosition('TopicsHistory')
|
const { handleScroll, containerRef } = useScrollPosition('TopicsHistory')
|
||||||
@ -31,9 +33,12 @@ const TopicsHistory: React.FC<Props> = ({ keywords, onClick, ...props }) => {
|
|||||||
if (isEmpty(filteredTopics)) {
|
if (isEmpty(filteredTopics)) {
|
||||||
return (
|
return (
|
||||||
<ListContainer {...props}>
|
<ListContainer {...props}>
|
||||||
<ContainerWrapper>
|
<VStack alignItems="center">
|
||||||
<Empty description={t('history.search.topics.empty')} />
|
<Empty description={t('history.search.topics.empty')} />
|
||||||
</ContainerWrapper>
|
<Button style={{ width: 200, marginTop: 20 }} type="primary" onClick={onSearch}>
|
||||||
|
{t('history.search.messages')}
|
||||||
|
</Button>
|
||||||
|
</VStack>
|
||||||
</ListContainer>
|
</ListContainer>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user