From c7bfb20448aca02e07067472f767616b1abe6e27 Mon Sep 17 00:00:00 2001 From: CaliBrain Date: Fri, 25 Sep 2026 18:38:25 -0400 Subject: [PATCH] Default to english when no lang is slected (#1396) Fixes https://github.com/calibrain/shelfmark/issues/1384 --- .../src/tests/languageFilters.test.ts | 20 +++++++++++++++++++ src/frontend/src/utils/languageFilters.ts | 6 ++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/frontend/src/tests/languageFilters.test.ts b/src/frontend/src/tests/languageFilters.test.ts index f05fcd17..5374e01f 100644 --- a/src/frontend/src/tests/languageFilters.test.ts +++ b/src/frontend/src/tests/languageFilters.test.ts @@ -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', () => { diff --git a/src/frontend/src/utils/languageFilters.ts b/src/frontend/src/utils/languageFilters.ts index fba08b51..f301d609 100644 --- a/src/frontend/src/utils/languageFilters.ts +++ b/src/frontend/src/utils/languageFilters.ts @@ -123,7 +123,7 @@ export const buildLanguageNormalizer = (languages: Language[]): Map, ): 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)) {