Remove abbreviation of “language” in function names
This commit is contained in:
@@ -21,7 +21,7 @@ import { useTranslation } from 'react-i18next';
|
|||||||
import { Virtuoso } from 'react-virtuoso';
|
import { Virtuoso } from 'react-virtuoso';
|
||||||
import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx';
|
import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx';
|
||||||
import { translateExtensionLanguage } from '@/modules/extension/Extensions.utils.ts';
|
import { translateExtensionLanguage } from '@/modules/extension/Extensions.utils.ts';
|
||||||
import { langSortCmp, toUniqueLanguageCodes } from '@/modules/core/utils/Languages.ts';
|
import { languageSortComparator, toUniqueLanguageCodes } from '@/modules/core/utils/Languages.ts';
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
selectedLanguages: string[];
|
selectedLanguages: string[];
|
||||||
@@ -38,7 +38,10 @@ export function LanguageSelect(props: IProps) {
|
|||||||
|
|
||||||
const languagesSortedBySelectState = useMemo(
|
const languagesSortedBySelectState = useMemo(
|
||||||
() =>
|
() =>
|
||||||
toUniqueLanguageCodes([...tmpSelectedLanguages.toSorted(langSortCmp), ...languages.toSorted(langSortCmp)]),
|
toUniqueLanguageCodes([
|
||||||
|
...tmpSelectedLanguages.toSorted(languageSortComparator),
|
||||||
|
...languages.toSorted(languageSortComparator),
|
||||||
|
]),
|
||||||
[languages, tmpSelectedLanguages],
|
[languages, tmpSelectedLanguages],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ export function getLanguage(code: string): LanguageObject {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function langCodeToName(code: string): string {
|
export function languageCodeToName(code: string): string {
|
||||||
return getLanguage(code).nativeName;
|
return getLanguage(code).nativeName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,12 +89,13 @@ function defaultNativeLang(): readonly string[] {
|
|||||||
return preferredLanguages;
|
return preferredLanguages;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function extensionDefaultLangs(): string[] {
|
export function extensionDefaultLanguages(): string[] {
|
||||||
return [...defaultNativeLang()];
|
return [...defaultNativeLang()];
|
||||||
}
|
}
|
||||||
|
|
||||||
export function sourceDefualtLangs(): string[] {
|
export function sourceDefaultLanguages(): string[] {
|
||||||
return [...defaultNativeLang()];
|
return [...defaultNativeLang()];
|
||||||
}
|
}
|
||||||
|
|
||||||
export const langSortCmp = (a: string, b: string) => langCodeToName(a).localeCompare(langCodeToName(b));
|
export const languageSortComparator = (a: string, b: string) =>
|
||||||
|
languageCodeToName(a).localeCompare(languageCodeToName(b));
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ import {
|
|||||||
} from '@/modules/extension/Extensions.types.ts';
|
} from '@/modules/extension/Extensions.types.ts';
|
||||||
import {
|
import {
|
||||||
DefaultLanguage,
|
DefaultLanguage,
|
||||||
langCodeToName,
|
languageCodeToName,
|
||||||
langSortCmp,
|
languageSortComparator,
|
||||||
toComparableLanguage,
|
toComparableLanguage,
|
||||||
toComparableLanguages,
|
toComparableLanguages,
|
||||||
toUniqueLanguageCodes,
|
toUniqueLanguageCodes,
|
||||||
@@ -56,7 +56,7 @@ export const isExtensionStateOrLanguage = (languageCode: string): boolean =>
|
|||||||
export const translateExtensionLanguage = (languageCode: string): string =>
|
export const translateExtensionLanguage = (languageCode: string): string =>
|
||||||
isExtensionStateOrLanguage(languageCode)
|
isExtensionStateOrLanguage(languageCode)
|
||||||
? t(extensionLanguageToTranslationKey[languageCode as ExtensionGroupState | DefaultLanguage])
|
? t(extensionLanguageToTranslationKey[languageCode as ExtensionGroupState | DefaultLanguage])
|
||||||
: langCodeToName(languageCode);
|
: languageCodeToName(languageCode);
|
||||||
|
|
||||||
export function groupExtensionsByLanguage(extensions: TExtension[]): GroupedExtensionsResult {
|
export function groupExtensionsByLanguage(extensions: TExtension[]): GroupedExtensionsResult {
|
||||||
const extensionsByLanguage = Object.groupBy<ExtensionGroupState | string, TExtension>(extensions, (extension) => {
|
const extensionsByLanguage = Object.groupBy<ExtensionGroupState | string, TExtension>(extensions, (extension) => {
|
||||||
@@ -86,7 +86,7 @@ export function groupExtensionsByLanguage(extensions: TExtension[]): GroupedExte
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return langSortCmp(a, b);
|
return languageSortComparator(a, b);
|
||||||
});
|
});
|
||||||
|
|
||||||
const groupedExtensionsSortedByLanguage = extensionsBySortedLanguage.map(([language, extensionsOfLanguage]) => [
|
const groupedExtensionsSortedByLanguage = extensionsBySortedLanguage.map(([language, extensionsOfLanguage]) => [
|
||||||
@@ -98,7 +98,7 @@ export function groupExtensionsByLanguage(extensions: TExtension[]): GroupedExte
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const getLanguagesFromExtensions = (extensions: TExtension[]): string[] =>
|
export const getLanguagesFromExtensions = (extensions: TExtension[]): string[] =>
|
||||||
[...new Set(extensions.map((extension) => extension.lang))].toSorted(langSortCmp);
|
[...new Set(extensions.map((extension) => extension.lang))].toSorted(languageSortComparator);
|
||||||
|
|
||||||
export const filterExtensions = (
|
export const filterExtensions = (
|
||||||
extensions: TExtension[],
|
extensions: TExtension[],
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import { useTranslation } from 'react-i18next';
|
|||||||
import Box from '@mui/material/Box';
|
import Box from '@mui/material/Box';
|
||||||
import { requestManager } from '@/lib/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/RequestManager.ts';
|
||||||
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
||||||
import { sourceDefualtLangs } from '@/modules/core/utils/Languages.ts';
|
import { sourceDefaultLanguages } from '@/modules/core/utils/Languages.ts';
|
||||||
import { AppbarSearch } from '@/modules/core/components/AppbarSearch.tsx';
|
import { AppbarSearch } from '@/modules/core/components/AppbarSearch.tsx';
|
||||||
import { LanguageSelect } from '@/modules/core/components/inputs/LanguageSelect.tsx';
|
import { LanguageSelect } from '@/modules/core/components/inputs/LanguageSelect.tsx';
|
||||||
import { useDebounce } from '@/modules/core/hooks/useDebounce.ts';
|
import { useDebounce } from '@/modules/core/hooks/useDebounce.ts';
|
||||||
@@ -194,7 +194,7 @@ export const SearchAll: React.FC = () => {
|
|||||||
const [query] = useQueryParam('query', StringParam);
|
const [query] = useQueryParam('query', StringParam);
|
||||||
const searchString = useDebounce(query, TRIGGER_SEARCH_THRESHOLD);
|
const searchString = useDebounce(query, TRIGGER_SEARCH_THRESHOLD);
|
||||||
|
|
||||||
const [shownLangs, setShownLangs] = useLocalStorage<string[]>('shownSourceLangs', sourceDefualtLangs());
|
const [shownLangs, setShownLangs] = useLocalStorage<string[]>('shownSourceLangs', sourceDefaultLanguages());
|
||||||
const {
|
const {
|
||||||
settings: { showNsfw },
|
settings: { showNsfw },
|
||||||
} = useMetadataServerSettings();
|
} = useMetadataServerSettings();
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { DEFAULT_DEVICE } from '@/modules/device/services/Device.ts';
|
|||||||
import { DEFAULT_SORT_SETTINGS } from '@/modules/migration/Migration.constants.ts';
|
import { DEFAULT_SORT_SETTINGS } from '@/modules/migration/Migration.constants.ts';
|
||||||
import { MetadataServerSettings } from '@/modules/settings/Settings.types.ts';
|
import { MetadataServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||||
import { GridLayout } from '@/modules/core/Core.types.ts';
|
import { GridLayout } from '@/modules/core/Core.types.ts';
|
||||||
import { extensionDefaultLangs } from '@/modules/core/utils/Languages.ts';
|
import { extensionDefaultLanguages } from '@/modules/core/utils/Languages.ts';
|
||||||
|
|
||||||
export const SERVER_SETTINGS_METADATA_DEFAULT: MetadataServerSettings = {
|
export const SERVER_SETTINGS_METADATA_DEFAULT: MetadataServerSettings = {
|
||||||
// downloads
|
// downloads
|
||||||
@@ -41,7 +41,7 @@ export const SERVER_SETTINGS_METADATA_DEFAULT: MetadataServerSettings = {
|
|||||||
|
|
||||||
// browse
|
// browse
|
||||||
hideLibraryEntries: false,
|
hideLibraryEntries: false,
|
||||||
extensionLanguages: extensionDefaultLangs(),
|
extensionLanguages: extensionDefaultLanguages(),
|
||||||
showNsfw: true,
|
showNsfw: true,
|
||||||
|
|
||||||
// history
|
// history
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx';
|
|||||||
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
|
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
|
||||||
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
||||||
import { I18nResourceCode, i18nResources } from '@/i18n';
|
import { I18nResourceCode, i18nResources } from '@/i18n';
|
||||||
import { langCodeToName } from '@/modules/core/utils/Languages.ts';
|
import { languageCodeToName } from '@/modules/core/utils/Languages.ts';
|
||||||
import { ThemeList } from '@/modules/theme/components/ThemeList.tsx';
|
import { ThemeList } from '@/modules/theme/components/ThemeList.tsx';
|
||||||
import {
|
import {
|
||||||
createUpdateMetadataServerSettings,
|
createUpdateMetadataServerSettings,
|
||||||
@@ -145,7 +145,7 @@ export const Appearance = () => {
|
|||||||
>
|
>
|
||||||
{i18nResources.map((language) => (
|
{i18nResources.map((language) => (
|
||||||
<MenuItem key={language} value={language}>
|
<MenuItem key={language} value={language}>
|
||||||
{langCodeToName(language)}
|
{languageCodeToName(language)}
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
))}
|
))}
|
||||||
</Select>
|
</Select>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import { useTranslation } from 'react-i18next';
|
|||||||
import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx';
|
import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx';
|
||||||
import { requestManager } from '@/lib/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/RequestManager.ts';
|
||||||
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
||||||
import { sourceDefualtLangs } from '@/modules/core/utils/Languages.ts';
|
import { sourceDefaultLanguages } from '@/modules/core/utils/Languages.ts';
|
||||||
import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx';
|
import { LoadingPlaceholder } from '@/modules/core/components/feedback/LoadingPlaceholder.tsx';
|
||||||
import { SourceCard } from '@/modules/source/components/SourceCard.tsx';
|
import { SourceCard } from '@/modules/source/components/SourceCard.tsx';
|
||||||
import { LanguageSelect } from '@/modules/core/components/inputs/LanguageSelect.tsx';
|
import { LanguageSelect } from '@/modules/core/components/inputs/LanguageSelect.tsx';
|
||||||
@@ -31,7 +31,7 @@ import { useAppAction } from '@/modules/navigation-bar/hooks/useAppAction.ts';
|
|||||||
export function Sources() {
|
export function Sources() {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
const [shownLangs, setShownLangs] = useLocalStorage<string[]>('shownSourceLangs', sourceDefualtLangs());
|
const [shownLangs, setShownLangs] = useLocalStorage<string[]>('shownSourceLangs', sourceDefaultLanguages());
|
||||||
const {
|
const {
|
||||||
settings: { showNsfw },
|
settings: { showNsfw },
|
||||||
} = useMetadataServerSettings();
|
} = useMetadataServerSettings();
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import {
|
|||||||
} from '@/modules/source/Source.types.ts';
|
} from '@/modules/source/Source.types.ts';
|
||||||
import {
|
import {
|
||||||
DefaultLanguage,
|
DefaultLanguage,
|
||||||
langSortCmp,
|
languageSortComparator,
|
||||||
toComparableLanguage,
|
toComparableLanguage,
|
||||||
toComparableLanguages,
|
toComparableLanguages,
|
||||||
toUniqueLanguageCodes,
|
toUniqueLanguageCodes,
|
||||||
@@ -37,14 +37,16 @@ export class Sources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static getLanguages(sources: (SourceIdInfo & SourceLanguageInfo)[]): string[] {
|
static getLanguages(sources: (SourceIdInfo & SourceLanguageInfo)[]): string[] {
|
||||||
return [...new Set(sources.map((source) => Sources.getLanguage(source)))].toSorted(langSortCmp);
|
return [...new Set(sources.map((source) => Sources.getLanguage(source)))].toSorted(languageSortComparator);
|
||||||
}
|
}
|
||||||
|
|
||||||
static groupByLanguage<Source extends SourceIdInfo & SourceLanguageInfo & SourceDisplayNameInfo>(
|
static groupByLanguage<Source extends SourceIdInfo & SourceLanguageInfo & SourceDisplayNameInfo>(
|
||||||
sources: Source[],
|
sources: Source[],
|
||||||
): Record<string, Source[]> {
|
): Record<string, Source[]> {
|
||||||
const sourcesByLanguage = Object.groupBy(sources, (source) => Sources.getLanguage(source));
|
const sourcesByLanguage = Object.groupBy(sources, (source) => Sources.getLanguage(source));
|
||||||
const sourcesBySortedLanguage = Object.entries(sourcesByLanguage).toSorted(([a], [b]) => langSortCmp(a, b));
|
const sourcesBySortedLanguage = Object.entries(sourcesByLanguage).toSorted(([a], [b]) =>
|
||||||
|
languageSortComparator(a, b),
|
||||||
|
);
|
||||||
const sortedSourcesBySortedLanguage = sourcesBySortedLanguage.map(([language, sourcesOfLanguage]) => [
|
const sortedSourcesBySortedLanguage = sourcesBySortedLanguage.map(([language, sourcesOfLanguage]) => [
|
||||||
language,
|
language,
|
||||||
(sourcesOfLanguage ?? []).toSorted((a, b) => a.displayName.localeCompare(b.displayName)),
|
(sourcesOfLanguage ?? []).toSorted((a, b) => a.displayName.localeCompare(b.displayName)),
|
||||||
|
|||||||
Reference in New Issue
Block a user