Переглянути джерело

Merge pull request #5468 from DDMeaqua/feat-shortcutkey

feat: #5422 快捷键清除上下文
RiverRay 11 місяців тому
батько
коміт
0af04e0f2f
4 змінених файлів з 29 додано та 4 видалено
  1. 26 4
      app/components/chat.tsx
  2. 1 0
      app/locales/cn.ts
  3. 1 0
      app/locales/en.ts
  4. 1 0
      app/locales/tw.ts

+ 26 - 4
app/components/chat.tsx

@@ -900,6 +900,12 @@ export function ShortcutKeyModal(props: { onClose: () => void }) {
       title: Locale.Chat.ShortcutKey.showShortcutKey,
       keys: isMac ? ["⌘", "/"] : ["Ctrl", "/"],
     },
+    {
+      title: Locale.Chat.ShortcutKey.clearContext,
+      keys: isMac
+        ? ["⌘", "Shift", "backspace"]
+        : ["Ctrl", "Shift", "backspace"],
+    },
   ];
   return (
     <div className="modal-mask">
@@ -1552,7 +1558,7 @@ function _Chat() {
   const [showShortcutKeyModal, setShowShortcutKeyModal] = useState(false);
 
   useEffect(() => {
-    const handleKeyDown = (event: any) => {
+    const handleKeyDown = (event: KeyboardEvent) => {
       // 打开新聊天 command + shift + o
       if (
         (event.metaKey || event.ctrlKey) &&
@@ -1603,14 +1609,30 @@ function _Chat() {
         event.preventDefault();
         setShowShortcutKeyModal(true);
       }
+      // 清除上下文 command + shift + backspace
+      else if (
+        (event.metaKey || event.ctrlKey) &&
+        event.shiftKey &&
+        event.key.toLowerCase() === "backspace"
+      ) {
+        event.preventDefault();
+        chatStore.updateTargetSession(session, (session) => {
+          if (session.clearContextIndex === session.messages.length) {
+            session.clearContextIndex = undefined;
+          } else {
+            session.clearContextIndex = session.messages.length;
+            session.memoryPrompt = ""; // will clear memory
+          }
+        });
+      }
     };
 
-    window.addEventListener("keydown", handleKeyDown);
+    document.addEventListener("keydown", handleKeyDown);
 
     return () => {
-      window.removeEventListener("keydown", handleKeyDown);
+      document.removeEventListener("keydown", handleKeyDown);
     };
-  }, [messages, chatStore, navigate]);
+  }, [messages, chatStore, navigate, session]);
 
   const [showChatSidePanel, setShowChatSidePanel] = useState(false);
 

+ 1 - 0
app/locales/cn.ts

@@ -106,6 +106,7 @@ const cn = {
       copyLastMessage: "复制最后一个回复",
       copyLastCode: "复制最后一个代码块",
       showShortcutKey: "显示快捷方式",
+      clearContext: "清除上下文",
     },
   },
   Export: {

+ 1 - 0
app/locales/en.ts

@@ -107,6 +107,7 @@ const en: LocaleType = {
       copyLastMessage: "Copy Last Reply",
       copyLastCode: "Copy Last Code Block",
       showShortcutKey: "Show Shortcuts",
+      clearContext: "Clear Context",
     },
   },
   Export: {

+ 1 - 0
app/locales/tw.ts

@@ -100,6 +100,7 @@ const tw = {
       copyLastMessage: "複製最後一個回覆",
       copyLastCode: "複製最後一個程式碼區塊",
       showShortcutKey: "顯示快捷方式",
+      clearContext: "清除上下文",
     },
   },
   Export: {