1
1
import "./tailwind.css" ;
2
2
3
3
import clsx from "clsx" ;
4
- import { useEffect , useRef , useState } from "react" ;
4
+ import { useCallback , useEffect , useRef , useState } from "react" ;
5
5
import { twMerge } from "tailwind-merge" ;
6
6
import PublishNew from "./icons/publish-new.svg" ;
7
7
import QuickStop from "./icons/quick-stop.svg" ;
@@ -109,7 +109,7 @@ export function Sender({
109
109
} , [ message , onMessageChange ] ) ;
110
110
111
111
const [ controller , setController ] = useState < AbortController | null > ( null ) ;
112
- const handleSend = ( ) => {
112
+ const handleSend = useCallback ( ( ) => {
113
113
if ( isSending ) {
114
114
setIsSending ( false ) ;
115
115
return controller ?. abort ( ) ;
@@ -133,13 +133,16 @@ export function Sender({
133
133
} else {
134
134
onSend ?.( newController ) ;
135
135
}
136
- } ;
137
- const handleKeyDown = ( event : React . KeyboardEvent < HTMLTextAreaElement > ) => {
138
- if ( event . key === "Enter" && ! event . shiftKey ) {
139
- event . preventDefault ( ) ;
140
- handleSend ( ) ;
141
- }
142
- } ;
136
+ } , [ isSending , message , onSend , controller , input ] ) ;
137
+ const handleKeyDown = useCallback (
138
+ ( event : React . KeyboardEvent < HTMLTextAreaElement > ) => {
139
+ if ( event . key === "Enter" && ! event . shiftKey ) {
140
+ event . preventDefault ( ) ;
141
+ handleSend ( ) ;
142
+ }
143
+ } ,
144
+ [ handleSend ] ,
145
+ ) ;
143
146
144
147
return (
145
148
< div
0 commit comments