1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import { render } from "https://esm.town/v/dedes/render";
import { submitNote } from "https://esm.town/v/dedes/submitNote";
import { isRightPassword } from "https://esm.town/v/dedes/isRightPassword";
import { getNotes } from "https://esm.town/v/dedes/getNotes";
import { getHome } from "https://esm.town/v/dedes/getHome";
export async function home(req: express.Request, res: express.Response) {
try {
const currentPage = req.query.page || "home";
type PagePart = () => Promise<string>;
type PageLayout = {
title: PagePart;
body: PagePart;
};
const pages: Record<string, PageLayout> = {
home: {
title: async () => "There you are!",
body: async () => await getHome(),
},
til: {
title: async () => "TIL",
body: async () => "<h1>This is the TIL page content</h1>",
},
remember: {
title: async () => "Remember Remember!",
body: async () => await getNotes(req),
},
};
let pageToRender;
if (req.method === "POST" && req.query.page === "remember") {
const { password } = req.body;
if (await isRightPassword(password)) {
await submitNote(req);
}
pageToRender = await render(currentPage, pages);
res.redirect("/v1/express/dedes.home?page=remember");
} else {
pageToRender = await render(currentPage, pages);
res.send(pageToRender);
}
} catch (error) {
// Handle any errors that occurred during processing
console.error(error);
res.status(500).send("Internal Server Error");
}
}