diff --git a/src/components/badge-manager.tsx b/src/components/badge-manager.tsx index 3b96b45..5dcd043 100644 --- a/src/components/badge-manager.tsx +++ b/src/components/badge-manager.tsx @@ -57,6 +57,7 @@ type StoreApp = { title: string files: string[] iconUrl?: string + description?: string } type AutosaveState = 'saved' | 'pending' | 'saving' | 'error' @@ -172,7 +173,7 @@ async function collectDroppedFiles(dataTransfer: DataTransfer) { return (await Promise.all(entries.map((entry) => visit(entry)))).flat() } -export function BadgeManager() { +export function BadgeManager({ appDescriptions = {} }: { appDescriptions?: Record }) { const [port, setPort] = useState(null) const portRef = useRef(null) const [diskRoot, setDiskRoot] = useState(null) @@ -331,6 +332,7 @@ export function BadgeManager() { title: titleForApp(name), files: files.sort(), iconUrl: files.includes('icon.png') ? `https://raw.githubusercontent.com/badger/home/main/badge/apps/${name}/icon.png` : undefined, + description: appDescriptions[name], })) .sort((left, right) => left.title.localeCompare(right.title)) setStoreApps(loadedApps) @@ -903,7 +905,7 @@ export function BadgeManager() { const queued = pendingApps.some((item) => item.name === app.name) const installed = apps.some((item) => item.name === app.name) const needsRepair = legacyApps.includes(app.name) - return
{app.iconUrl ? :
}

{app.title}

+ return
{app.iconUrl ? :
}

{app.title}

{app.description &&

{app.description}

}
})} event.target.files && addFiles(event.target.files)} /> diff --git a/src/pages/edit.astro b/src/pages/edit.astro index 5fb4c34..57b5a5e 100644 --- a/src/pages/edit.astro +++ b/src/pages/edit.astro @@ -2,13 +2,24 @@ import Layout from '@/layouts/Layout.astro' import { BadgeManager } from '@/components/badge-manager' import EditorTools from '@/components/editor-tools.astro' +import { getCollection } from 'astro:content' + +const apps = await getCollection('apps') +// Catalog folders from badger/home are matched by content slug and by the badge +// folder name in fileLocation (for example quest for monaquest). +const appDescriptions = Object.fromEntries( + apps.flatMap((app) => { + const folder = app.data.fileLocation.split('/').filter(Boolean).at(-1) + return [app.slug, ...(folder ? [folder] : [])].map((key) => [key, app.data.description]) + }) +) ---
- +