fix: #613 show all prompts when input /

This commit is contained in:
Yidadaa 2023-04-08 02:53:35 +08:00
parent 13035ecb0d
commit 637cda5b4c
4 changed files with 18 additions and 9 deletions

View File

@ -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);
}
}

View File

@ -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: "发送",
},

View File

@ -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",
},

View File

@ -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]) =>