{
- const _topic = await getTopicById(topic.id)
- onClick(_topic)
- }}>
+ onClick(topic)}>
{topic.name.substring(0, 50)}
{dayjs(topic[sortType]).format('HH:mm')}
))}
))}
- {keywords.length >= 2 && (
+ {keywords && (
}>
{t('history.search.messages')}
diff --git a/src/renderer/src/store/assistants.ts b/src/renderer/src/store/assistants.ts
index 238a5b44fd..15a735bc7f 100644
--- a/src/renderer/src/store/assistants.ts
+++ b/src/renderer/src/store/assistants.ts
@@ -1,10 +1,12 @@
-import { createSlice, PayloadAction } from '@reduxjs/toolkit'
+import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit'
import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant'
import { TopicManager } from '@renderer/hooks/useTopic'
import { getDefaultAssistant, getDefaultTopic } from '@renderer/services/AssistantService'
import { Assistant, AssistantSettings, Model, Topic } from '@renderer/types'
import { isEmpty, uniqBy } from 'lodash'
+import { RootState } from '.'
+
export interface AssistantsState {
defaultAssistant: Assistant
assistants: Assistant[]
@@ -194,4 +196,15 @@ export const {
updateTagCollapse
} = assistantsSlice.actions
+export const selectAllTopics = createSelector([(state: RootState) => state.assistants.assistants], (assistants) =>
+ assistants.flatMap((assistant: Assistant) => assistant.topics)
+)
+
+export const selectTopicsMap = createSelector([selectAllTopics], (topics) => {
+ return topics.reduce((map, topic) => {
+ map.set(topic.id, topic)
+ return map
+ }, new Map())
+})
+
export default assistantsSlice.reducer