Skip to content

Commit

Permalink
renamings
Browse files Browse the repository at this point in the history
  • Loading branch information
hannojg committed Sep 25, 2024
1 parent f4812c0 commit de0b467
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 35 deletions.
36 changes: 18 additions & 18 deletions src/libs/SuffixUkkonenTree.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ function stringToArray(input: string) {

type PrepareDataParams<T> = {
data: T[];
transform: (data: T) => string;
toSearchableString: (data: T) => string;
};

function cleanedString(input: string) {
Expand All @@ -63,12 +63,12 @@ function cleanedString(input: string) {

// TODO: remove timeSpendCleaning once verified the regex works okay on hermes as well!
let timeSpendCleaning = 0;
function prepareData<T>({data, transform}: PrepareDataParams<T>): [number[], Array<T | undefined>] {
function prepareData<T>({data, toSearchableString}: PrepareDataParams<T>): [number[], Array<T | undefined>] {
const searchIndexList: Array<T | undefined> = [];
const allDataAsNumbers: number[] = [];
timeSpendCleaning = 0;
data.forEach((option, index) => {
const searchStringForTree = transform(option);
const searchStringForTree = toSearchableString(option);
// Remove all none a-z chars:
const start = performance.now();
const cleanedSearchStringForTree = cleanedString(searchStringForTree);
Expand Down Expand Up @@ -106,8 +106,8 @@ function makeTree<T>(lists: Array<PrepareDataParams<T>>) {
// thus indexes is a list of those data lists
const indexesForList: Array<Array<T | undefined>> = [];

for (const {data, transform} of lists) {
const [numericRepresentation, searchIndexList] = prepareData({data, transform});
for (const {data, toSearchableString: transform} of lists) {
const [numericRepresentation, searchIndexList] = prepareData({data, toSearchableString: transform});
for (const num of numericRepresentation) {
// we have to use a loop here as push with spread yields a maximum call stack exceeded error
listsAsConcatedNumericList.push(num);
Expand Down Expand Up @@ -148,7 +148,7 @@ function makeTree<T>(lists: Array<PrepareDataParams<T>>) {
return rEdge;
}

function processCharacter(c: number) {
function processCharacter(char: number) {
while (true) {

Check warning on line 152 in src/libs/SuffixUkkonenTree.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Unexpected constant condition

Check warning on line 152 in src/libs/SuffixUkkonenTree.ts

View workflow job for this annotation

GitHub Actions / ESLint check

Unexpected constant condition
const rEdge = getOrCreateREdge(currentNode);
if (rEdge < currentPosition) {
Expand All @@ -159,22 +159,22 @@ function makeTree<T>(lists: Array<PrepareDataParams<T>>) {
transitionNodes[currentNode] = curNode;
}

if (curNode[c] === -1) {
createNewLeaf(c);
if (curNode[char] === -1) {
createNewLeaf(char);
continue;
}
currentNode = curNode[c];
currentNode = curNode[char];
currentPosition = leftEdges[currentNode];
}
if (currentPosition === -1 || c === listsAsConcatedNumericList[currentPosition]) {
if (currentPosition === -1 || char === listsAsConcatedNumericList[currentPosition]) {
currentPosition++;
} else {
splitEdge(c);
splitEdge(char);
continue;
}
break;
}
if (c === DELIMITER_CHAR_CODE) {
if (char === DELIMITER_CHAR_CODE) {
resetTreeTraversal();
}
}
Expand Down Expand Up @@ -300,9 +300,9 @@ function makeTree<T>(lists: Array<PrepareDataParams<T>>) {
// }

// TODO: replace, other search function is broken in edge cases we need to address first
function findSubstring(sString: string) {
const s = stringToArray(sString);
console.log('searching for', sString, s);
function findSubstring(value: string) {
const searchValueNumeric = stringToArray(value);
console.log('searching for', value, searchValueNumeric);

Check failure on line 305 in src/libs/SuffixUkkonenTree.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Unexpected console statement

Check failure on line 305 in src/libs/SuffixUkkonenTree.ts

View workflow job for this annotation

GitHub Actions / ESLint check

Unexpected console statement
const occurrences: number[] = [];
const st: Array<[number, number]> = [[0, 0]];

Expand All @@ -315,8 +315,8 @@ function makeTree<T>(lists: Array<PrepareDataParams<T>>) {
const rangeLen = node === 0 ? 0 : rightRange - leftRange + 1;

let matches = true;
for (let i = 0; i < rangeLen && depth + i < s.length; i++) {
if (s[depth + i] !== listsAsConcatedNumericList[leftRange + i]) {
for (let i = 0; i < rangeLen && depth + i < searchValueNumeric.length; i++) {
if (searchValueNumeric[depth + i] !== listsAsConcatedNumericList[leftRange + i]) {
matches = false;
break;
}
Expand All @@ -334,7 +334,7 @@ function makeTree<T>(lists: Array<PrepareDataParams<T>>) {
}
}

if (isLeaf && depth + rangeLen >= s.length) {
if (isLeaf && depth + rangeLen >= searchValueNumeric.length) {
occurrences.push(listsAsConcatedNumericList.length - (depth + rangeLen));
}
}
Expand Down
17 changes: 6 additions & 11 deletions src/pages/ChatFinderPage/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import type {RootStackParamList} from '@libs/Navigation/types';
import * as OptionsListUtils from '@libs/OptionsListUtils';
import Performance from '@libs/Performance';
import type {OptionData} from '@libs/ReportUtils';
import {makeTree, prepareData} from '@libs/SuffixUkkonenTree';
import * as SuffixTree from '@libs/SuffixUkkonenTree';
import * as Report from '@userActions/Report';
import Timing from '@userActions/Timing';
import CONST from '@src/CONST';
Expand Down Expand Up @@ -100,18 +100,18 @@ function ChatFinderPage({betas, isSearchingForReports, navigation}: ChatFinderPa
*/
const findInSearchTree = useMemo(() => {
let start = performance.now();
const tree = makeTree([
const tree = SuffixTree.makeTree([
{
data: searchOptions.personalDetails,
transform: (option) => {
toSearchableString: (option) => {
const displayName = option.participantsList?.[0]?.displayName ?? '';
return (option.login ?? '') + (option.login !== displayName ? displayName : '');
},
},
{
data: searchOptions.recentReports,
transform: (option) => {
let searchStringForTree = option.text ?? ''
toSearchableString: (option) => {
let searchStringForTree = option.text ?? '';
searchStringForTree += option.login ?? '';

if (option.isThread) {
Expand All @@ -137,10 +137,6 @@ function ChatFinderPage({betas, isSearchingForReports, navigation}: ChatFinderPa
const searchStart = performance.now();
const [personalDetails, recentReports] = tree.findInSearchTree(searchInput);
console.log('findInSearchTree', performance.now() - searchStart);

Check failure on line 139 in src/pages/ChatFinderPage/index.tsx

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Unexpected console statement

Check failure on line 139 in src/pages/ChatFinderPage/index.tsx

View workflow job for this annotation

GitHub Actions / ESLint check

Unexpected console statement
console.log("results", {
personalDetails,
recentReports,
})

return {
personalDetails,
Expand All @@ -162,7 +158,6 @@ function ChatFinderPage({betas, isSearchingForReports, navigation}: ChatFinderPa
}

Timing.start(CONST.TIMING.SEARCH_FILTER_OPTIONS);
const newOptions1 = OptionsListUtils.filterOptions(searchOptions, debouncedSearchValue, {sortByReportTypeInSearch: true, preferChatroomsOverThreads: true});
const newOptions = findInSearchTree(debouncedSearchValue);
const userToInvite = OptionsListUtils.pickUserToInvite({
canInviteUser: true,
Expand All @@ -180,7 +175,7 @@ function ChatFinderPage({betas, isSearchingForReports, navigation}: ChatFinderPa
userToInvite,
headerMessage: header,
};
}, [debouncedSearchValue, searchOptions, findInSearchTree]);
}, [debouncedSearchValue, findInSearchTree]);

const {recentReports, personalDetails: localPersonalDetails, userToInvite, headerMessage} = debouncedSearchValue.trim() !== '' ? filteredOptions : searchOptions;

Expand Down
12 changes: 6 additions & 6 deletions tests/unit/SuffixUkkonenTree.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ describe('SuffixUkkonenTree', () => {
const tree = makeTree([
{
data: ['banana'],
transform: (data) => data,
toSearchableString: (data) => data,
},
]);
tree.build();
Expand All @@ -16,7 +16,7 @@ describe('SuffixUkkonenTree', () => {
const tree = makeTree([
{
data: ['banana', 'test'],
transform: (data) => data,
toSearchableString: (data) => data,
},
]);
tree.build();
Expand All @@ -28,11 +28,11 @@ describe('SuffixUkkonenTree', () => {
const tree = makeTree([
{
data: ['erica', 'banana'],
transform: (data) => data,
toSearchableString: (data) => data,
},
{
data: ['banana', 'test'],
transform: (data) => data,
toSearchableString: (data) => data,
},
]);
tree.build();
Expand All @@ -44,7 +44,7 @@ describe('SuffixUkkonenTree', () => {
const tree = makeTree([
{
data: [1, 2, 3, 4, 5],
transform: (data) => String(data),
toSearchableString: (data) => String(data),
},
]);
tree.build();
Expand All @@ -55,7 +55,7 @@ describe('SuffixUkkonenTree', () => {
const tree = makeTree([
{
data: ['banana', 'ñèşťǒř', 'test'],
transform: (data) => data,
toSearchableString: (data) => data,
},
]);
tree.build();
Expand Down

0 comments on commit de0b467

Please sign in to comment.