diff --git a/src/locale/en-us.js b/src/locale/en-us.js index 66dfc1b..27dcb80 100644 --- a/src/locale/en-us.js +++ b/src/locale/en-us.js @@ -98,6 +98,7 @@ const mEnUS = { SyncMessageFailed: 'Sync Message Failed', DecryptMessageLogFailed: 'Failed to decrypt historical conversations. Please check your encrypt key.', ReasoningContent: 'Reasoning Content', + PleaseInputHistoryKeyword: 'Search Keyword', }; export default mEnUS; diff --git a/src/locale/zh-cn.js b/src/locale/zh-cn.js index 54193a4..0d0a57b 100644 --- a/src/locale/zh-cn.js +++ b/src/locale/zh-cn.js @@ -98,6 +98,7 @@ const mZhCN = { SyncMessageFailed: '同步历史会话失败,请关注', DecryptMessageLogFailed: '解密历史会话失败,请检查加密密钥', ReasoningContent: '思考过程', + PleaseInputHistoryKeyword: '请输入关键字以搜索历史记录', }; export default mZhCN; diff --git a/src/views/Chat.vue b/src/views/Chat.vue index 518926f..e11e752 100644 --- a/src/views/Chat.vue +++ b/src/views/Chat.vue @@ -15,6 +15,7 @@ import {useI18n} from 'vue-i18n'; const i18n = useI18n(); // message +const historySearchKey = ref(''); const oldLocalMessageKey = 'local-message'; const localMessages = ref([]); const currentMessageID = ref(''); @@ -23,15 +24,22 @@ const messageIDPrefix = 'local-message-'; const localMessageStore = ref({}); const localMessageStoreKey = 'local-message-store'; const sortedMessageStore = computed(() => { - return Object.entries(localMessageStore.value) + const filteredEntries = Object.entries(localMessageStore.value) .sort(([, a], [, b]) => b.created_at - a.created_at) - .reduce( - (acc, [key, value]) => { - acc[key] = value; - return acc; - }, - {}, - ); + .filter(([, value]) => { + const content = localStorage.getItem(`${messageIDPrefix}${value.created_at}`); + if (!content) { + return false; + } + return content.includes(historySearchKey.value); + }); + return filteredEntries.reduce( + (acc, [key, value]) => { + acc[key] = value; + return acc; + }, + {}, + ); }); const addMessage = (message) => { localMessages.value.push(message); @@ -363,6 +371,11 @@ const setPromptForm = (data) => promptForm.value = data; + promptForm.value = data; .sync-history-config-button-box > :deep(.arco-space-item) > button{ width: 100%; } + +.history-search-input { + border-radius: var(--border-radius-large); +} + +.history-search-input :deep(.arco-input) { + text-align: center; +}