From 446911bbbb1701f139c681b9e4c453c8a8195e69 Mon Sep 17 00:00:00 2001 From: Anjana Mendiratta Date: Sat, 22 Jul 2023 01:27:29 +0530 Subject: [PATCH 1/6] fix: avoid using alphabets for number search Signed-off-by: Anjana Mendiratta --- src/libs/OptionsListUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index 2acb1f51cbe7..05ef2fef1ab6 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -801,7 +801,7 @@ function getOptions( (noOptions || noOptionsMatchExactly) && !isCurrentUser({login: searchValue}) && _.every(selectedOptions, (option) => option.login !== searchValue) && - ((Str.isValidEmail(searchValue) && !Str.isDomainEmail(searchValue) && !Str.endsWith(searchValue, CONST.SMS.DOMAIN)) || parsedPhoneNumber.possible) && + ((Str.isValidEmail(searchValue) && !Str.isDomainEmail(searchValue) && !Str.endsWith(searchValue, CONST.SMS.DOMAIN)) || (parsedPhoneNumber.possible && Str.isValidPhone(parsedPhoneNumber.number.input))) && !_.find(loginOptionsToExclude, (loginOptionToExclude) => loginOptionToExclude.login === addSMSDomainIfPhoneNumber(searchValue).toLowerCase()) && (searchValue !== CONST.EMAIL.CHRONOS || Permissions.canUseChronos(betas)) ) { From c7a02e20a4603840951a21cc6a5ac0b0ca6effaa Mon Sep 17 00:00:00 2001 From: Anjana Mendiratta Date: Sun, 23 Jul 2023 10:01:14 +0530 Subject: [PATCH 2/6] chore: prettier Signed-off-by: Anjana Mendiratta --- src/libs/OptionsListUtils.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index 05ef2fef1ab6..9c9c546eae2f 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -801,7 +801,8 @@ function getOptions( (noOptions || noOptionsMatchExactly) && !isCurrentUser({login: searchValue}) && _.every(selectedOptions, (option) => option.login !== searchValue) && - ((Str.isValidEmail(searchValue) && !Str.isDomainEmail(searchValue) && !Str.endsWith(searchValue, CONST.SMS.DOMAIN)) || (parsedPhoneNumber.possible && Str.isValidPhone(parsedPhoneNumber.number.input))) && + ((Str.isValidEmail(searchValue) && !Str.isDomainEmail(searchValue) && !Str.endsWith(searchValue, CONST.SMS.DOMAIN)) || + (parsedPhoneNumber.possible && Str.isValidPhone(parsedPhoneNumber.number.input))) && !_.find(loginOptionsToExclude, (loginOptionToExclude) => loginOptionToExclude.login === addSMSDomainIfPhoneNumber(searchValue).toLowerCase()) && (searchValue !== CONST.EMAIL.CHRONOS || Permissions.canUseChronos(betas)) ) { From e845e87b055cf2aebc2d2789a5edede6b84284ab Mon Sep 17 00:00:00 2001 From: Anjana Mendiratta Date: Sun, 23 Jul 2023 12:47:11 +0530 Subject: [PATCH 3/6] fix: remove special characters before checking Signed-off-by: Anjana Mendiratta --- src/libs/OptionsListUtils.js | 2 +- tests/unit/OptionsListUtilsTest.js | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index 9c9c546eae2f..56bbd326795d 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -802,7 +802,7 @@ function getOptions( !isCurrentUser({login: searchValue}) && _.every(selectedOptions, (option) => option.login !== searchValue) && ((Str.isValidEmail(searchValue) && !Str.isDomainEmail(searchValue) && !Str.endsWith(searchValue, CONST.SMS.DOMAIN)) || - (parsedPhoneNumber.possible && Str.isValidPhone(parsedPhoneNumber.number.input))) && + (parsedPhoneNumber.possible && Str.isValidPhone(LoginUtils.getPhoneNumberWithoutSpecialChars(parsedPhoneNumber.number.input)))) && !_.find(loginOptionsToExclude, (loginOptionToExclude) => loginOptionToExclude.login === addSMSDomainIfPhoneNumber(searchValue).toLowerCase()) && (searchValue !== CONST.EMAIL.CHRONOS || Permissions.canUseChronos(betas)) ) { diff --git a/tests/unit/OptionsListUtilsTest.js b/tests/unit/OptionsListUtilsTest.js index 86592e6f1aaf..e860e6eb389b 100644 --- a/tests/unit/OptionsListUtilsTest.js +++ b/tests/unit/OptionsListUtilsTest.js @@ -522,6 +522,13 @@ describe('OptionsListUtils', () => { expect(results.userToInvite).not.toBe(null); expect(results.userToInvite.login).toBe('+18003243233'); + // When we use a search term for contact number, it shouldn't have any results if there are alphabets used + results = OptionsListUtils.getNewChatOptions(REPORTS, PERSONAL_DETAILS, [], '998243aaaa'); + + expect(results.recentReports.length).toBe(0); + expect(results.personalDetails.length).toBe(0); + expect(results.userToInvite).toBe(null); + // Test Concierge's existence in new group options results = OptionsListUtils.getNewChatOptions(REPORTS_WITH_CONCIERGE, PERSONAL_DETAILS_WITH_CONCIERGE); From fd9e449c41e2b2dbdfee3006ee5879e8e3f833af Mon Sep 17 00:00:00 2001 From: Anjana Mendiratta Date: Sun, 23 Jul 2023 19:14:37 +0530 Subject: [PATCH 4/6] chore: prettier Signed-off-by: Anjana Mendiratta --- tests/unit/OptionsListUtilsTest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/OptionsListUtilsTest.js b/tests/unit/OptionsListUtilsTest.js index e860e6eb389b..4800aa52dd30 100644 --- a/tests/unit/OptionsListUtilsTest.js +++ b/tests/unit/OptionsListUtilsTest.js @@ -527,7 +527,7 @@ describe('OptionsListUtils', () => { expect(results.recentReports.length).toBe(0); expect(results.personalDetails.length).toBe(0); - expect(results.userToInvite).toBe(null); + expect(results.userToInvite).toBe(null); // Test Concierge's existence in new group options results = OptionsListUtils.getNewChatOptions(REPORTS_WITH_CONCIERGE, PERSONAL_DETAILS_WITH_CONCIERGE); From 0edbb93b4c635b78ee58e42fca6248b5f11bd8d0 Mon Sep 17 00:00:00 2001 From: Anjana Mendiratta Date: Tue, 25 Jul 2023 00:03:49 +0530 Subject: [PATCH 5/6] chore: update comment Signed-off-by: Anjana Mendiratta --- tests/unit/OptionsListUtilsTest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/OptionsListUtilsTest.js b/tests/unit/OptionsListUtilsTest.js index 4800aa52dd30..8756c8bb7725 100644 --- a/tests/unit/OptionsListUtilsTest.js +++ b/tests/unit/OptionsListUtilsTest.js @@ -522,7 +522,7 @@ describe('OptionsListUtils', () => { expect(results.userToInvite).not.toBe(null); expect(results.userToInvite.login).toBe('+18003243233'); - // When we use a search term for contact number, it shouldn't have any results if there are alphabets used + // When we use a search term for contact number that contains alphabet characters results = OptionsListUtils.getNewChatOptions(REPORTS, PERSONAL_DETAILS, [], '998243aaaa'); expect(results.recentReports.length).toBe(0); From 0632292646640f81858bdf686471e96d207ef96d Mon Sep 17 00:00:00 2001 From: Anjana Mendiratta Date: Tue, 25 Jul 2023 00:32:21 +0530 Subject: [PATCH 6/6] chore: update comment again Signed-off-by: Anjana Mendiratta --- tests/unit/OptionsListUtilsTest.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/unit/OptionsListUtilsTest.js b/tests/unit/OptionsListUtilsTest.js index 8756c8bb7725..76ac7990d133 100644 --- a/tests/unit/OptionsListUtilsTest.js +++ b/tests/unit/OptionsListUtilsTest.js @@ -525,6 +525,7 @@ describe('OptionsListUtils', () => { // When we use a search term for contact number that contains alphabet characters results = OptionsListUtils.getNewChatOptions(REPORTS, PERSONAL_DETAILS, [], '998243aaaa'); + // Then we shouldn't have any results or user to invite expect(results.recentReports.length).toBe(0); expect(results.personalDetails.length).toBe(0); expect(results.userToInvite).toBe(null);