Only generate manifest if it isn't already in memory (#2272)

* Only generate manifest if it isn't already in memory

* Remove forward header

---------

Co-authored-by: SleeplessOne <insomnia-void@protonmail.com>
This commit is contained in:
SleeplessOne1917 2023-12-06 13:57:31 +00:00 committed by GitHub
parent fc234716b0
commit 8a722c939c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 32 deletions

@ -1 +1 @@
Subproject commit 1d3cf4a38da9e8d093b977ff83baaa4dab56af71 Subproject commit 45d478e44fb12f0748640cf0416724e42e37d9a6

View file

@ -1,23 +1,19 @@
import { getHttpBaseExternal, getHttpBaseInternal } from "@utils/env"; import { getHttpBaseInternal } from "@utils/env";
import type { Request, Response } from "express"; import type { Request, Response } from "express";
import { LemmyHttp } from "lemmy-js-client"; import { LemmyHttp } from "lemmy-js-client";
import { wrapClient } from "../../shared/services/HttpService"; import { wrapClient } from "../../shared/services/HttpService";
import generateManifestJson from "../utils/generate-manifest-json"; import generateManifestJson from "../utils/generate-manifest-json";
import { setForwardedHeaders } from "../utils/set-forwarded-headers";
let manifest: Awaited<ReturnType<typeof generateManifestJson>> | undefined = let manifest: Awaited<ReturnType<typeof generateManifestJson>> | undefined =
undefined; undefined;
export default async (req: Request, res: Response) => { export default async (_req: Request, res: Response) => {
if (!manifest || manifest.start_url !== getHttpBaseExternal()) { if (!manifest) {
const headers = setForwardedHeaders(req.headers); const client = wrapClient(new LemmyHttp(getHttpBaseInternal()));
const client = wrapClient(
new LemmyHttp(getHttpBaseInternal(), { headers }),
);
const site = await client.getSite(); const site = await client.getSite();
if (site.state === "success") { if (site.state === "success") {
manifest = await generateManifestJson(site.data); manifest = await generateManifestJson(site.data.site_view.site);
} else { } else {
res.sendStatus(500); res.sendStatus(500);
return; return;

View file

@ -1,7 +1,6 @@
import { readFile } from "fs/promises"; import { readFile } from "fs/promises";
import { GetSiteResponse } from "lemmy-js-client"; import { Site } from "lemmy-js-client";
import path from "path"; import path from "path";
import sharp from "sharp";
import { fetchIconPng } from "./fetch-icon-png"; import { fetchIconPng } from "./fetch-icon-png";
const iconSizes = [72, 96, 128, 144, 152, 192, 384, 512]; const iconSizes = [72, 96, 128, 144, 152, 192, 384, 512];
@ -13,13 +12,7 @@ const defaultLogoPathDirectory = path.join(
"icons", "icons",
); );
export default async function ({ export default async function (site: Site) {
my_user,
site_view: {
site,
local_site: { community_creation_admin_only },
},
}: GetSiteResponse) {
const icon = site.icon ? await fetchIconPng(site.icon) : null; const icon = site.icon ? await fetchIconPng(site.icon) : null;
return { return {
@ -38,6 +31,7 @@ export default async function ({
).then(buf => buf.toString("base64")); ).then(buf => buf.toString("base64"));
if (icon) { if (icon) {
const sharp = (await import("sharp")).default;
src = await sharp(icon) src = await sharp(icon)
.resize(size, size) .resize(size, size)
.png() .png()
@ -72,19 +66,7 @@ export default async function ({
short_name: "Create Post", short_name: "Create Post",
description: "Create a post.", description: "Create a post.",
}, },
].concat( ],
my_user?.local_user_view.local_user.admin ||
!community_creation_admin_only
? [
{
name: "Create Community",
url: "/create_community",
short_name: "Create Community",
description: "Create a community",
},
]
: [],
),
related_applications: [ related_applications: [
{ {
platform: "f-droid", platform: "f-droid",