aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx')
-rw-r--r--src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx32
1 files changed, 17 insertions, 15 deletions
diff --git a/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx b/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx
index f84a4cd2a..acf6870c3 100644
--- a/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx
+++ b/src/client/views/nodes/chatbot/chatboxcomponents/ChatBox.tsx
@@ -111,13 +111,11 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
super(props);
makeObservable(this);
- // At mount time, find the DocumentView whose .Document is the collection container.
- const parentView = DocumentView.Selected().lastElement();
- if (!parentView) {
- console.warn("GPT ChatBox not inside a DocumentView – cannot sort.");
- }
-
-
+ // At mount time, find the DocumentView whose .Document is the collection container.
+ const parentView = DocumentView.Selected().lastElement();
+ if (!parentView) {
+ console.warn('GPT ChatBox not inside a DocumentView – cannot sort.');
+ }
this.messagesRef = React.createRef();
this.docManager = new AgentDocumentManager(this, parentView);
@@ -162,7 +160,7 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
}
);
- /*
+ /*
reaction(
() => ({ selDoc: DocumentView.Selected().lastElement(), visible: SnappingManager.ChatVisible }),
({ selDoc, visible }) => {
@@ -376,15 +374,19 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
@action
askGPT = async (event: React.FormEvent): Promise<void> => {
event.preventDefault();
+ if (!this._textInputRef) {
+ console.log('ERROR: text input ref is undefined');
+ return;
+ }
this._inputValue = '';
// Extract the user's message
- const textInput = (event.currentTarget as HTMLFormElement).elements.namedItem('messageInput') as HTMLInputElement;
- const trimmedText = textInput.value.trim();
+ const textInput = this._textInputRef?.value ?? '';
+ const trimmedText = textInput.trim();
if (trimmedText) {
+ this._textInputRef.value = ''; // Clear the input field
try {
- textInput.value = '';
// Add the user's message to the history
this._history.push({
role: ASSISTANT_ROLE.USER,
@@ -511,7 +513,7 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
@action
public whichDoc = (doc: parsedDoc, insideCol: boolean): Opt<Doc> => {
- const options = OmitKeys(doc, ['doct_type', 'data']).omit as DocumentOptions;
+ const options = OmitKeys(doc, ['doc_type', 'data']).omit as DocumentOptions;
const data = (doc as parsedDocData).data;
const ndoc = (() => {
switch (doc.doc_type) {
@@ -1475,20 +1477,20 @@ export class ChatBox extends ViewBoxAnnotatableComponent<FieldViewProps>() {
<form onSubmit={this.askGPT} className="chat-input">
<div className="input-container">
- <input
+ <input //
ref={this.setInputRef}
type="text"
name="messageInput"
autoComplete="off"
placeholder="Type your message here..."
value={this._inputValue}
- onChange={action(e => (this._inputValue = e.target.value))}
+ onChange={e => this.setChatInput(e.target.value)}
disabled={this._isLoading}
/>
</div>
<Button
// className="submit-button"
- onClick={() => this._dictation?.stopDictation()}
+ onClick={this.askGPT}
type={Type.PRIM}
tooltip="Send to AI"
color={SnappingManager.userVariantColor}