From 07b350cf34d2736255fa9a6e7d26114e8e19498d Mon Sep 17 00:00:00 2001 From: Jack Senyitko Date: Tue, 17 Mar 2026 10:16:41 -0400 Subject: [PATCH 1/3] composer --- src/components/Composer/implementation/index.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/Composer/implementation/index.tsx b/src/components/Composer/implementation/index.tsx index 653b78a84bd83..013b3911092d8 100755 --- a/src/components/Composer/implementation/index.tsx +++ b/src/components/Composer/implementation/index.tsx @@ -53,7 +53,10 @@ function Composer({ ref, ...props }: ComposerProps) { - const textContainsOnlyEmojis = useMemo(() => containsOnlyEmojis(Parser.htmlToText(Parser.replace(value ?? ''))), [value]); + const textContainsOnlyEmojis = useMemo(() => { + return containsOnlyEmojis(Parser.htmlToText(Parser.replace(value ?? ''))); + }, [value]); + const theme = useTheme(); const styles = useThemeStyles(); const session = useSession(); From 22c61185604bcfcbf1ccb2b7b08f15f1bc62c12b Mon Sep 17 00:00:00 2001 From: Jack Senyitko Date: Tue, 17 Mar 2026 10:18:11 -0400 Subject: [PATCH 2/3] dont parse text where its not needed --- src/components/Composer/implementation/index.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/Composer/implementation/index.tsx b/src/components/Composer/implementation/index.tsx index 013b3911092d8..958d4d52e0433 100755 --- a/src/components/Composer/implementation/index.tsx +++ b/src/components/Composer/implementation/index.tsx @@ -54,6 +54,9 @@ function Composer({ ...props }: ComposerProps) { const textContainsOnlyEmojis = useMemo(() => { + if (!value) { + return false; + } return containsOnlyEmojis(Parser.htmlToText(Parser.replace(value ?? ''))); }, [value]); From 4b89dba4307e6bca9d0cce20ee4f4c17f12475d0 Mon Sep 17 00:00:00 2001 From: Jack Senyitko Date: Tue, 17 Mar 2026 10:36:05 -0400 Subject: [PATCH 3/3] add logic to containsOnlyEmojis as well --- src/components/Composer/implementation/index.tsx | 2 +- src/libs/EmojiUtils.tsx | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/Composer/implementation/index.tsx b/src/components/Composer/implementation/index.tsx index 958d4d52e0433..8be8329b3d602 100755 --- a/src/components/Composer/implementation/index.tsx +++ b/src/components/Composer/implementation/index.tsx @@ -57,7 +57,7 @@ function Composer({ if (!value) { return false; } - return containsOnlyEmojis(Parser.htmlToText(Parser.replace(value ?? ''))); + return containsOnlyEmojis(Parser.htmlToText(Parser.replace(value))); }, [value]); const theme = useTheme(); diff --git a/src/libs/EmojiUtils.tsx b/src/libs/EmojiUtils.tsx index 8c17bd8279b0e..daa7f099cb3d0 100644 --- a/src/libs/EmojiUtils.tsx +++ b/src/libs/EmojiUtils.tsx @@ -220,6 +220,10 @@ function isFirstLetterEmoji(message: string): boolean { * Validates that this message contains only emojis */ function containsOnlyEmojis(message: string): boolean { + if (!message) { + return false; + } + const trimmedMessage = Str.replaceAll(message.replaceAll(' ', ''), '\n', ''); const match = trimmedMessage.match(CONST.REGEX.ALL_EMOJIS);