Extract extensions language extraction into own function

This commit is contained in:
schroda
2025-04-21 01:23:27 +02:00
parent 214fa7710d
commit 78030b103a
2 changed files with 11 additions and 11 deletions

View File

@@ -51,10 +51,7 @@ export const translateExtensionLanguage = (languageCode: string): string =>
? t(extensionLanguageToTranslationKey[languageCode as ExtensionGroupState | DefaultLanguage])
: langCodeToName(languageCode);
export function getExtensionsInfo(extensions: TExtension[]): {
allLangs: string[];
groupedExtensions: GroupedExtensionsResult;
} {
export function groupExtensionsByLanguage(extensions: TExtension[]): GroupedExtensionsResult {
const allLangs: string[] = [];
const sortedExtensions: GroupedExtensions = {
[ExtensionGroupState.OBSOLETE]: [],
@@ -96,8 +93,8 @@ export function getExtensionsInfo(extensions: TExtension[]): {
groupedExtensionList.sort((a, b) => a.name.localeCompare(b.name)),
);
return {
allLangs,
groupedExtensions,
};
return groupedExtensions;
}
export const getLanguagesFromExtensions = (extensions: TExtension[]): string[] =>
[...new Set(extensions.map((extension) => extension.lang))].toSorted(langSortCmp);

View File

@@ -32,9 +32,10 @@ import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
import { VirtuosoUtil } from '@/lib/virtuoso/Virtuoso.util.tsx';
import {
getExtensionsInfo,
isExtensionState,
groupExtensionsByLanguage,
getLanguagesFromExtensions,
translateExtensionLanguage,
isExtensionState,
} from '@/modules/extension/Extensions.utils.ts';
import {
ExtensionAction,
@@ -94,6 +95,8 @@ export function Extensions({ tabsMenuHeight }: { tabsMenuHeight: number }) {
fetchExtensions();
}, [refetchExtensions]);
const allLangs = useMemo(() => getLanguagesFromExtensions(allExtensions ?? []), [allExtensions]);
const filteredExtensions = useMemo(
() =>
(allExtensions ?? []).filter((ext) => {
@@ -104,7 +107,7 @@ export function Extensions({ tabsMenuHeight }: { tabsMenuHeight: number }) {
[allExtensions, showNsfw, query],
);
const { allLangs, groupedExtensions } = useMemo(() => getExtensionsInfo(filteredExtensions), [filteredExtensions]);
const groupedExtensions = useMemo(() => groupExtensionsByLanguage(filteredExtensions), [filteredExtensions]);
const filteredGroupedExtensions = useMemo(
() =>