diff --git a/src/renderer/src/hooks/useStore.ts b/src/renderer/src/hooks/useStore.ts index 8ff8e26e19..c426de3f55 100644 --- a/src/renderer/src/hooks/useStore.ts +++ b/src/renderer/src/hooks/useStore.ts @@ -1,5 +1,12 @@ import { useAppDispatch, useAppSelector } from '@renderer/store' -import { setShowAssistants, setShowTopics, toggleShowAssistants, toggleShowTopics } from '@renderer/store/settings' +import { + setAssistantsTabSortType, + setShowAssistants, + setShowTopics, + toggleShowAssistants, + toggleShowTopics +} from '@renderer/store/settings' +import { AssistantsSortType } from '@renderer/types' export function useShowAssistants() { const showAssistants = useAppSelector((state) => state.settings.showAssistants) @@ -22,3 +29,13 @@ export function useShowTopics() { toggleShowTopics: () => dispatch(toggleShowTopics()) } } + +export function useAssistantsTabSortType() { + const AssistantsTabSortType = useAppSelector((state) => state.settings.assistantsTabSortType) + const dispatch = useAppDispatch() + + return { + AssistantsTabSortType, + setAssistantsTabSortType: (sortType: AssistantsSortType) => dispatch(setAssistantsTabSortType(sortType)) + } +} diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index a17a4551a4..accac204cb 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -105,7 +105,7 @@ "showByTags": "タグ表示" }, "tags": { - "untagged": "未分類タグ", + "untagged": "未分類", "none": "タグなし", "manage": "タグ管理", "add": "タグ追加", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 625d99d603..c85eb7ce86 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -111,7 +111,7 @@ "none": "暂无标签", "manage": "标签管理", "add": "添加标签", - "untagged": "未分组标签", + "untagged": "未分组", "modify": "修改标签", "delete": "删除标签", "settings": { diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 7a9d9ab0e9..fa8a4704c3 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -105,7 +105,7 @@ "showByTags": "標籤展示" }, "tags": { - "untagged": "未分組標籤", + "untagged": "未分組", "none": "暫無標籤", "manage": "標籤管理", "add": "添加標籤", diff --git a/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx b/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx index a9df36c352..c8cc26a570 100644 --- a/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx @@ -3,8 +3,9 @@ import DragableList from '@renderer/components/DragableList' import Scrollbar from '@renderer/components/Scrollbar' import { useAgents } from '@renderer/hooks/useAgents' import { useAssistants } from '@renderer/hooks/useAssistant' +import { useAssistantsTabSortType } from '@renderer/hooks/useStore' import { useTags } from '@renderer/hooks/useTags' -import { Assistant } from '@renderer/types' +import { Assistant, AssistantsSortType } from '@renderer/types' import { Divider, Tooltip } from 'antd' import { FC, useCallback, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' @@ -12,19 +13,13 @@ import styled from 'styled-components' import AssistantItem from './components/AssistantItem' -type SortType = '' | 'tags' | 'list' - interface AssistantsTabProps { - sortBy: SortType - setSortBy: (assistant: SortType) => void activeAssistant: Assistant setActiveAssistant: (assistant: Assistant) => void onCreateAssistant: () => void onCreateDefaultAssistant: () => void } const Assistants: FC = ({ - sortBy, - setSortBy, activeAssistant, setActiveAssistant, onCreateAssistant, @@ -35,6 +30,7 @@ const Assistants: FC = ({ const { addAgent } = useAgents() const { t } = useTranslation() const { getGroupedAssistants } = useTags() + const { AssistantsTabSortType = 'list', setAssistantsTabSortType } = useAssistantsTabSortType() const containerRef = useRef(null) const onDelete = useCallback( @@ -50,14 +46,14 @@ const Assistants: FC = ({ ) const handleSortByChange = useCallback( - (sortType: SortType) => { - setSortBy(sortType) + (sortType: AssistantsSortType) => { + setAssistantsTabSortType(sortType) }, - [setSortBy] + [setAssistantsTabSortType] ) return ( - {sortBy === 'tags' && ( + {AssistantsTabSortType === 'tags' && (
{getGroupedAssistants.map((group) => ( @@ -72,7 +68,7 @@ const Assistants: FC = ({ key={assistant.id} assistant={assistant} isActive={assistant.id === activeAssistant.id} - sortBy={sortBy} + sortBy={AssistantsTabSortType} onSwitch={setActiveAssistant} onDelete={onDelete} addAgent={addAgent} @@ -85,7 +81,7 @@ const Assistants: FC = ({ ))}
)} - {sortBy === 'list' && ( + {AssistantsTabSortType === 'list' && ( = ({ key={assistant.id} assistant={assistant} isActive={assistant.id === activeAssistant.id} - sortBy={sortBy} + sortBy={AssistantsTabSortType} onSwitch={setActiveAssistant} onDelete={onDelete} addAgent={addAgent} diff --git a/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx b/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx index 94cfaac550..cebc7c0daa 100644 --- a/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx +++ b/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx @@ -21,7 +21,7 @@ import { useTags } from '@renderer/hooks/useTags' import AssistantSettingsPopup from '@renderer/pages/settings/AssistantSettings' import { getDefaultModel, getDefaultTopic } from '@renderer/services/AssistantService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { Assistant } from '@renderer/types' +import { Assistant, AssistantsSortType } from '@renderer/types' import { uuid } from '@renderer/utils' import { hasTopicPendingRequests } from '@renderer/utils/queue' import { Dropdown } from 'antd' @@ -35,14 +35,14 @@ import * as tinyPinyin from 'tiny-pinyin' interface AssistantItemProps { assistant: Assistant isActive: boolean - sortBy: 'tags' | 'list' + sortBy: AssistantsSortType onSwitch: (assistant: Assistant) => void onDelete: (assistant: Assistant) => void onCreateDefaultAssistant: () => void addAgent: (agent: any) => void addAssistant: (assistant: Assistant) => void onTagClick?: (tag: string) => void - handleSortByChange?: (sortType: '' | 'tags' | 'list') => void + handleSortByChange?: (sortType: AssistantsSortType) => void } const AssistantItem: FC = ({ diff --git a/src/renderer/src/pages/home/Tabs/index.tsx b/src/renderer/src/pages/home/Tabs/index.tsx index 51567c80e7..b4a0fc2c61 100644 --- a/src/renderer/src/pages/home/Tabs/index.tsx +++ b/src/renderer/src/pages/home/Tabs/index.tsx @@ -25,7 +25,6 @@ interface Props { } type Tab = 'assistants' | 'topic' | 'settings' -type SortType = '' | 'tags' | 'list' let _tab: any = '' @@ -39,7 +38,6 @@ const HomeTabs: FC = ({ style }) => { const { addAssistant } = useAssistants() - const [sortBy, setSortBy] = useState('list') const [tab, setTab] = useState(position === 'left' ? _tab || 'assistants' : 'topic') const { topicPosition } = useSettings() const { defaultAssistant } = useDefaultAssistant() @@ -131,8 +129,6 @@ const HomeTabs: FC = ({ {tab === 'assistants' && ( { state.showTopics = !state.showTopics }, + setAssistantsTabSortType: (state, action: PayloadAction) => { + state.assistantsTabSortType = action.payload + }, setSendMessageShortcut: (state, action: PayloadAction) => { state.sendMessageShortcut = action.payload }, @@ -658,6 +664,7 @@ export const { toggleShowAssistants, setShowTopics, toggleShowTopics, + setAssistantsTabSortType, setSendMessageShortcut, setLanguage, setTargetLanguage, diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 9544375f80..a76b47a88c 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -28,6 +28,8 @@ export type Assistant = { tags?: string[] // 助手标签 } +export type AssistantsSortType = 'tags' | 'list' + export type AssistantMessage = { role: 'user' | 'assistant' content: string