diff --git a/routes/(_islands)/AppNavigator.tsx b/routes/(_islands)/AppNavigator.tsx index a5f1c78..24d7dc5 100644 --- a/routes/(_islands)/AppNavigator.tsx +++ b/routes/(_islands)/AppNavigator.tsx @@ -3,25 +3,14 @@ export interface AppProperties { icon: string; } -type AppNavigatorProps = Record; - -export default async function AppNavigator(_props: AppNavigatorProps) { - - const apps: Record = {}; - - for await (const appDir of Deno.readDir("../(apps)")) { - try { - const properties: AppProperties = await import(`../(apps)/${appDir.name}/(_props)/props.ts`); - apps[appDir.name] = properties; - } - catch (error) { - console.error(`Couldn't import app "${appDir.name}": ${error}`); - } - } +type AppNavigatorProps = { + apps: Record; +}; +export default function AppNavigator(props: AppNavigatorProps) { return ( <> -

{JSON.stringify(apps)}

+

{JSON.stringify(props.apps)}

); } diff --git a/routes/apps.tsx b/routes/apps.tsx index 81a0e70..4238868 100644 --- a/routes/apps.tsx +++ b/routes/apps.tsx @@ -1,13 +1,30 @@ -import { FreshContext } from "$fresh/server.ts"; -import AppNavigator from "./(_islands)/AppNavigator.tsx"; +import { FreshContext, Handlers } from "$fresh/server.ts"; +import AppNavigator, { AppProperties } from "./(_islands)/AppNavigator.tsx"; + +export const handler: Handlers = { + async GET(_request, context) { + const apps: Record = {}; + + for await (const appDir of Deno.readDir("routes/(apps)")) { + try { + const properties: AppProperties = (await import( + `./(apps)/${appDir.name}/(_props)/props.ts` + )).default; + apps[appDir.name] = properties; + } catch (error) { + console.error(`Couldn't import app "${appDir.name}": ${error}`); + } + } + + return context.render(apps); + }, +}; // deno-lint-ignore require-await -export default async function About(_request: Request, _context: FreshContext) { +export default async function About(_request: Request, context: FreshContext) { return ( <> - { - // - } + ); }