34 lines
964 B
TypeScript
34 lines
964 B
TypeScript
|
import { Handlers, PageProps } from "$fresh/server.ts";
|
||
|
import { Database, Option } from "types";
|
||
|
import { get_db_obj } from "db";
|
||
|
import Interactive from "../../../islands/Interactive.tsx";
|
||
|
|
||
|
export const handler: Handlers<Option<Database>> = {
|
||
|
async GET(req, ctx) {
|
||
|
const db = await get_db_obj();
|
||
|
if (
|
||
|
db.isNone() ||
|
||
|
(db.isSome() &&
|
||
|
!db.unwrap().conversations[ctx.params.conversation_id])
|
||
|
) {
|
||
|
return ctx.renderNotFound();
|
||
|
}
|
||
|
return ctx.render(db);
|
||
|
},
|
||
|
};
|
||
|
|
||
|
export default function ConversationPreview({
|
||
|
data,
|
||
|
params,
|
||
|
}: PageProps<Option<Database>>) {
|
||
|
if (
|
||
|
data.isSome() &&
|
||
|
params.conversation_id &&
|
||
|
data.unwrap().conversations[params.conversation_id]
|
||
|
) {
|
||
|
return <Interactive conv={params.conversation_id} db={data.unwrap()} />;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//TODO: keyboard shortcut (advertised elsewhere) that activates interactive mode
|