@@ -141,15 +141,15 @@ export const MessageBar: React.FunctionComponent<MessageBarProps> = ({
141141 return lines > 2 ;
142142 } ;
143143
144- const setAutoWidth = ( field : HTMLTextAreaElement ) => {
144+ const setAutoWidth = React . useCallback ( ( field : HTMLTextAreaElement ) => {
145145 const parent = field . parentElement ;
146146 if ( parent ) {
147147 const grandparent = parent . parentElement ;
148148 if ( textIsLongerThan2Lines ( field ) && grandparent ) {
149149 grandparent . style . setProperty ( 'flex-basis' , `100%` ) ;
150150 }
151151 }
152- } ;
152+ } , [ ] ) ;
153153
154154 const handleNewLine = ( field : HTMLTextAreaElement ) => {
155155 const parent = field . parentElement ;
@@ -188,7 +188,7 @@ export const MessageBar: React.FunctionComponent<MessageBarProps> = ({
188188 return ( ) => {
189189 window . removeEventListener ( 'resize' , resetHeight ) ;
190190 } ;
191- } , [ ] ) ;
191+ } , [ setAutoWidth ] ) ;
192192
193193 React . useEffect ( ( ) => {
194194 const field = textareaRef . current ;
@@ -200,7 +200,7 @@ export const MessageBar: React.FunctionComponent<MessageBarProps> = ({
200200 setAutoWidth ( field ) ;
201201 }
202202 }
203- } , [ displayMode , message ] ) ;
203+ } , [ displayMode , message , setAutoWidth ] ) ;
204204
205205 React . useEffect ( ( ) => {
206206 const field = textareaRef . current ;
@@ -210,33 +210,37 @@ export const MessageBar: React.FunctionComponent<MessageBarProps> = ({
210210 }
211211 } , [ hasSentMessage ] ) ;
212212
213- const handleChange = React . useCallback ( ( event ) => {
214- onChange && onChange ( event , event . target . value ) ;
215- if ( textareaRef . current ) {
216- if ( event . target . value === '' ) {
217- setInitialLineHeight ( textareaRef . current ) ;
218- } else {
219- setAutoHeight ( textareaRef . current ) ;
213+ const handleChange = React . useCallback (
214+ ( event ) => {
215+ onChange && onChange ( event , event . target . value ) ;
216+ if ( textareaRef . current ) {
217+ if ( event . target . value === '' ) {
218+ setInitialLineHeight ( textareaRef . current ) ;
219+ } else {
220+ setAutoHeight ( textareaRef . current ) ;
221+ }
220222 }
221- }
222- setMessage ( event . target . value ) ;
223- } , [ ] ) ;
223+ setMessage ( event . target . value ) ;
224+ } ,
225+ [ onChange ]
226+ ) ;
224227
225228 // Handle sending message
226- const handleSend = React . useCallback ( ( ) => {
227- setMessage ( ( m ) => {
228- onSendMessage ( m ) ;
229+ const handleSend = React . useCallback (
230+ ( newMessage : string | number ) => {
231+ onSendMessage ( newMessage ) ;
229232 setHasSentMessage ( true ) ;
230- return '' ;
231- } ) ;
232- } , [ onSendMessage ] ) ;
233+ setMessage ( '' ) ;
234+ } ,
235+ [ onSendMessage ]
236+ ) ;
233237
234238 const handleKeyDown = React . useCallback (
235239 ( event : React . KeyboardEvent ) => {
236240 if ( event . key === 'Enter' && ! event . shiftKey ) {
237241 event . preventDefault ( ) ;
238242 if ( ! isSendButtonDisabled && ! hasStopButton ) {
239- handleSend ( ) ;
243+ handleSend ( message ) ;
240244 }
241245 }
242246 if ( event . key === 'Enter' && event . shiftKey ) {
@@ -245,7 +249,7 @@ export const MessageBar: React.FunctionComponent<MessageBarProps> = ({
245249 }
246250 }
247251 } ,
248- [ handleSend , isSendButtonDisabled , handleStopButton ]
252+ [ isSendButtonDisabled , hasStopButton , handleSend , message ]
249253 ) ;
250254
251255 const handleAttachMenuToggle = ( ) => {
@@ -301,7 +305,7 @@ export const MessageBar: React.FunctionComponent<MessageBarProps> = ({
301305 { ( alwayShowSendButton || message ) && (
302306 < SendButton
303307 value = { message }
304- onClick = { handleSend }
308+ onClick = { ( ) => handleSend ( message ) }
305309 isDisabled = { isSendButtonDisabled }
306310 tooltipContent = { buttonProps ?. send ?. tooltipContent }
307311 { ...buttonProps ?. send ?. props }
0 commit comments