From 988ba6b0197844d0f02ba8fc603f24467dd2c439 Mon Sep 17 00:00:00 2001 From: KoloMl Date: Wed, 12 Feb 2025 20:51:31 +0400 Subject: [PATCH] Revert "Don't display aliases when prefix is matching both alias and tag name" This reverts commit 15d09cf9ba38dc74d62f582becc93786b7761cb2. --- assets/js/autocomplete.ts | 8 ++-- assets/js/utils/__tests__/suggestions.spec.ts | 44 ++----------------- assets/js/utils/suggestions.ts | 18 ++++---- 3 files changed, 15 insertions(+), 55 deletions(-) diff --git a/assets/js/autocomplete.ts b/assets/js/autocomplete.ts index c5ae754c..d940794c 100644 --- a/assets/js/autocomplete.ts +++ b/assets/js/autocomplete.ts @@ -8,7 +8,7 @@ import store from './utils/store'; import { TermContext } from './query/lex'; import { $$ } from './utils/dom'; import { - createLocalAutocompleteResultFormatter, + formatLocalAutocompleteResult, fetchLocalAutocomplete, fetchSuggestions, SuggestionsPopup, @@ -196,11 +196,9 @@ function listenAutocomplete() { originalTerm = `${inputField.value}`.toLowerCase(); } - const matchedTerm = trimPrefixes(originalTerm); - const suggestions = localAc - .matchPrefix(matchedTerm, suggestionsCount) - .map(createLocalAutocompleteResultFormatter(matchedTerm)); + .matchPrefix(trimPrefixes(originalTerm), suggestionsCount) + .map(formatLocalAutocompleteResult); if (suggestions.length) { popup.renderSuggestions(suggestions).showForField(targetedInput); diff --git a/assets/js/utils/__tests__/suggestions.spec.ts b/assets/js/utils/__tests__/suggestions.spec.ts index 833915aa..29de9691 100644 --- a/assets/js/utils/__tests__/suggestions.spec.ts +++ b/assets/js/utils/__tests__/suggestions.spec.ts @@ -2,7 +2,7 @@ import { fetchMock } from '../../../test/fetch-mock.ts'; import { fetchLocalAutocomplete, fetchSuggestions, - createLocalAutocompleteResultFormatter, + formatLocalAutocompleteResult, purgeSuggestionsCache, SuggestionsPopup, TermSuggestion, @@ -334,13 +334,12 @@ describe('Suggestions', () => { }); }); - describe('createLocalAutocompleteResultFormatter', () => { + describe('formatLocalAutocompleteResult', () => { it('should format suggested tags as tag name and the count', () => { const tagName = 'safe'; const tagCount = getRandomIntBetween(5, 10); - const formatter = createLocalAutocompleteResultFormatter(); - const resultObject = formatter({ + const resultObject = formatLocalAutocompleteResult({ name: tagName, aliasName: tagName, imageCount: tagCount, @@ -355,8 +354,7 @@ describe('Suggestions', () => { const tagAlias = 'rating:safe'; const tagCount = getRandomIntBetween(5, 10); - const formatter = createLocalAutocompleteResultFormatter(); - const resultObject = formatter({ + const resultObject = formatLocalAutocompleteResult({ name: tagName, aliasName: tagAlias, imageCount: tagCount, @@ -365,39 +363,5 @@ describe('Suggestions', () => { expect(resultObject.label).toBe(`${tagAlias} ⇒ ${tagName} (${tagCount})`); expect(resultObject.value).toBe(tagName); }); - - it('should not display aliases when tag is starting with the same matched', () => { - const tagName = 'chest fluff'; - const tagAlias = 'chest floof'; - const tagCount = getRandomIntBetween(5, 10); - - const prefix = 'ch'; - - const formatter = createLocalAutocompleteResultFormatter(prefix); - const resultObject = formatter({ - name: tagName, - aliasName: tagAlias, - imageCount: tagCount, - }); - - expect(resultObject.label).toBe(`${tagName} (${tagCount})`); - }); - - it('should display aliases if matched prefix is different from the tag name', () => { - const tagName = 'queen chrysalis'; - const tagAlias = 'chrysalis'; - const tagCount = getRandomIntBetween(5, 10); - - const prefix = 'ch'; - - const formatter = createLocalAutocompleteResultFormatter(prefix); - const resultObject = formatter({ - name: tagName, - aliasName: tagAlias, - imageCount: tagCount, - }); - - expect(resultObject.label).toBe(`${tagAlias} ⇒ ${tagName} (${tagCount})`); - }); }); }); diff --git a/assets/js/utils/suggestions.ts b/assets/js/utils/suggestions.ts index 31d95a74..099c9860 100644 --- a/assets/js/utils/suggestions.ts +++ b/assets/js/utils/suggestions.ts @@ -176,17 +176,15 @@ export async function fetchLocalAutocomplete(): Promise { .then(buf => new LocalAutocompleter(buf)); } -export function createLocalAutocompleteResultFormatter(matchedPrefix?: string): (result: Result) => TermSuggestion { - return result => { - let tagName = result.name; +export function formatLocalAutocompleteResult(result: Result): TermSuggestion { + let tagName = result.name; - if (tagName !== result.aliasName && (!matchedPrefix || !tagName.startsWith(matchedPrefix))) { - tagName = `${result.aliasName} ⇒ ${tagName}`; - } + if (tagName !== result.aliasName) { + tagName = `${result.aliasName} ⇒ ${tagName}`; + } - return { - value: result.name, - label: `${tagName} (${result.imageCount})`, - }; + return { + value: result.name, + label: `${tagName} (${result.imageCount})`, }; }