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".
This commit is contained in:
schroda
2026-01-25 03:22:15 +01:00
parent 01ce4a8ded
commit 742a02c5cf

View File

@@ -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 = () => {