Group obsolete extensions

This commit is contained in:
schroda
2023-06-22 22:13:10 +02:00
parent 2bbfb5272f
commit 95ca2fabae
2 changed files with 12 additions and 2 deletions

View File

@@ -40,6 +40,7 @@ const allLangs: string[] = [];
function groupExtensions(extensions: IExtension[]): GroupedExtensionsResult { function groupExtensions(extensions: IExtension[]): GroupedExtensionsResult {
allLangs.length = 0; // empty the array allLangs.length = 0; // empty the array
const sortedExtenions: GroupedExtensions = { const sortedExtenions: GroupedExtensions = {
[ExtensionState.OBSOLETE]: [],
[ExtensionState.INSTALLED]: [], [ExtensionState.INSTALLED]: [],
[ExtensionState.UPDATE_PENDING]: [], [ExtensionState.UPDATE_PENDING]: [],
[DefaultLanguage.ALL]: [], [DefaultLanguage.ALL]: [],
@@ -56,9 +57,14 @@ function groupExtensions(extensions: IExtension[]): GroupedExtensionsResult {
if (extension.installed) { if (extension.installed) {
if (extension.hasUpdate) { if (extension.hasUpdate) {
sortedExtenions[ExtensionState.UPDATE_PENDING].push(extension); sortedExtenions[ExtensionState.UPDATE_PENDING].push(extension);
} else { return;
sortedExtenions[ExtensionState.INSTALLED].push(extension);
} }
if (extension.obsolete) {
sortedExtenions[ExtensionState.OBSOLETE].push(extension);
return;
}
sortedExtenions[ExtensionState.INSTALLED].push(extension);
} else { } else {
sortedExtenions[extension.lang].push(extension); sortedExtenions[extension.lang].push(extension);
} }
@@ -66,6 +72,7 @@ function groupExtensions(extensions: IExtension[]): GroupedExtensionsResult {
allLangs.sort(langSortCmp); allLangs.sort(langSortCmp);
const result: GroupedExtensionsResult<ExtensionState | DefaultLanguage | string> = [ const result: GroupedExtensionsResult<ExtensionState | DefaultLanguage | string> = [
[ExtensionState.OBSOLETE, sortedExtenions[ExtensionState.OBSOLETE]],
[ExtensionState.UPDATE_PENDING, sortedExtenions[ExtensionState.UPDATE_PENDING]], [ExtensionState.UPDATE_PENDING, sortedExtenions[ExtensionState.UPDATE_PENDING]],
[ExtensionState.INSTALLED, sortedExtenions[ExtensionState.INSTALLED]], [ExtensionState.INSTALLED, sortedExtenions[ExtensionState.INSTALLED]],
[DefaultLanguage.ALL, sortedExtenions[DefaultLanguage.ALL]], [DefaultLanguage.ALL, sortedExtenions[DefaultLanguage.ALL]],

View File

@@ -13,6 +13,7 @@ import { DefaultLanguage, langCodeToName } from '@/util/language';
export enum ExtensionState { export enum ExtensionState {
INSTALLED = 'INSTALLED', INSTALLED = 'INSTALLED',
UPDATE_PENDING = 'UPDATE_PENDING', UPDATE_PENDING = 'UPDATE_PENDING',
OBSOLETE = 'OBSOLETE',
} }
export type GroupedExtensionsResult<KEY extends string = string> = [KEY, IExtension[]][]; export type GroupedExtensionsResult<KEY extends string = string> = [KEY, IExtension[]][];
@@ -32,6 +33,7 @@ export type GroupedExtensions = GroupedByExtensionState & GroupedByLanguage;
export const extensionLanguageToTranslationKey: { [state in ExtensionState | DefaultLanguage]: TranslationKey } = { export const extensionLanguageToTranslationKey: { [state in ExtensionState | DefaultLanguage]: TranslationKey } = {
[ExtensionState.INSTALLED]: 'extension.state.label.installed', [ExtensionState.INSTALLED]: 'extension.state.label.installed',
[ExtensionState.UPDATE_PENDING]: 'extension.state.label.update_pending', [ExtensionState.UPDATE_PENDING]: 'extension.state.label.update_pending',
[ExtensionState.OBSOLETE]: 'extension.state.label.obsolete',
[DefaultLanguage.ALL]: 'extension.language.all', [DefaultLanguage.ALL]: 'extension.language.all',
[DefaultLanguage.OTHER]: 'extension.language.other', [DefaultLanguage.OTHER]: 'extension.language.other',
[DefaultLanguage.LOCAL_SOURCE]: 'source.local_source.title', [DefaultLanguage.LOCAL_SOURCE]: 'source.local_source.title',
@@ -41,6 +43,7 @@ export const isExtensionStateOrLanguage = (languageCode: string): boolean =>
[ [
ExtensionState.INSTALLED, ExtensionState.INSTALLED,
ExtensionState.UPDATE_PENDING, ExtensionState.UPDATE_PENDING,
ExtensionState.OBSOLETE,
DefaultLanguage.ALL, DefaultLanguage.ALL,
DefaultLanguage.OTHER, DefaultLanguage.OTHER,
DefaultLanguage.LOCAL_SOURCE, DefaultLanguage.LOCAL_SOURCE,