From 755df4dbba1bd7bbf697ebf407fe4ebeba646bc4 Mon Sep 17 00:00:00 2001
From: Timothy Carambat <rambat1010@gmail.com>
Date: Mon, 19 Feb 2024 10:32:53 -0800
Subject: [PATCH] auto highlight slash command on typing (#743)

---
 .../ChatWindow/ChatContainer/PromptInput/index.jsx |  1 -
 .../components/ChatWindow/ChatContainer/index.jsx  |  1 -
 .../ChatContainer/PromptInput/index.jsx            | 14 +++++++++++++-
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/embed/src/components/ChatWindow/ChatContainer/PromptInput/index.jsx b/embed/src/components/ChatWindow/ChatContainer/PromptInput/index.jsx
index 5231b0f54..feddbc0d8 100644
--- a/embed/src/components/ChatWindow/ChatContainer/PromptInput/index.jsx
+++ b/embed/src/components/ChatWindow/ChatContainer/PromptInput/index.jsx
@@ -2,7 +2,6 @@ import { CircleNotch, PaperPlaneRight } from "@phosphor-icons/react";
 import React, { useState, useRef } from "react";
 
 export default function PromptInput({
-  setttings,
   message,
   submit,
   onChange,
diff --git a/embed/src/components/ChatWindow/ChatContainer/index.jsx b/embed/src/components/ChatWindow/ChatContainer/index.jsx
index 9c1ffa362..505142de0 100644
--- a/embed/src/components/ChatWindow/ChatContainer/index.jsx
+++ b/embed/src/components/ChatWindow/ChatContainer/index.jsx
@@ -79,7 +79,6 @@ export default function ChatContainer({
     <div className="h-full w-full relative">
       <ChatHistory settings={settings} history={chatHistory} />
       <PromptInput
-        settings={settings}
         message={message}
         submit={handleSubmit}
         onChange={handleMessageChange}
diff --git a/frontend/src/components/WorkspaceChat/ChatContainer/PromptInput/index.jsx b/frontend/src/components/WorkspaceChat/ChatContainer/PromptInput/index.jsx
index 45193df57..2b9c5ca4f 100644
--- a/frontend/src/components/WorkspaceChat/ChatContainer/PromptInput/index.jsx
+++ b/frontend/src/components/WorkspaceChat/ChatContainer/PromptInput/index.jsx
@@ -5,6 +5,7 @@ import SlashCommandsButton, {
   useSlashCommands,
 } from "./SlashCommands";
 import { isMobile } from "react-device-detect";
+import debounce from "lodash.debounce";
 
 export default function PromptInput({
   workspace,
@@ -24,6 +25,13 @@ export default function PromptInput({
     submit(e);
   };
 
+  const checkForSlash = (e) => {
+    const input = e.target.value;
+    if (input === "/") setShowSlashCommand(true);
+    if (showSlashCommand) setShowSlashCommand(false);
+    return;
+  };
+
   const captureEnter = (event) => {
     if (event.keyCode == 13) {
       if (!event.shiftKey) {
@@ -42,6 +50,7 @@ export default function PromptInput({
         : "1px";
   };
 
+  const watchForSlash = debounce(checkForSlash, 300);
   return (
     <div className="w-full fixed md:absolute bottom-0 left-0 z-10 md:z-0 flex justify-center items-center">
       <SlashCommands
@@ -59,7 +68,10 @@ export default function PromptInput({
               <textarea
                 onKeyUp={adjustTextArea}
                 onKeyDown={captureEnter}
-                onChange={onChange}
+                onChange={(e) => {
+                  onChange(e);
+                  watchForSlash(e);
+                }}
                 required={true}
                 disabled={inputDisabled}
                 onFocus={() => setFocused(true)}
-- 
GitLab