diff --git a/src/modules/extension/components/ExtensionOptions.tsx b/src/modules/extension/components/ExtensionOptions.tsx index ff0bc5a6..685bba66 100644 --- a/src/modules/extension/components/ExtensionOptions.tsx +++ b/src/modules/extension/components/ExtensionOptions.tsx @@ -28,6 +28,7 @@ import { AppRoutes } from '@/modules/core/AppRoute.constants'; import { translateExtensionLanguage } from '@/modules/extension/Extensions.utils'; import { StyledGroupItemWrapper } from '@/modules/core/components/virtuoso/StyledGroupItemWrapper.tsx'; import { TExtension } from '@/modules/extension/Extensions.types.ts'; +import { Sources } from '@/modules/source/services/Sources.ts'; interface IExtensionOptions { extensionId: TExtension['pkgName'] | undefined; @@ -84,7 +85,7 @@ export function ExtensionOptions({ extensionId, closeDialog }: IExtensionOptions }} > - {translateExtensionLanguage(source.lang)} + {translateExtensionLanguage(Sources.getLanguage(source))} {source.isConfigurable && ( diff --git a/src/modules/source/services/Sources.ts b/src/modules/source/services/Sources.ts index baa4dd0d..b57d4833 100644 --- a/src/modules/source/services/Sources.ts +++ b/src/modules/source/services/Sources.ts @@ -13,7 +13,7 @@ import { SourceNsfwInfo, SourceRepoInfo, } from '@/modules/source/Source.types.ts'; -import { langSortCmp } from '@/modules/core/utils/Languages.ts'; +import { DefaultLanguage, langSortCmp } from '@/modules/core/utils/Languages.ts'; export class Sources { static readonly LOCAL_SOURCE_ID = '0'; @@ -22,14 +22,22 @@ export class Sources { return source.id === Sources.LOCAL_SOURCE_ID; } - static getLanguages(sources: SourceLanguageInfo[]): string[] { - return [...new Set(sources.map((source) => source.lang))].toSorted(langSortCmp); + static getLanguage(source: SourceIdInfo & SourceLanguageInfo): string { + if (Sources.isLocalSource(source)) { + return DefaultLanguage.OTHER; + } + + return source.lang; } - static groupByLanguage( + static getLanguages(sources: (SourceIdInfo & SourceLanguageInfo)[]): string[] { + return [...new Set(sources.map((source) => Sources.getLanguage(source)))].toSorted(langSortCmp); + } + + static groupByLanguage( sources: Source[], ): Record { - const sourcesByLanguage = Object.groupBy(sources, (source) => source.lang); + const sourcesByLanguage = Object.groupBy(sources, (source) => Sources.getLanguage(source)); const sourcesBySortedLanguage = Object.entries(sourcesByLanguage).toSorted(([a], [b]) => langSortCmp(a, b)); const sortedSourcesBySortedLanguage = sourcesBySortedLanguage.map(([language, sourcesOfLanguage]) => [ language, @@ -51,7 +59,9 @@ export class Sources { .filter((source) => showNsfw || !source.isNsfw || (keepLocalSource && Sources.isLocalSource(source))) .filter( (source) => - !languages || languages.includes(source.lang) || (keepLocalSource && Sources.isLocalSource(source)), + !languages || + languages.includes(Sources.getLanguage(source)) || + (keepLocalSource && Sources.isLocalSource(source)), ); }