diff --git a/src/web/pug/guild.pug b/src/web/pug/guild.pug index 536ea4c..9f12d38 100644 --- a/src/web/pug/guild.pug +++ b/src/web/pug/guild.pug @@ -69,7 +69,11 @@ block body .grid--row-start2 button.s-btn.s-btn__filled.htmx-indicator Invite div - != svg + - + let size = 105 + let p = new URLSearchParams() + p.set("data", `https://bridge.cadence.moe/invite?nonce=${nonce}`) + img(width=size height=size src=rel(`/qr?${p}`)) h2.mt48.fs-headline1 Moderation diff --git a/src/web/routes/guild.js b/src/web/routes/guild.js index 5944131..6916d56 100644 --- a/src/web/routes/guild.js +++ b/src/web/routes/guild.js @@ -6,7 +6,6 @@ const {H3Event, defineEventHandler, sendRedirect, useSession, createError, getVa const {randomUUID} = require("crypto") const {LRUCache} = require("lru-cache") const Ty = require("../../types") -const uqr = require("uqr") const {discord, as, sync, select} = require("../../passthrough") /** @type {import("../pug-sync")} */ @@ -94,17 +93,10 @@ as.router.get("/guild", defineEventHandler(async event => { const nonce = randomUUID() validNonce.set(nonce, guild_id) - const data = `${reg.ooye.bridge_origin}/invite?nonce=${nonce}` - // necessary to scale the svg pixel-perfectly on the page - // https://github.com/unjs/uqr/blob/244952a8ba2d417f938071b61e11fb1ff95d6e75/src/svg.ts#L24 - const generatedSvg = uqr.renderSVG(data, {pixelSize: 3}) - const svg = generatedSvg.replace(/viewBox="0 0 ([0-9]+) ([0-9]+)"/, `data-nonce="${nonce}" width="$1" height="$2" $&`) - assert.notEqual(svg, generatedSvg) - // Unlinked guild if (!row) { const links = getChannelRoomsLinks(guild_id, []) - return pugSync.render(event, "guild.pug", {guild, guild_id, svg, ...links}) + return pugSync.render(event, "guild.pug", {guild, guild_id, nonce, ...links}) } // Linked guild @@ -113,7 +105,7 @@ as.router.get("/guild", defineEventHandler(async event => { const banned = await api.getMembers(row.space_id, "ban") const rooms = await api.getFullHierarchy(row.space_id) const links = getChannelRoomsLinks(guild_id, rooms) - return pugSync.render(event, "guild.pug", {guild, guild_id, svg, mods, banned, ...links, ...row}) + return pugSync.render(event, "guild.pug", {guild, guild_id, nonce, mods, banned, ...links, ...row}) })) as.router.get("/invite", defineEventHandler(async event => { diff --git a/src/web/routes/guild.test.js b/src/web/routes/guild.test.js index 3952d14..f89dfee 100644 --- a/src/web/routes/guild.test.js +++ b/src/web/routes/guild.test.js @@ -78,7 +78,7 @@ test("web guild: can view bridged guild", async t => { } }) t.match(content, /