From 7301ff3c9e779cd28a3dcd0f449dfd0c37123a06 Mon Sep 17 00:00:00 2001 From: Tuur Lievens Date: Fri, 29 Oct 2021 03:21:06 +0200 Subject: [PATCH] fix: improve support for embedding complex urls (#117) --- components/portal/link-toolbar/link-toolbar.tsx | 2 +- pages/api/extract.ts | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/components/portal/link-toolbar/link-toolbar.tsx b/components/portal/link-toolbar/link-toolbar.tsx index 74bb9bd..2acd84c 100644 --- a/components/portal/link-toolbar/link-toolbar.tsx +++ b/components/portal/link-toolbar/link-toolbar.tsx @@ -31,7 +31,7 @@ const LinkToolbar = () => { if (!result) { return } - const bookmarkUrl = `/api/extract?type=${type}&url=${href}` + const bookmarkUrl = `/api/extract?type=${type}&url=${encodeURIComponent(href)}` const transaction = state.tr.replaceWith( result.pos, result.pos + result.node.nodeSize, diff --git a/pages/api/extract.ts b/pages/api/extract.ts index 8e044c3..6b8154f 100644 --- a/pages/api/extract.ts +++ b/pages/api/extract.ts @@ -7,10 +7,11 @@ const expires = 86400 export default api() .use(useReferrer) .get(async (req, res) => { - const { url } = req.query as { url: string } + const url = decodeURIComponent((req.query as { url: string }).url) if (!url) { return res.APIError.NOT_SUPPORTED.throw('missing url') } + const result = await unfurl(url as string, { oembed: true, }) @@ -39,6 +40,12 @@ export default api() ...result.open_graph, url: `${url}.pibb`, } + } else if (/(app|viewer).diagrams.net\//.test(url)) { + const data = url.split('#')?.[1] + result.open_graph = { + ...result.open_graph, + url: `https://viewer.diagrams.net/?highlight=0000ff&edit=_blank&layers=1&nav=1#${data}`, + } } res.json(result)