Update server.js to use new welshman implementation
This commit is contained in:
parent
56b9e6f031
commit
d5dbb7fba1
1 changed files with 17 additions and 15 deletions
32
server.js
32
server.js
|
|
@ -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],
|
||||||
]
|
]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue