From fef33f15f9afc5fb5bb47897070312b84209cb34 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Mon, 21 Apr 2025 16:31:51 +0200 Subject: [PATCH] Remove "forced languages" from "LangSelect" --- .../core/components/inputs/LangSelect.tsx | 16 ++---------- .../global-search/screens/SearchAll.tsx | 1 - src/modules/source/screens/Sources.tsx | 25 +++++-------------- 3 files changed, 8 insertions(+), 34 deletions(-) diff --git a/src/modules/core/components/inputs/LangSelect.tsx b/src/modules/core/components/inputs/LangSelect.tsx index 9f70db0f..50739919 100644 --- a/src/modules/core/components/inputs/LangSelect.tsx +++ b/src/modules/core/components/inputs/LangSelect.tsx @@ -23,30 +23,18 @@ import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; import { cloneObject } from '@/util/cloneObject.tsx'; import { translateExtensionLanguage } from '@/modules/extension/Extensions.utils.ts'; -function removeAll(firstList: any[], secondList: any[]) { - secondList.forEach((item) => { - const index = firstList.indexOf(item); - if (index !== -1) { - firstList.splice(index, 1); - } - }); - - return firstList; -} - interface IProps { shownLangs: string[]; setShownLangs: (arg0: string[]) => void; allLangs: string[]; - forcedLangs?: string[]; } export function LangSelect(props: IProps) { const { t } = useTranslation(); - const { shownLangs, setShownLangs, allLangs, forcedLangs = [] } = props; + const { shownLangs, setShownLangs, allLangs } = props; // hold a copy and only sate state on parent when OK pressed, improves performance - const [mShownLangs, setMShownLangs] = useState(removeAll(cloneObject(shownLangs), forcedLangs)); + const [mShownLangs, setMShownLangs] = useState(cloneObject(shownLangs)); const [open, setOpen] = useState(false); const handleCancel = () => { diff --git a/src/modules/global-search/screens/SearchAll.tsx b/src/modules/global-search/screens/SearchAll.tsx index 6b58066a..14047dd1 100644 --- a/src/modules/global-search/screens/SearchAll.tsx +++ b/src/modules/global-search/screens/SearchAll.tsx @@ -252,7 +252,6 @@ export const SearchAll: React.FC = () => { shownLangs={shownLangs} setShownLangs={setShownLangs} allLangs={sourceToLangList(sources)} - forcedLangs={sourceForcedDefaultLangs()} /> , ); diff --git a/src/modules/source/screens/Sources.tsx b/src/modules/source/screens/Sources.tsx index efc5d126..7a8c84cc 100644 --- a/src/modules/source/screens/Sources.tsx +++ b/src/modules/source/screens/Sources.tsx @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { Fragment, useEffect, useLayoutEffect, useMemo } from 'react'; +import { Fragment, useLayoutEffect, useMemo } from 'react'; import IconButton from '@mui/material/IconButton'; import Typography from '@mui/material/Typography'; import TravelExploreIcon from '@mui/icons-material/TravelExplore'; @@ -67,7 +67,11 @@ export function Sources() { const { t } = useTranslation(); const { setAction } = useNavBarContext(); - const [shownLangs, setShownLangs] = useLocalStorage('shownSourceLangs', sourceDefualtLangs()); + const [savedShownLangs, setShownLangs] = useLocalStorage('shownSourceLangs', sourceDefualtLangs()); + const shownLangs = useMemo( + () => [...new Set([...savedShownLangs, ...sourceDefualtLangs(), ...sourceForcedDefaultLangs()])], + [savedShownLangs], + ); const [showNsfw] = useLocalStorage('showNsfw', true); const { @@ -89,22 +93,6 @@ export function Sources() { const navigate = useNavigate(); - useEffect(() => { - // make sure all of forcedDefaultLangs() exists in shownLangs - sourceForcedDefaultLangs().forEach((forcedLang) => { - let hasLang = false; - shownLangs.forEach((lang) => { - if (lang === forcedLang) hasLang = true; - }); - if (!hasLang) { - setShownLangs((shownLangsCopy) => { - shownLangsCopy.push(forcedLang); - return shownLangsCopy; - }); - } - }); - }, []); - useLayoutEffect(() => { setAction( <> @@ -117,7 +105,6 @@ export function Sources() { shownLangs={shownLangs} setShownLangs={setShownLangs} allLangs={sourceToLangList(sources ?? [])} - forcedLangs={sourceForcedDefaultLangs()} /> , );