1 import { getHttpBaseExternal, getHttpBaseInternal } from "@utils/env";
2 import fetch from "cross-fetch";
3 import type { Request, Response } from "express";
4 import { LemmyHttp } from "lemmy-js-client";
5 import { wrapClient } from "../../shared/services/HttpService";
6 import generateManifestJson from "../utils/generate-manifest-json";
7 import { setForwardedHeaders } from "../utils/set-forwarded-headers";
9 let manifest: Awaited<ReturnType<typeof generateManifestJson>> | undefined =
12 export default async (req: Request, res: Response) => {
13 if (!manifest || manifest.start_url !== getHttpBaseExternal()) {
14 const headers = setForwardedHeaders(req.headers);
15 const client = wrapClient(
16 new LemmyHttp(getHttpBaseInternal(), { fetchFunction: fetch, headers })
18 const site = await client.getSite({});
20 if (site.state === "success") {
21 manifest = await generateManifestJson(site.data);
28 res.setHeader("content-type", "application/manifest+json");