diff --git a/src/screens/Extensions.tsx b/src/screens/Extensions.tsx index 61615a96..a143bf4a 100644 --- a/src/screens/Extensions.tsx +++ b/src/screens/Extensions.tsx @@ -40,6 +40,7 @@ const allLangs: string[] = []; function groupExtensions(extensions: IExtension[]): GroupedExtensionsResult { allLangs.length = 0; // empty the array const sortedExtenions: GroupedExtensions = { + [ExtensionState.OBSOLETE]: [], [ExtensionState.INSTALLED]: [], [ExtensionState.UPDATE_PENDING]: [], [DefaultLanguage.ALL]: [], @@ -56,9 +57,14 @@ function groupExtensions(extensions: IExtension[]): GroupedExtensionsResult { if (extension.installed) { if (extension.hasUpdate) { sortedExtenions[ExtensionState.UPDATE_PENDING].push(extension); - } else { - sortedExtenions[ExtensionState.INSTALLED].push(extension); + return; } + if (extension.obsolete) { + sortedExtenions[ExtensionState.OBSOLETE].push(extension); + return; + } + + sortedExtenions[ExtensionState.INSTALLED].push(extension); } else { sortedExtenions[extension.lang].push(extension); } @@ -66,6 +72,7 @@ function groupExtensions(extensions: IExtension[]): GroupedExtensionsResult { allLangs.sort(langSortCmp); const result: GroupedExtensionsResult = [ + [ExtensionState.OBSOLETE, sortedExtenions[ExtensionState.OBSOLETE]], [ExtensionState.UPDATE_PENDING, sortedExtenions[ExtensionState.UPDATE_PENDING]], [ExtensionState.INSTALLED, sortedExtenions[ExtensionState.INSTALLED]], [DefaultLanguage.ALL, sortedExtenions[DefaultLanguage.ALL]], diff --git a/src/screens/util/Extensions.ts b/src/screens/util/Extensions.ts index d3d5bcb8..10d3e3e2 100644 --- a/src/screens/util/Extensions.ts +++ b/src/screens/util/Extensions.ts @@ -13,6 +13,7 @@ import { DefaultLanguage, langCodeToName } from '@/util/language'; export enum ExtensionState { INSTALLED = 'INSTALLED', UPDATE_PENDING = 'UPDATE_PENDING', + OBSOLETE = 'OBSOLETE', } export type GroupedExtensionsResult = [KEY, IExtension[]][]; @@ -32,6 +33,7 @@ export type GroupedExtensions = GroupedByExtensionState & GroupedByLanguage; export const extensionLanguageToTranslationKey: { [state in ExtensionState | DefaultLanguage]: TranslationKey } = { [ExtensionState.INSTALLED]: 'extension.state.label.installed', [ExtensionState.UPDATE_PENDING]: 'extension.state.label.update_pending', + [ExtensionState.OBSOLETE]: 'extension.state.label.obsolete', [DefaultLanguage.ALL]: 'extension.language.all', [DefaultLanguage.OTHER]: 'extension.language.other', [DefaultLanguage.LOCAL_SOURCE]: 'source.local_source.title', @@ -41,6 +43,7 @@ export const isExtensionStateOrLanguage = (languageCode: string): boolean => [ ExtensionState.INSTALLED, ExtensionState.UPDATE_PENDING, + ExtensionState.OBSOLETE, DefaultLanguage.ALL, DefaultLanguage.OTHER, DefaultLanguage.LOCAL_SOURCE,