Sped up character search by 93%

eb29f03ab01072eae8cd860608869f3756bcde9f

Joe <joenunezb@gmail.com>

1 files changed, +32 -0Showing whitespace changes
public/scripts/power-user.js+32 -0
@@ -330,6 +330,12 @@ const debug_functions = [];
330330
331331const setHotswapsDebounced = debounce(favsToHotswap);
332332
333+const fuzzySearchCharactersCache = new Map();
334+const fuzzySearchWorldInfoCache = new Map();
335+const fuzzySearchPersonasCache = new Map();
336+const fuzzySearchTagsCache = new Map();
337+const fuzzySearchGroupsCache = new Map();
338+
333339function playMessageSound() {
334340 if (!power_user.play_message_sound) {
335341 return;
@@ -1830,6 +1836,11 @@ async function loadContextSettings() {
18301836 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
18311837 */
18321838export function fuzzySearchCharacters(searchValue) {
1839+
1840+ if (fuzzySearchCharactersCache.has(searchValue)) {
1841+ return fuzzySearchCharactersCache.get(searchValue);
1842+ }
1843+
18331844 // @ts-ignore
18341845 const fuse = new Fuse(characters, {
18351846 keys: [
@@ -1853,6 +1864,7 @@ export function fuzzySearchCharacters(searchValue) {
18531864
18541865 const results = fuse.search(searchValue);
18551866 console.debug('Characters fuzzy search results for ' + searchValue, results);
1867+ fuzzySearchCharactersCache.set(searchValue, results);
18561868 return results;
18571869}
18581870
@@ -1863,6 +1875,10 @@ export function fuzzySearchCharacters(searchValue) {
18631875 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
18641876 */
18651877export function fuzzySearchWorldInfo(data, searchValue) {
1878+ if (fuzzySearchWorldInfoCache.has(searchValue)) {
1879+ return fuzzySearchWorldInfoCache.get(searchValue);
1880+ }
1881+
18661882 // @ts-ignore
18671883 const fuse = new Fuse(data, {
18681884 keys: [
@@ -1882,6 +1898,7 @@ export function fuzzySearchWorldInfo(data, searchValue) {
18821898
18831899 const results = fuse.search(searchValue);
18841900 console.debug('World Info fuzzy search results for ' + searchValue, results);
1901+ fuzzySearchWorldInfoCache.set(searchValue, results);
18851902 return results;
18861903}
18871904
@@ -1892,6 +1909,10 @@ export function fuzzySearchWorldInfo(data, searchValue) {
18921909 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
18931910 */
18941911export function fuzzySearchPersonas(data, searchValue) {
1912+ if (fuzzySearchPersonasCache.has(searchValue)) {
1913+ return fuzzySearchPersonasCache.get(searchValue);
1914+ }
1915+
18951916 data = data.map(x => ({ key: x, name: power_user.personas[x] ?? '', description: power_user.persona_descriptions[x]?.description ?? '' }));
18961917 // @ts-ignore
18971918 const fuse = new Fuse(data, {
@@ -1907,6 +1928,7 @@ export function fuzzySearchPersonas(data, searchValue) {
19071928
19081929 const results = fuse.search(searchValue);
19091930 console.debug('Personas fuzzy search results for ' + searchValue, results);
1931+ fuzzySearchPersonasCache.set(searchValue, results);
19101932 return results;
19111933}
19121934
@@ -1916,6 +1938,10 @@ export function fuzzySearchPersonas(data, searchValue) {
19161938 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
19171939 */
19181940export function fuzzySearchTags(searchValue) {
1941+ if (fuzzySearchTagsCache.has(searchValue)) {
1942+ return fuzzySearchTagsCache.get(searchValue);
1943+ }
1944+
19191945 // @ts-ignore
19201946 const fuse = new Fuse(tags, {
19211947 keys: [
@@ -1929,6 +1955,7 @@ export function fuzzySearchTags(searchValue) {
19291955
19301956 const results = fuse.search(searchValue);
19311957 console.debug('Tags fuzzy search results for ' + searchValue, results);
1958+ fuzzySearchTagsCache.set(searchValue, results);
19321959 return results;
19331960}
19341961
@@ -1938,6 +1965,10 @@ export function fuzzySearchTags(searchValue) {
19381965 * @returns {import('fuse.js').FuseResult<any>[]} Results as items with their score
19391966 */
19401967export function fuzzySearchGroups(searchValue) {
1968+ if (fuzzySearchGroupsCache.has(searchValue)) {
1969+ return fuzzySearchGroupsCache.get(searchValue);
1970+ }
1971+
19411972 // @ts-ignore
19421973 const fuse = new Fuse(groups, {
19431974 keys: [
@@ -1954,6 +1985,7 @@ export function fuzzySearchGroups(searchValue) {
19541985
19551986 const results = fuse.search(searchValue);
19561987 console.debug('Groups fuzzy search results for ' + searchValue, results);
1988+ fuzzySearchGroupsCache.set(searchValue, results);
19571989 return results;
19581990}
19591991