feat: ingest icon/banner/screenshots from source repo

This commit is contained in:
Linus Rath
2026-05-05 21:12:23 +02:00
parent da411af6d3
commit 9f67bc078a
5 changed files with 93 additions and 4 deletions
@@ -168,6 +168,11 @@ export async function GET(
}))
: [];
const fileUrl = (path: unknown): string | null =>
typeof path === 'string' && path
? new URL(`/api/v1/files/${path}`, DIRECTORY_URL).toString()
: null;
return NextResponse.json(
{
extension: {
@@ -184,6 +189,8 @@ export async function GET(
githubRepo: extension.githubRepo ?? null,
license: extension.license ?? null,
minAppVersion: extension.minAppVersion ?? null,
iconUrl: fileUrl(extension.iconPath),
bannerUrl: fileUrl(extension.bannerPath),
author: extension.author ?? null,
latestVersion,
versions,
+7
View File
@@ -60,9 +60,16 @@ export async function GET(request: NextRequest) {
const installedPlugins = new Set(pluginRegistry.plugins.map(p => p.id));
const installedThemes = new Set(themeRegistry.themes.map(t => t.id));
const fileUrl = (path: unknown): string | null =>
typeof path === 'string' && path
? new URL(`/api/v1/files/${path}`, DIRECTORY_URL).toString()
: null;
if (data.data) {
data.data = data.data.map((ext: Record<string, unknown>) => ({
...ext,
iconUrl: fileUrl(ext.iconPath),
bannerUrl: fileUrl(ext.bannerPath),
installed: ext.type === 'theme'
? installedThemes.has(ext.slug as string)
: installedPlugins.has(ext.slug as string),