From 45f2936deb67bdc6946cc2a60d94693af050f4e7 Mon Sep 17 00:00:00 2001 From: Pierre Michel Date: Fri, 15 Sep 2023 08:34:48 -0600 Subject: [PATCH 01/10] Only add the new emojis to the frequent emojis list by doing a difference between former and new emojis Signed-off-by: Pierre Michel --- src/libs/EmojiUtils.js | 24 +++++++++++------ .../ComposerWithSuggestions.js | 27 +++++++++---------- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/libs/EmojiUtils.js b/src/libs/EmojiUtils.js index 80665541e24b..31b8557b0603 100644 --- a/src/libs/EmojiUtils.js +++ b/src/libs/EmojiUtils.js @@ -278,17 +278,10 @@ function extractEmojis(text) { } const emojis = []; - - // Text can contain similar emojis as well as their skin tone variants. Create a Set to remove duplicate emojis from the search. - const foundEmojiCodes = new Set(); - for (let i = 0; i < parsedEmojis.length; i++) { const character = parsedEmojis[i]; const emoji = Emojis.emojiCodeTableWithSkinTones[character]; - - // Add the parsed emoji to the final emojis if not already present. - if (emoji && !foundEmojiCodes.has(emoji.code)) { - foundEmojiCodes.add(emoji.code); + if (emoji) { emojis.push(emoji); } } @@ -296,6 +289,19 @@ function extractEmojis(text) { return emojis; } +function getAddedEmojis(currentEmojis, formerEmojis){ + + let newEmojis = [...currentEmojis]; + // We are removing the emojis from the newEmojis array if they were already present before. + formerEmojis.forEach((formerEmoji) => { + const indexOfAlreadyPresentEmoji = newEmojis.findIndex(newEmoji => newEmoji.code == formerEmoji.code); + if(indexOfAlreadyPresentEmoji >= 0) { + newEmojis.splice(indexOfAlreadyPresentEmoji, 1); + } + }); + return newEmojis; +} + /** * Replace any emoji name in a text with the emoji icon. * If we're on mobile, we also add a space after the emoji granted there's no text after it. @@ -484,4 +490,6 @@ export { getPreferredEmojiCode, getUniqueEmojiCodes, replaceAndExtractEmojis, + extractEmojis, + getAddedEmojis, }; diff --git a/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js b/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js index 3b5b181d2fcb..aca3ce55dc9e 100644 --- a/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js +++ b/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js @@ -103,8 +103,14 @@ function ComposerWithSuggestions({ const {preferredLocale} = useLocalize(); const isFocused = useIsFocused(); const navigation = useNavigation(); - - const [value, setValue] = useState(() => getDraftComment(reportID) || ''); + var emojisPresentBefore = []; + const [value, setValue] = useState(() => { + const draft = getDraftComment(reportID) || ''; + if (draft) { + emojisPresentBefore = EmojiUtils.extractEmojis(draft); + } + return draft; + }); const commentRef = useRef(value); const {isSmallScreenWidth} = useWindowDimensions(); @@ -125,6 +131,7 @@ function ComposerWithSuggestions({ const textInputRef = useRef(null); const insertedEmojisRef = useRef([]); + /** * Update frequently used emojis list. We debounce this method in the constructor so that UpdateFrequentlyUsedEmojis @@ -135,14 +142,6 @@ function ComposerWithSuggestions({ insertedEmojisRef.current = []; }, []); - const onInsertedEmoji = useCallback( - (emojiObject) => { - insertedEmojisRef.current = [...insertedEmojisRef.current, emojiObject]; - debouncedUpdateFrequentlyUsedEmojis(emojiObject); - }, - [debouncedUpdateFrequentlyUsedEmojis], - ); - /** * Set the TextInput Ref * @@ -178,10 +177,12 @@ function ComposerWithSuggestions({ const {text: newComment, emojis} = EmojiUtils.replaceAndExtractEmojis(commentValue, preferredSkinTone, preferredLocale); if (!_.isEmpty(emojis)) { - insertedEmojisRef.current = [...insertedEmojisRef.current, ...emojis]; + const newEmojis = EmojiUtils.getAddedEmojis(emojis, emojisPresentBefore); + + insertedEmojisRef.current = [...insertedEmojisRef.current, ...newEmojis]; debouncedUpdateFrequentlyUsedEmojis(); } - + emojisPresentBefore = emojis; setIsCommentEmpty(!!newComment.match(/^(\s)*$/)); setValue(newComment); if (commentValue !== newComment) { @@ -439,7 +440,6 @@ function ComposerWithSuggestions({ return; } Report.setReportWithDraft(reportID, true); - // eslint-disable-next-line react-hooks/exhaustive-deps }, []); @@ -504,7 +504,6 @@ function ComposerWithSuggestions({ updateComment={updateComment} composerHeight={composerHeight} shouldShowReportRecipientLocalTime={shouldShowReportRecipientLocalTime} - onInsertedEmoji={onInsertedEmoji} measureParentContainer={measureParentContainer} // Input value={value} From b5e44b8aea7e2658f120504621101df6b5da512b Mon Sep 17 00:00:00 2001 From: Pierre Michel Date: Mon, 18 Sep 2023 09:21:42 -0600 Subject: [PATCH 02/10] Same thing in ReportActionItemMessageEdit Signed-off-by: Pierre Michel --- .../home/report/ReportActionItemMessageEdit.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/pages/home/report/ReportActionItemMessageEdit.js b/src/pages/home/report/ReportActionItemMessageEdit.js index fab54846ab14..99a2ac2ab743 100644 --- a/src/pages/home/report/ReportActionItemMessageEdit.js +++ b/src/pages/home/report/ReportActionItemMessageEdit.js @@ -115,8 +115,14 @@ function ReportActionItemMessageEdit(props) { const length = getInitialDraft().length; return {start: length, end: length}; }; - - const [draft, setDraft] = useState(() => getInitialDraft()); + var emojisPresentBefore = []; + const [draft, setDraft] = useState(() => { + const draft = getInitialDraft(); + if (draft) { + emojisPresentBefore = EmojiUtils.extractEmojis(draft); + } + return draft; + }); const [selection, setSelection] = useState(getInitialSelection()); const [isFocused, setIsFocused] = useState(false); const [hasExceededMaxCommentLength, setHasExceededMaxCommentLength] = useState(false); @@ -193,9 +199,11 @@ function ReportActionItemMessageEdit(props) { const {text: newDraft, emojis} = EmojiUtils.replaceAndExtractEmojis(newDraftInput, props.preferredSkinTone, props.preferredLocale); if (!_.isEmpty(emojis)) { - insertedEmojis.current = [...insertedEmojis.current, ...emojis]; + const newEmojis = EmojiUtils.getAddedEmojis(emojis, emojisPresentBefore); + insertedEmojis.current = [...insertedEmojis.current, ...newEmojis]; debouncedUpdateFrequentlyUsedEmojis(); } + emojisPresentBefore = emojis; setDraft((prevDraft) => { if (newDraftInput !== newDraft) { setSelection((prevSelection) => { From 597f67b498e6c5d4e589028b1e3f71b0bb207c3a Mon Sep 17 00:00:00 2001 From: Pierre Michel Date: Mon, 18 Sep 2023 09:39:05 -0600 Subject: [PATCH 03/10] Fix lint errors Signed-off-by: Pierre Michel --- src/libs/EmojiUtils.js | 4 ++-- .../ReportActionCompose/ComposerWithSuggestions.js | 6 +++--- src/pages/home/report/ReportActionItemMessageEdit.js | 12 ++++++------ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/libs/EmojiUtils.js b/src/libs/EmojiUtils.js index 31b8557b0603..77c524c8cb34 100644 --- a/src/libs/EmojiUtils.js +++ b/src/libs/EmojiUtils.js @@ -291,10 +291,10 @@ function extractEmojis(text) { function getAddedEmojis(currentEmojis, formerEmojis){ - let newEmojis = [...currentEmojis]; + const newEmojis = [...currentEmojis]; // We are removing the emojis from the newEmojis array if they were already present before. formerEmojis.forEach((formerEmoji) => { - const indexOfAlreadyPresentEmoji = newEmojis.findIndex(newEmoji => newEmoji.code == formerEmoji.code); + const indexOfAlreadyPresentEmoji = _.findIndex(newEmojis, newEmoji => newEmoji.code === formerEmoji.code); if(indexOfAlreadyPresentEmoji >= 0) { newEmojis.splice(indexOfAlreadyPresentEmoji, 1); } diff --git a/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js b/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js index aca3ce55dc9e..39940ed43b40 100644 --- a/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js +++ b/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js @@ -103,11 +103,11 @@ function ComposerWithSuggestions({ const {preferredLocale} = useLocalize(); const isFocused = useIsFocused(); const navigation = useNavigation(); - var emojisPresentBefore = []; + const emojisPresentBefore = useRef([]); const [value, setValue] = useState(() => { const draft = getDraftComment(reportID) || ''; if (draft) { - emojisPresentBefore = EmojiUtils.extractEmojis(draft); + emojisPresentBefore.current = EmojiUtils.extractEmojis(draft); } return draft; }); @@ -182,7 +182,7 @@ function ComposerWithSuggestions({ insertedEmojisRef.current = [...insertedEmojisRef.current, ...newEmojis]; debouncedUpdateFrequentlyUsedEmojis(); } - emojisPresentBefore = emojis; + emojisPresentBefore.current = emojis; setIsCommentEmpty(!!newComment.match(/^(\s)*$/)); setValue(newComment); if (commentValue !== newComment) { diff --git a/src/pages/home/report/ReportActionItemMessageEdit.js b/src/pages/home/report/ReportActionItemMessageEdit.js index 99a2ac2ab743..e7bdc9fd8f3e 100644 --- a/src/pages/home/report/ReportActionItemMessageEdit.js +++ b/src/pages/home/report/ReportActionItemMessageEdit.js @@ -115,13 +115,13 @@ function ReportActionItemMessageEdit(props) { const length = getInitialDraft().length; return {start: length, end: length}; }; - var emojisPresentBefore = []; + const emojisPresentBefore = useRef([]);; const [draft, setDraft] = useState(() => { - const draft = getInitialDraft(); - if (draft) { - emojisPresentBefore = EmojiUtils.extractEmojis(draft); + const initialDraft = getInitialDraft(); + if (initialDraft) { + emojisPresentBefore.current = EmojiUtils.extractEmojis(initialDraft); } - return draft; + return initialDraft; }); const [selection, setSelection] = useState(getInitialSelection()); const [isFocused, setIsFocused] = useState(false); @@ -203,7 +203,7 @@ function ReportActionItemMessageEdit(props) { insertedEmojis.current = [...insertedEmojis.current, ...newEmojis]; debouncedUpdateFrequentlyUsedEmojis(); } - emojisPresentBefore = emojis; + emojisPresentBefore.current = emojis; setDraft((prevDraft) => { if (newDraftInput !== newDraft) { setSelection((prevSelection) => { From 093300eeeeaac4ab728917589629c9e29143edd6 Mon Sep 17 00:00:00 2001 From: Pierre Michel Date: Mon, 18 Sep 2023 10:06:06 -0600 Subject: [PATCH 04/10] After npm run prettier Signed-off-by: Pierre Michel --- src/libs/EmojiUtils.js | 7 +++---- .../report/ReportActionCompose/ComposerWithSuggestions.js | 3 +-- src/pages/home/report/ReportActionItemMessageEdit.js | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/libs/EmojiUtils.js b/src/libs/EmojiUtils.js index 77c524c8cb34..9780dbd1f6ab 100644 --- a/src/libs/EmojiUtils.js +++ b/src/libs/EmojiUtils.js @@ -289,13 +289,12 @@ function extractEmojis(text) { return emojis; } -function getAddedEmojis(currentEmojis, formerEmojis){ - +function getAddedEmojis(currentEmojis, formerEmojis) { const newEmojis = [...currentEmojis]; // We are removing the emojis from the newEmojis array if they were already present before. formerEmojis.forEach((formerEmoji) => { - const indexOfAlreadyPresentEmoji = _.findIndex(newEmojis, newEmoji => newEmoji.code === formerEmoji.code); - if(indexOfAlreadyPresentEmoji >= 0) { + const indexOfAlreadyPresentEmoji = _.findIndex(newEmojis, (newEmoji) => newEmoji.code === formerEmoji.code); + if (indexOfAlreadyPresentEmoji >= 0) { newEmojis.splice(indexOfAlreadyPresentEmoji, 1); } }); diff --git a/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js b/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js index 39940ed43b40..c22a001d1124 100644 --- a/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js +++ b/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js @@ -131,7 +131,6 @@ function ComposerWithSuggestions({ const textInputRef = useRef(null); const insertedEmojisRef = useRef([]); - /** * Update frequently used emojis list. We debounce this method in the constructor so that UpdateFrequentlyUsedEmojis @@ -178,7 +177,7 @@ function ComposerWithSuggestions({ if (!_.isEmpty(emojis)) { const newEmojis = EmojiUtils.getAddedEmojis(emojis, emojisPresentBefore); - + insertedEmojisRef.current = [...insertedEmojisRef.current, ...newEmojis]; debouncedUpdateFrequentlyUsedEmojis(); } diff --git a/src/pages/home/report/ReportActionItemMessageEdit.js b/src/pages/home/report/ReportActionItemMessageEdit.js index e7bdc9fd8f3e..3a095189d8a6 100644 --- a/src/pages/home/report/ReportActionItemMessageEdit.js +++ b/src/pages/home/report/ReportActionItemMessageEdit.js @@ -115,7 +115,7 @@ function ReportActionItemMessageEdit(props) { const length = getInitialDraft().length; return {start: length, end: length}; }; - const emojisPresentBefore = useRef([]);; + const emojisPresentBefore = useRef([]); const [draft, setDraft] = useState(() => { const initialDraft = getInitialDraft(); if (initialDraft) { From fa0a82b0742ef129cc6c1b4e02d049559ca4db87 Mon Sep 17 00:00:00 2001 From: Pierre Michel Date: Mon, 18 Sep 2023 10:22:17 -0600 Subject: [PATCH 05/10] We must pass the array not the ref Signed-off-by: Pierre Michel --- .../home/report/ReportActionCompose/ComposerWithSuggestions.js | 2 +- src/pages/home/report/ReportActionItemMessageEdit.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js b/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js index c22a001d1124..05e6427f597f 100644 --- a/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js +++ b/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js @@ -176,7 +176,7 @@ function ComposerWithSuggestions({ const {text: newComment, emojis} = EmojiUtils.replaceAndExtractEmojis(commentValue, preferredSkinTone, preferredLocale); if (!_.isEmpty(emojis)) { - const newEmojis = EmojiUtils.getAddedEmojis(emojis, emojisPresentBefore); + const newEmojis = EmojiUtils.getAddedEmojis(emojis, emojisPresentBefore.current); insertedEmojisRef.current = [...insertedEmojisRef.current, ...newEmojis]; debouncedUpdateFrequentlyUsedEmojis(); diff --git a/src/pages/home/report/ReportActionItemMessageEdit.js b/src/pages/home/report/ReportActionItemMessageEdit.js index 3a095189d8a6..2e36000419b9 100644 --- a/src/pages/home/report/ReportActionItemMessageEdit.js +++ b/src/pages/home/report/ReportActionItemMessageEdit.js @@ -199,7 +199,7 @@ function ReportActionItemMessageEdit(props) { const {text: newDraft, emojis} = EmojiUtils.replaceAndExtractEmojis(newDraftInput, props.preferredSkinTone, props.preferredLocale); if (!_.isEmpty(emojis)) { - const newEmojis = EmojiUtils.getAddedEmojis(emojis, emojisPresentBefore); + const newEmojis = EmojiUtils.getAddedEmojis(emojis, emojisPresentBefore.current); insertedEmojis.current = [...insertedEmojis.current, ...newEmojis]; debouncedUpdateFrequentlyUsedEmojis(); } From c2b8837ee73124879ee46a667230872f2d960a30 Mon Sep 17 00:00:00 2001 From: Pierre Michel Date: Mon, 18 Sep 2023 10:45:25 -0600 Subject: [PATCH 06/10] Add JSdoc for the new method Signed-off-by: Pierre Michel --- src/libs/EmojiUtils.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/libs/EmojiUtils.js b/src/libs/EmojiUtils.js index 9780dbd1f6ab..752900349cef 100644 --- a/src/libs/EmojiUtils.js +++ b/src/libs/EmojiUtils.js @@ -289,6 +289,13 @@ function extractEmojis(text) { return emojis; } + +/** + * Take the current emojis and the former emojis and return the emojis that were added, if we add an already existing emoji, we also return it + * @param {Object[]} The array of current emojis + * @param {Object[]} The array of former emojis + * @returns {Object[]} The array of added emojis + */ function getAddedEmojis(currentEmojis, formerEmojis) { const newEmojis = [...currentEmojis]; // We are removing the emojis from the newEmojis array if they were already present before. From 0bc8fa63bf4ed21507ffda1c9a7770581d5c1c7a Mon Sep 17 00:00:00 2001 From: Pierre Michel Date: Mon, 18 Sep 2023 10:52:52 -0600 Subject: [PATCH 07/10] Adding param names for JS docs Signed-off-by: Pierre Michel --- src/libs/EmojiUtils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/EmojiUtils.js b/src/libs/EmojiUtils.js index 752900349cef..080cc36374fe 100644 --- a/src/libs/EmojiUtils.js +++ b/src/libs/EmojiUtils.js @@ -292,8 +292,8 @@ function extractEmojis(text) { /** * Take the current emojis and the former emojis and return the emojis that were added, if we add an already existing emoji, we also return it - * @param {Object[]} The array of current emojis - * @param {Object[]} The array of former emojis + * @param {Object[]} currentEmojis The array of current emojis + * @param {Object[]} formerEmojis The array of former emojis * @returns {Object[]} The array of added emojis */ function getAddedEmojis(currentEmojis, formerEmojis) { From 77a4d48799f0bb487c79eaa7ce4bb7971a9a6309 Mon Sep 17 00:00:00 2001 From: Pierre Michel Date: Wed, 20 Sep 2023 13:18:12 -0600 Subject: [PATCH 08/10] Removing onInsertedEmoji because it's not used anymore Signed-off-by: Pierre Michel --- src/libs/EmojiUtils.js | 3 +-- .../home/report/ReportActionCompose/SuggestionEmoji.js | 8 +------- src/pages/home/report/ReportActionCompose/Suggestions.js | 5 ----- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/src/libs/EmojiUtils.js b/src/libs/EmojiUtils.js index 080cc36374fe..60e3c629f196 100644 --- a/src/libs/EmojiUtils.js +++ b/src/libs/EmojiUtils.js @@ -289,12 +289,11 @@ function extractEmojis(text) { return emojis; } - /** * Take the current emojis and the former emojis and return the emojis that were added, if we add an already existing emoji, we also return it * @param {Object[]} currentEmojis The array of current emojis * @param {Object[]} formerEmojis The array of former emojis - * @returns {Object[]} The array of added emojis + * @returns {Object[]} The array of added emojis */ function getAddedEmojis(currentEmojis, formerEmojis) { const newEmojis = [...currentEmojis]; diff --git a/src/pages/home/report/ReportActionCompose/SuggestionEmoji.js b/src/pages/home/report/ReportActionCompose/SuggestionEmoji.js index 687570af12e6..384aeba44900 100644 --- a/src/pages/home/report/ReportActionCompose/SuggestionEmoji.js +++ b/src/pages/home/report/ReportActionCompose/SuggestionEmoji.js @@ -39,9 +39,6 @@ const propTypes = { /** Function to clear the input */ resetKeyboardInput: PropTypes.func.isRequired, - /** Callback when a emoji was inserted */ - onInsertedEmoji: PropTypes.func.isRequired, - /** The current selection */ selection: PropTypes.shape({ start: PropTypes.number.isRequired, @@ -68,7 +65,6 @@ function SuggestionEmoji({ isAutoSuggestionPickerLarge, forwardedRef, resetKeyboardInput, - onInsertedEmoji, measureParentContainer, }) { const [suggestionValues, setSuggestionValues] = useState(defaultSuggestionsValues); @@ -109,10 +105,8 @@ function SuggestionEmoji({ end: suggestionValues.colonIndex + emojiCode.length + CONST.SPACE_LENGTH, }); setSuggestionValues((prevState) => ({...prevState, suggestedEmojis: []})); - - onInsertedEmoji(emojiObject); }, - [onInsertedEmoji, preferredSkinTone, resetKeyboardInput, selection.end, setSelection, suggestionValues.colonIndex, suggestionValues.suggestedEmojis, updateComment, value], + [preferredSkinTone, resetKeyboardInput, selection.end, setSelection, suggestionValues.colonIndex, suggestionValues.suggestedEmojis, updateComment, value], ); /** diff --git a/src/pages/home/report/ReportActionCompose/Suggestions.js b/src/pages/home/report/ReportActionCompose/Suggestions.js index ed2ab9586d52..1ee9d00397ad 100644 --- a/src/pages/home/report/ReportActionCompose/Suggestions.js +++ b/src/pages/home/report/ReportActionCompose/Suggestions.js @@ -9,9 +9,6 @@ const propTypes = { /** A ref to this component */ forwardedRef: PropTypes.shape({current: PropTypes.shape({})}), - /** Callback when a emoji was inserted */ - onInsertedEmoji: PropTypes.func.isRequired, - /** Function to clear the input */ resetKeyboardInput: PropTypes.func.isRequired, @@ -38,7 +35,6 @@ function Suggestions({ composerHeight, shouldShowReportRecipientLocalTime, forwardedRef, - onInsertedEmoji, resetKeyboardInput, measureParentContainer, }) { @@ -117,7 +113,6 @@ function Suggestions({ // eslint-disable-next-line react/jsx-props-no-spreading {...baseProps} selection={selection} - onInsertedEmoji={onInsertedEmoji} resetKeyboardInput={resetKeyboardInput} /> Date: Wed, 20 Sep 2023 14:15:12 -0600 Subject: [PATCH 09/10] Only call updateFrequentlyUsedEmojis when we add emojis Signed-off-by: Pierre Michel --- .../EmojiPicker/EmojiPickerMenu/index.js | 14 ++------------ .../EmojiPicker/EmojiPickerMenu/index.native.js | 12 +----------- .../ReportActionCompose/ComposerWithSuggestions.js | 7 ++++--- .../home/report/ReportActionItemMessageEdit.js | 6 ++++-- 4 files changed, 11 insertions(+), 28 deletions(-) diff --git a/src/components/EmojiPicker/EmojiPickerMenu/index.js b/src/components/EmojiPicker/EmojiPickerMenu/index.js index 27fd199a3895..c70fcdd3271f 100755 --- a/src/components/EmojiPicker/EmojiPickerMenu/index.js +++ b/src/components/EmojiPicker/EmojiPickerMenu/index.js @@ -190,7 +190,7 @@ class EmojiPickerMenu extends Component { return; } const emoji = lodashGet(item, ['types', this.props.preferredSkinTone], item.code); - this.addToFrequentAndSelectEmoji(emoji, item); + this.props.onEmojiSelected(emoji, item); return; } @@ -253,16 +253,6 @@ class EmojiPickerMenu extends Component { document.removeEventListener('mousemove', this.mouseMoveHandler); } - /** - * @param {String} emoji - * @param {Object} emojiObject - */ - addToFrequentAndSelectEmoji(emoji, emojiObject) { - const frequentEmojiList = EmojiUtils.getFrequentlyUsedEmojis(emojiObject); - User.updateFrequentlyUsedEmojis(frequentEmojiList); - this.props.onEmojiSelected(emoji, emojiObject); - } - /** * Focuses the search Input and has the text selected */ @@ -461,7 +451,7 @@ class EmojiPickerMenu extends Component { return ( this.addToFrequentAndSelectEmoji(emoji, item)} + onPress={(emoji) => this.props.onEmojiSelected(emoji, item)} onHoverIn={() => this.setState({highlightedIndex: index, isUsingKeyboardMovement: false})} onHoverOut={() => { if (this.state.arePointerEventsDisabled) { diff --git a/src/components/EmojiPicker/EmojiPickerMenu/index.native.js b/src/components/EmojiPicker/EmojiPickerMenu/index.native.js index 5cd956dae56b..9fd9692aabd9 100644 --- a/src/components/EmojiPicker/EmojiPickerMenu/index.native.js +++ b/src/components/EmojiPicker/EmojiPickerMenu/index.native.js @@ -90,16 +90,6 @@ function EmojiPickerMenu({preferredLocale, onEmojiSelected, preferredSkinTone, t setHeaderIndices(undefined); }, 300); - /** - * @param {String} emoji - * @param {Object} emojiObject - */ - const addToFrequentAndSelectEmoji = (emoji, emojiObject) => { - const frequentEmojiList = EmojiUtils.getFrequentlyUsedEmojis(emojiObject); - User.updateFrequentlyUsedEmojis(frequentEmojiList); - onEmojiSelected(emoji, emojiObject); - }; - /** * @param {Number} skinTone */ @@ -156,7 +146,7 @@ function EmojiPickerMenu({preferredLocale, onEmojiSelected, preferredSkinTone, t return ( addToFrequentAndSelectEmoji(emoji, item))} + onPress={singleExecution((emoji) => onEmojiSelected(emoji, item))} emoji={emojiCode} /> ); diff --git a/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js b/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js index b86e3679acde..751d614283c3 100644 --- a/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js +++ b/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js @@ -177,9 +177,10 @@ function ComposerWithSuggestions({ if (!_.isEmpty(emojis)) { const newEmojis = EmojiUtils.getAddedEmojis(emojis, emojisPresentBefore.current); - - insertedEmojisRef.current = [...insertedEmojisRef.current, ...newEmojis]; - debouncedUpdateFrequentlyUsedEmojis(); + if (!_.isEmpty(newEmojis)) { + insertedEmojisRef.current = [...insertedEmojisRef.current, ...newEmojis]; + debouncedUpdateFrequentlyUsedEmojis(); + } } emojisPresentBefore.current = emojis; setIsCommentEmpty(!!newComment.match(/^(\s)*$/)); diff --git a/src/pages/home/report/ReportActionItemMessageEdit.js b/src/pages/home/report/ReportActionItemMessageEdit.js index 812d9a950ecf..a418e8aedd93 100644 --- a/src/pages/home/report/ReportActionItemMessageEdit.js +++ b/src/pages/home/report/ReportActionItemMessageEdit.js @@ -210,8 +210,10 @@ function ReportActionItemMessageEdit(props) { if (!_.isEmpty(emojis)) { const newEmojis = EmojiUtils.getAddedEmojis(emojis, emojisPresentBefore.current); - insertedEmojis.current = [...insertedEmojis.current, ...newEmojis]; - debouncedUpdateFrequentlyUsedEmojis(); + if (!_.isEmpty(newEmojis)) { + insertedEmojis.current = [...insertedEmojis.current, ...newEmojis]; + debouncedUpdateFrequentlyUsedEmojis(); + } } emojisPresentBefore.current = emojis; setDraft((prevDraft) => { From f9c43fc9f0580b467246f0dd3e76ffae0f43ce0f Mon Sep 17 00:00:00 2001 From: Pierre Michel Date: Wed, 4 Oct 2023 13:26:40 -0600 Subject: [PATCH 10/10] After npm run prettier Signed-off-by: Pierre Michel --- .../home/report/ReportActionCompose/Suggestions.js | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/pages/home/report/ReportActionCompose/Suggestions.js b/src/pages/home/report/ReportActionCompose/Suggestions.js index d50187f55c8e..0e98e69d31d1 100644 --- a/src/pages/home/report/ReportActionCompose/Suggestions.js +++ b/src/pages/home/report/ReportActionCompose/Suggestions.js @@ -25,18 +25,7 @@ const defaultProps = { * * @returns {React.Component} */ -function Suggestions({ - isComposerFullSize, - value, - setValue, - selection, - setSelection, - updateComment, - composerHeight, - forwardedRef, - resetKeyboardInput, - measureParentContainer, -}) { +function Suggestions({isComposerFullSize, value, setValue, selection, setSelection, updateComment, composerHeight, forwardedRef, resetKeyboardInput, measureParentContainer}) { const suggestionEmojiRef = useRef(null); const suggestionMentionRef = useRef(null);