From 191f498ab08ad69e9c4e44a2f817a5b9e24ef593 Mon Sep 17 00:00:00 2001 From: "Khanh P. Huynh" Date: Wed, 9 Aug 2023 16:38:06 +0700 Subject: [PATCH] Fix cannot search user when pressing space (#7486) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * - Update AT_METION_SEARCH_REGEX to allow to search user name with space, similar to mentioning user. - Convert search term to lowercase. * Update CHANNEL_MENTION_SEARCH_REGEX to allow to search channel name when typing space * Fix app crash when searching in channel only --------- Co-authored-by: Huỳnh Phương Khanh --- app/components/autocomplete/at_mention/at_mention.tsx | 2 +- app/constants/autocomplete.ts | 4 ++-- app/screens/home/search/results/post_results.tsx | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/components/autocomplete/at_mention/at_mention.tsx b/app/components/autocomplete/at_mention/at_mention.tsx index 206839c50..697c68b8a 100644 --- a/app/components/autocomplete/at_mention/at_mention.tsx +++ b/app/components/autocomplete/at_mention/at_mention.tsx @@ -42,7 +42,7 @@ const getMatchTermForAtMention = (() => { return (value: string, isSearch: boolean) => { if (value !== lastValue || isSearch !== lastIsSearch) { const regex = isSearch ? AT_MENTION_SEARCH_REGEX : AT_MENTION_REGEX; - let term = value; + let term = value.toLowerCase(); if (term.startsWith('from: @') || term.startsWith('from:@')) { term = term.replace('@', ''); } diff --git a/app/constants/autocomplete.ts b/app/constants/autocomplete.ts index 1a696ffec..d62a48d42 100644 --- a/app/constants/autocomplete.ts +++ b/app/constants/autocomplete.ts @@ -5,13 +5,13 @@ export const AT_MENTION_REGEX = /\B(@([^@\r\n]*))$/i; export const AT_MENTION_REGEX_GLOBAL = /\B(@([^@\r\n]*))/gi; -export const AT_MENTION_SEARCH_REGEX = /\bfrom:\s*(\S*)$/i; +export const AT_MENTION_SEARCH_REGEX = /\bfrom:\s*([^\r\n]*)$/i; export const CHANNEL_MENTION_REGEX = /\B(~([^~\r\n]*))$/i; export const CHANNEL_MENTION_REGEX_DELAYED = /\B(~([^~\r\n]{2,}))$/i; -export const CHANNEL_MENTION_SEARCH_REGEX = /\b(?:in|channel):\s*(\S*)$/i; +export const CHANNEL_MENTION_SEARCH_REGEX = /\b(?:in|channel):\s*([^\r\n]*)$/i; export const DATE_MENTION_SEARCH_REGEX = /\b(?:on|before|after):\s*(\S*)$/i; diff --git a/app/screens/home/search/results/post_results.tsx b/app/screens/home/search/results/post_results.tsx index a98125878..e61bf55ba 100644 --- a/app/screens/home/search/results/post_results.tsx +++ b/app/screens/home/search/results/post_results.tsx @@ -69,7 +69,7 @@ const PostResults = ({ const hasPhrases = (/"([^"]*)"/).test(searchValue || ''); let searchPatterns: SearchPattern[] | undefined; if (matches && !hasPhrases) { - searchPatterns = matches?.[key].map(convertSearchTermToRegex); + searchPatterns = matches?.[key]?.map(convertSearchTermToRegex); } else { searchPatterns = parseSearchTerms(searchValue).map(convertSearchTermToRegex).sort((a, b) => { return b.term.length - a.term.length;