Browse Source

fix: #613 show all prompts when input /

Yidadaa 1 year ago
parent
commit
637cda5b4c
4 changed files with 18 additions and 9 deletions
  1. 0 3
      app/components/chat.tsx
  2. 2 2
      app/locales/cn.ts
  3. 3 3
      app/locales/en.ts
  4. 13 1
      app/store/prompt.ts

+ 0 - 3
app/components/chat.tsx

@@ -417,9 +417,6 @@ export function Chat(props: {
       // check if need to trigger auto completion
       if (text.startsWith("/")) {
         let searchText = text.slice(1);
-        if (searchText.length === 0) {
-          searchText = " ";
-        }
         onSearch(searchText);
       }
     }

+ 2 - 2
app/locales/cn.ts

@@ -21,11 +21,11 @@ const cn = {
     Rename: "重命名对话",
     Typing: "正在输入…",
     Input: (submitKey: string) => {
-      var inputHints = `输入消息,${submitKey} 发送`;
+      var inputHints = `${submitKey} 发送`;
       if (submitKey === String(SubmitKey.Enter)) {
         inputHints += ",Shift + Enter 换行";
       }
-      return inputHints;
+      return inputHints + ",/ 触发补全";
     },
     Send: "发送",
   },

+ 3 - 3
app/locales/en.ts

@@ -23,11 +23,11 @@ const en: LocaleType = {
     Rename: "Rename Chat",
     Typing: "Typing…",
     Input: (submitKey: string) => {
-      var inputHints = `Type something and press ${submitKey} to send`;
+      var inputHints = `${submitKey} to send`;
       if (submitKey === String(SubmitKey.Enter)) {
-        inputHints += ", press Shift + Enter to newline";
+        inputHints += ", Shift + Enter to wrap";
       }
-      return inputHints;
+      return inputHints + ", / to search prompts";
     },
     Send: "Send",
   },

+ 13 - 1
app/store/prompt.ts

@@ -1,6 +1,7 @@
 import { create } from "zustand";
 import { persist } from "zustand/middleware";
 import Fuse from "fuse.js";
+import { getLang } from "../locales";
 
 export interface Prompt {
   id?: number;
@@ -25,11 +26,13 @@ export const SearchService = {
   count: {
     builtin: 0,
   },
+  allBuiltInPrompts: [] as Prompt[],
 
   init(prompts: Prompt[]) {
     if (this.ready) {
       return;
     }
+    this.allBuiltInPrompts = prompts;
     this.engine.setCollection(prompts);
     this.ready = true;
   },
@@ -78,6 +81,11 @@ export const usePromptStore = create<PromptStore>()(
       },
 
       search(text) {
+        if (text.length === 0) {
+          // return all prompts
+          const userPrompts = get().prompts?.values?.() ?? [];
+          return SearchService.allBuiltInPrompts.concat([...userPrompts]);
+        }
         return SearchService.search(text) as Prompt[];
       },
     }),
@@ -92,7 +100,11 @@ export const usePromptStore = create<PromptStore>()(
         fetch(PROMPT_URL)
           .then((res) => res.json())
           .then((res) => {
-            const builtinPrompts = [res.en, res.cn]
+            let fetchPrompts = [res.en, res.cn];
+            if (getLang() === "cn") {
+              fetchPrompts = fetchPrompts.reverse();
+            }
+            const builtinPrompts = fetchPrompts
               .map((promptList: PromptList) => {
                 return promptList.map(
                   ([title, content]) =>