From 242a4ae52fe228319e44b97d5a29f3fd54a59df2 Mon Sep 17 00:00:00 2001 From: yougotwill Date: Fri, 2 Aug 2024 11:50:50 +1000 Subject: [PATCH] feat: contact names starting with a number go into the unknown section --- .../choose-action/ContactsListWithBreaks.tsx | 21 +++++++++++++++++-- ts/state/selectors/search.ts | 9 ++++---- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/ts/components/leftpane/overlay/choose-action/ContactsListWithBreaks.tsx b/ts/components/leftpane/overlay/choose-action/ContactsListWithBreaks.tsx index e18c1d578..63bba6c16 100644 --- a/ts/components/leftpane/overlay/choose-action/ContactsListWithBreaks.tsx +++ b/ts/components/leftpane/overlay/choose-action/ContactsListWithBreaks.tsx @@ -95,15 +95,25 @@ const ContactListItemSection = () => { let currentChar = ''; // if the item is a string we consider it to be a break of that string const directContactsByNameWithBreaks: Array = []; + const directContactsStartingWithANumber: Array = []; directContactsByName.forEach(m => { - if (m.displayName && m.displayName[0].toLowerCase() !== currentChar) { + if ( + m.displayName && + m.displayName[0].toLowerCase() !== currentChar && + !m.displayName[0].match(/^[0-9]+$/) + ) { currentChar = m.displayName[0].toLowerCase(); directContactsByNameWithBreaks.push(currentChar.toUpperCase()); } else if (!m.displayName && currentChar !== unknownSection) { currentChar = unknownSection; directContactsByNameWithBreaks.push('#'); } - directContactsByNameWithBreaks.push(m); + + if (m.displayName && !!m.displayName[0].match(/^[0-9]+$/)) { + directContactsStartingWithANumber.push(m); + } else { + directContactsByNameWithBreaks.push(m); + } }); directContactsByNameWithBreaks.unshift({ @@ -111,6 +121,13 @@ const ContactListItemSection = () => { displayName: window.i18n('noteToSelf'), }); + if (directContactsStartingWithANumber.length) { + if (currentChar !== unknownSection) { + directContactsByNameWithBreaks.push('#'); + } + directContactsByNameWithBreaks.push(...directContactsStartingWithANumber); + } + const length = Number(directContactsByNameWithBreaks.length); return ( diff --git a/ts/state/selectors/search.ts b/ts/state/selectors/search.ts index e5c778421..57a71fde9 100644 --- a/ts/state/selectors/search.ts +++ b/ts/state/selectors/search.ts @@ -93,8 +93,8 @@ export const getSearchResultsList = createSelector([getSearchResults], searchSta m => m.displayName?.toLowerCase() ); - const idsWithNoDisplayNames = sortBy( - remove(idsWithNameAndType, m => !m.displayName), + const idsWithNoDisplayNamesOrStartingWithANumber = sortBy( + remove(idsWithNameAndType, m => !m.displayName || m.displayName[0].match(/^[0-9]+$/)), m => m.contactConvoId ); @@ -120,8 +120,9 @@ export const getSearchResultsList = createSelector([getSearchResults], searchSta builtList.unshift(...groupsAndCommunities); - if (idsWithNoDisplayNames.length) { - builtList.push('#', ...idsWithNoDisplayNames); + if (idsWithNoDisplayNamesOrStartingWithANumber.length) { + // builtList.push('#'); + builtList.push(...idsWithNoDisplayNamesOrStartingWithANumber); } if (usIndex !== -1) {