]> Untitled Git - lemmy-ui.git/blob - src/server/handlers/theme-handler.ts
Merge branch 'main' into fix/fix-post-title-element
[lemmy-ui.git] / src / server / handlers / theme-handler.ts
1 import type { Request, Response } from "express";
2 import { existsSync } from "fs";
3 import path from "path";
4
5 const extraThemesFolder =
6   process.env["LEMMY_UI_EXTRA_THEMES_FOLDER"] || "./extra_themes";
7
8 export default async (req: Request, res: Response) => {
9   res.contentType("text/css");
10
11   const theme = req.params.name;
12
13   if (!theme.endsWith(".css")) {
14     res.statusCode = 400;
15     res.send("Theme must be a css file");
16   }
17
18   const customTheme = path.resolve(`./${extraThemesFolder}/${theme}`);
19
20   if (existsSync(customTheme)) {
21     res.sendFile(customTheme);
22   } else {
23     const internalTheme = path.resolve(`./dist/assets/css/themes/${theme}`);
24
25     // If the theme doesn't exist, just send litely
26     if (existsSync(internalTheme)) {
27       res.sendFile(internalTheme);
28     } else {
29       res.sendFile(path.resolve("./dist/assets/css/themes/litely.css"));
30     }
31   }
32 };