Update server.js to use new welshman implementation

This commit is contained in:
Jon Staab 2026-08-18 15:13:12 -07:00
parent 56b9e6f031
commit d5dbb7fba1

View file

@ -5,8 +5,8 @@ import {fileURLToPath} from "node:url"
import "dotenv/config" import "dotenv/config"
import {serve} from "@hono/node-server" import {serve} from "@hono/node-server"
import {serveStatic} from "@hono/node-server/serve-static" import {serveStatic} from "@hono/node-server/serve-static"
import {loadRelay} from "@welshman/app" import {App, Relays} from "@welshman/app"
import {displayRelayUrl, normalizeRelayUrl} from "@welshman/util" import {normalizeRelayUrl} from "@welshman/util"
import {load} from "cheerio" import {load} from "cheerio"
import {Hono} from "hono" import {Hono} from "hono"
@ -55,10 +55,12 @@ const requestUrlFromContext = context => {
return requestUrl return requestUrl
} }
const relays = new App().use(Relays)
const fetchRelayMeta = async relayUrl => { const fetchRelayMeta = async relayUrl => {
if (!relayUrl) return undefined if (!relayUrl) return undefined
try { try {
return await loadRelay(normalizeRelayUrl(relayUrl)) return await relays.load(normalizeRelayUrl(relayUrl))
} catch (err) { } catch (err) {
console.error(`Failed to fetch relay metadata for ${relayUrl}:`, err) console.error(`Failed to fetch relay metadata for ${relayUrl}:`, err)
return undefined return undefined
@ -76,7 +78,7 @@ const getMetadataForInvite = async (url, match) => {
const relayMetadata = await fetchRelayMeta(relayParam) const relayMetadata = await fetchRelayMeta(relayParam)
if (!relayMetadata) return undefined if (!relayMetadata) return undefined
const relayDisplay = displayRelayUrl(relayParam) const relayDisplay = relayMetadata.displayUrl()
const spaceName = relayMetadata.name const spaceName = relayMetadata.name
const relayDescription = relayMetadata.description const relayDescription = relayMetadata.description
@ -97,10 +99,7 @@ const getMetadataForInvite = async (url, match) => {
const description = parts.join(" ") const description = parts.join(" ")
const image = const image =
relayMetadata.icon || relayMetadata.icon || relayMetadata.picture || relayMetadata.image || buildDefaultImage(url)
relayMetadata.picture ||
relayMetadata.image ||
buildDefaultImage(url)
return { return {
title, title,
@ -118,16 +117,13 @@ const getMetadataForSpace = async (url, match) => {
const relayMetadata = await fetchRelayMeta(relayParam) const relayMetadata = await fetchRelayMeta(relayParam)
if (!relayMetadata) return undefined if (!relayMetadata) return undefined
const spaceName = relayMetadata.name || displayRelayUrl(relayParam) const spaceName = relayMetadata.display()
return { return {
title: `${spaceName} on ${PLATFORM_NAME}`, title: `${spaceName} on ${PLATFORM_NAME}`,
description: relayMetadata.description || PLATFORM_DESCRIPTION, description: relayMetadata.description || PLATFORM_DESCRIPTION,
image: image:
relayMetadata.icon || relayMetadata.icon || relayMetadata.picture || relayMetadata.image || buildDefaultImage(url),
relayMetadata.picture ||
relayMetadata.image ||
buildDefaultImage(url),
url: url.toString(), url: url.toString(),
site: url.origin, site: url.origin,
} }
@ -170,8 +166,14 @@ const getMetadataForRoom = async (url, match) => {
const routes = [ const routes = [
[/^\/join\/?$/, getMetadataForInvite], [/^\/join\/?$/, getMetadataForInvite],
[/^\/spaces\/([^/]+)\/(calendar|chat|threads|polls|goals|classifieds|recent)\/?$/, getMetadataForSpaceSection], [
[/^\/spaces\/([^/]+)\/(calendar|threads|polls|goals|classifieds)\/([^/]+)\/?$/, getMetadataForSpaceItem], /^\/spaces\/([^/]+)\/(calendar|chat|threads|polls|goals|classifieds|recent)\/?$/,
getMetadataForSpaceSection,
],
[
/^\/spaces\/([^/]+)\/(calendar|threads|polls|goals|classifieds)\/([^/]+)\/?$/,
getMetadataForSpaceItem,
],
[/^\/spaces\/([^/]+)\/([^/]+)\/?$/, getMetadataForRoom], [/^\/spaces\/([^/]+)\/([^/]+)\/?$/, getMetadataForRoom],
[/^\/spaces\/([^/]+)\/?$/, getMetadataForSpace], [/^\/spaces\/([^/]+)\/?$/, getMetadataForSpace],
] ]