Skip to content

Commit 4b894ac

Browse files
committed
Sort and comment
1 parent e980c17 commit 4b894ac

1 file changed

Lines changed: 13 additions & 12 deletions

File tree

packages/component/src/Activity/private/FeedbackForm.tsx

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { hooks } from 'botframework-webchat-api';
22
import classNames from 'classnames';
3-
import React, { memo, useCallback, useEffect, useRef, useState } from 'react';
3+
import React, { memo, useCallback, useEffect, useRef, useState, type FormEventHandler } from 'react';
4+
import { useRefFrom } from 'use-ref-from';
45
import useStyleSet from '../../hooks/useStyleSet';
56
import testIds from '../../testIds';
67
import TextArea from './FeedbackTextArea';
@@ -20,31 +21,30 @@ function FeedbackForm({ feedbackType, disclaimer, onReset, replyToId }: Feedback
2021
const [userFeedback, setUserFeedback] = useState('');
2122
const feedbackTextAreaRef = useRef<HTMLTextAreaElement>(null);
2223
const localize = useLocalizer();
24+
const onResetRef = useRefFrom(onReset);
2325
const postActivity = usePostActivity();
2426

2527
const handleReset = useCallback(() => {
2628
setUserFeedback('');
2729

28-
onReset();
30+
onResetRef.current();
2931

3032
setHasFocused(false);
31-
}, [onReset, setHasFocused, setUserFeedback]);
33+
}, [onResetRef, setHasFocused, setUserFeedback]);
3234

3335
const handleSubmit = useCallback(
3436
event => {
3537
event.preventDefault();
3638

3739
postActivity({
38-
type: 'invoke',
3940
name: 'message/submitAction',
4041
replyToId,
42+
type: 'invoke',
4143
value: {
4244
actionName: 'feedback',
4345
actionValue: {
44-
reaction: feedbackType === 'LikeAction' ? 'like' : 'dislike',
45-
feedback: {
46-
feedbackText: userFeedback
47-
}
46+
feedback: { feedbackText: userFeedback },
47+
reaction: feedbackType === 'LikeAction' ? 'like' : 'dislike'
4848
}
4949
}
5050
} as any);
@@ -54,14 +54,15 @@ function FeedbackForm({ feedbackType, disclaimer, onReset, replyToId }: Feedback
5454
[feedbackType, handleReset, postActivity, replyToId, userFeedback]
5555
);
5656

57-
const handleChange: React.FormEventHandler<HTMLTextAreaElement> = useCallback(
58-
event => {
59-
setUserFeedback(event.currentTarget.value);
60-
},
57+
const handleChange: FormEventHandler<HTMLTextAreaElement> = useCallback(
58+
event => setUserFeedback(event.currentTarget.value),
6159
[setUserFeedback]
6260
);
6361

6462
useEffect(() => {
63+
// Will focus on the text area when:
64+
// 1. The component is mounted initially, or
65+
// 2. User clicked on the reset button
6566
if (feedbackTextAreaRef.current && !hasFocused) {
6667
setHasFocused(true);
6768
feedbackTextAreaRef.current.focus();

0 commit comments

Comments
 (0)