From 742a02c5cf59477b90ab7d2e004c89cdbc4f67de Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sun, 25 Jan 2026 03:22:15 +0100 Subject: [PATCH] Fix source language filter In case the saved "selected languages" contained languages that did not have any installed source, they caused TypeErrors when trying to access them in e.g. "sourcesByLanguage". --- .../components/SourceLanguageSelect.tsx | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/features/source/components/SourceLanguageSelect.tsx b/src/features/source/components/SourceLanguageSelect.tsx index 25388035..48578190 100644 --- a/src/features/source/components/SourceLanguageSelect.tsx +++ b/src/features/source/components/SourceLanguageSelect.tsx @@ -68,37 +68,38 @@ export const SourceLanguageSelect = ({ const languagesSortedBySelectState = useMemo( () => toUniqueLanguageCodes([ - ...tmpSelectedLanguages.toSorted(languageSortComparator), + ...tmpSelectedLanguages + .filter((language) => languages.includes(language)) + .toSorted(languageSortComparator), ...languages.toSorted(languageSortComparator), ]), [languages, tmpSelectedLanguages], ); const flattenedSourcesByLanguages = useMemo( - () => Object.values(languagesSortedBySelectState.map((language) => sourcesByLanguage[language])).flat(), + () => languagesSortedBySelectState.map((language) => sourcesByLanguage[language] ?? []).flat(), [languagesSortedBySelectState, sourcesByLanguage], ); const groupCounts = useMemo( () => languagesSortedBySelectState.map((language) => { - const isEnabled = tmpSelectedLanguages.includes(language); + const isEnabled = tmpSelectedLanguages + .filter((selectedLanguage) => languages.includes(selectedLanguage)) + .includes(language); if (!isEnabled) { return 0; } - return sourcesByLanguage[language]?.length ?? 0; + return sourcesByLanguage[language].length; }), - [sourcesByLanguage, languagesSortedBySelectState], + [sourcesByLanguage, languagesSortedBySelectState, languages], ); const computeItemKey = VirtuosoUtil.useCreateGroupedComputeItemKey( groupCounts, useCallback((index) => languagesSortedBySelectState[index], [languagesSortedBySelectState]), - useCallback( - (index) => flattenedSourcesByLanguages[index].id, - [sourcesByLanguage, languagesSortedBySelectState], - ), + useCallback((index) => flattenedSourcesByLanguages[index].id, [flattenedSourcesByLanguages]), ); const handleCancel = () => {