mirror of
https://github.com/calibrain/shelfmark.git
synced 2026-10-04 12:41:11 +01:00
Default to english when no lang is slected (#1396)
Fixes https://github.com/calibrain/shelfmark/issues/1384
This commit is contained in:
@@ -5,6 +5,7 @@ import {
|
||||
LANGUAGE_OPTION_ALL,
|
||||
LANGUAGE_OPTION_DEFAULT,
|
||||
buildLanguageNormalizer,
|
||||
getLanguageFilterValues,
|
||||
getReleaseSearchLanguageParams,
|
||||
releaseLanguageMatchesFilter,
|
||||
resolveDefaultLanguageCodes,
|
||||
@@ -67,6 +68,25 @@ describe('releaseLanguageMatchesFilter', () => {
|
||||
|
||||
expect(visibleLanguages).toHaveLength(48);
|
||||
});
|
||||
|
||||
it('shows every release when the default language list is explicitly empty', () => {
|
||||
// Issue 1384: an empty BOOK_LANGUAGE with the "Default" filter hid all releases.
|
||||
const normalizer = buildLanguageNormalizer(supportedLanguages);
|
||||
const defaults = resolveDefaultLanguageCodes([], supportedLanguages);
|
||||
const selectedCodes =
|
||||
getLanguageFilterValues([LANGUAGE_OPTION_DEFAULT], supportedLanguages, defaults) ?? defaults;
|
||||
|
||||
expect(releaseLanguageMatchesFilter('en', selectedCodes, normalizer)).toBe(true);
|
||||
expect(releaseLanguageMatchesFilter('German', selectedCodes, normalizer)).toBe(true);
|
||||
expect(releaseLanguageMatchesFilter('de, en', selectedCodes, normalizer)).toBe(true);
|
||||
});
|
||||
|
||||
it('still filters by a configured default language', () => {
|
||||
const normalizer = buildLanguageNormalizer(supportedLanguages);
|
||||
|
||||
expect(releaseLanguageMatchesFilter('en', ['en'], normalizer)).toBe(true);
|
||||
expect(releaseLanguageMatchesFilter('de', ['en'], normalizer)).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('resolveDefaultLanguageCodes', () => {
|
||||
|
||||
@@ -123,7 +123,7 @@ export const buildLanguageNormalizer = (languages: Language[]): Map<string, stri
|
||||
* (e.g., "English, Spanish", "English/Spanish", "English + Spanish", "English & Spanish").
|
||||
*
|
||||
* @param releaseLang - Language string from the release (can be code or full name)
|
||||
* @param selectedCodes - Array of selected ISO language codes
|
||||
* @param selectedCodes - Array of selected ISO language codes; null or empty means no filter
|
||||
* @param languageNormalizer - Optional map to normalize language names to codes
|
||||
*/
|
||||
export const releaseLanguageMatchesFilter = (
|
||||
@@ -131,7 +131,9 @@ export const releaseLanguageMatchesFilter = (
|
||||
selectedCodes: string[] | null,
|
||||
languageNormalizer?: Map<string, string>,
|
||||
): boolean => {
|
||||
if (!releaseLang || !selectedCodes) {
|
||||
// An empty list is an explicitly empty BOOK_LANGUAGE ("no default filter"), which the
|
||||
// backend does not filter on either; treating it as "match nothing" hid every release.
|
||||
if (!releaseLang || !selectedCodes || selectedCodes.length === 0) {
|
||||
return true;
|
||||
}
|
||||
if (selectedCodes.includes(LANGUAGE_OPTION_ALL)) {
|
||||
|
||||
Reference in New Issue
Block a user