Normalize language code comparisons
Due to using the browsers' preferred languages by default, there was a possibility that the preferred language codes did not match any extension/source language, which lead to broken filtering. While this happened, it was also possible that the preferred languages still matched properly to a language in the language filter, which caused confusion. This was the case e.g., for "en-GB" or "en-US"
This commit is contained in:
@@ -15,7 +15,14 @@ import {
|
||||
InstalledState,
|
||||
TExtension,
|
||||
} from '@/modules/extension/Extensions.types.ts';
|
||||
import { DefaultLanguage, langCodeToName, langSortCmp } from '@/modules/core/utils/Languages.ts';
|
||||
import {
|
||||
DefaultLanguage,
|
||||
langCodeToName,
|
||||
langSortCmp,
|
||||
toComparableLanguage,
|
||||
toComparableLanguages,
|
||||
toUniqueLanguageCodes,
|
||||
} from '@/modules/core/utils/Languages.ts';
|
||||
import { extensionLanguageToTranslationKey } from '@/modules/extension/Extensions.constants.ts';
|
||||
import { enhancedCleanup } from '@/util/Strings.ts';
|
||||
|
||||
@@ -98,8 +105,14 @@ export const filterExtensions = (
|
||||
selectedLanguages: string[],
|
||||
showNsfw: boolean,
|
||||
query: string | null | undefined,
|
||||
): TExtension[] =>
|
||||
extensions
|
||||
.filter((extension) => selectedLanguages.includes(extension.lang) || extension.isInstalled)
|
||||
): TExtension[] => {
|
||||
const normalizedSelectedLanguages = toComparableLanguages(toUniqueLanguageCodes(selectedLanguages));
|
||||
|
||||
return extensions
|
||||
.filter(
|
||||
(extension) =>
|
||||
normalizedSelectedLanguages.includes(toComparableLanguage(extension.lang)) || extension.isInstalled,
|
||||
)
|
||||
.filter((extension) => showNsfw || !extension.isNsfw)
|
||||
.filter((extension) => !query || enhancedCleanup(extension.name).includes(enhancedCleanup(query)));
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user