Introduce "Extension info" screen

This commit is contained in:
schroda
2025-06-22 23:12:54 +02:00
parent 998400327f
commit 2e105a0539
16 changed files with 1236 additions and 150 deletions

View File

@@ -23,8 +23,14 @@ import {
toComparableLanguages,
toUniqueLanguageCodes,
} from '@/modules/core/utils/Languages.ts';
import { extensionLanguageToTranslationKey } from '@/modules/extension/Extensions.constants.ts';
import {
EXTENSION_ACTION_TO_FAILURE_TRANSLATION_KEY_MAP,
extensionLanguageToTranslationKey,
} from '@/modules/extension/Extensions.constants.ts';
import { enhancedCleanup } from '@/util/Strings.ts';
import { requestManager } from '@/lib/requests/RequestManager.ts';
import { makeToast } from '@/modules/core/utils/Toast.ts';
import { getErrorMessage } from '@/lib/HelperFunctions.ts';
export const getInstalledState = (
isInstalled: boolean,
@@ -137,3 +143,32 @@ export const filterExtensions = (
.filter((extension) => showNsfw === undefined || showNsfw || !extension.isNsfw)
.filter((extension) => query == null || enhancedCleanup(extension.name).includes(enhancedCleanup(query)));
};
export const updateExtension = async (
pkgName: TExtension['pkgName'],
isObsolete: boolean,
action: ExtensionAction,
): Promise<void> => {
try {
switch (action) {
case ExtensionAction.INSTALL:
await requestManager.updateExtension(pkgName, { install: true, isObsolete }).response;
break;
case ExtensionAction.UNINSTALL:
await requestManager.updateExtension(pkgName, { uninstall: true, isObsolete }).response;
break;
case ExtensionAction.UPDATE:
await requestManager.updateExtension(pkgName, { update: true, isObsolete }).response;
break;
default:
throw new Error(`Unexpected ExtensionAction "${action}"`);
}
} catch (e) {
makeToast(
t(EXTENSION_ACTION_TO_FAILURE_TRANSLATION_KEY_MAP[action], { count: 1 }),
'error',
getErrorMessage(e),
);
throw e;
}
};