about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2022-11-29 09:29:57 -0600
committerPaul Frazee <pfrazee@gmail.com>2022-11-29 09:29:57 -0600
commit57f2d1d59fb4ce435fef6f99b84db6d7b4667127 (patch)
treecf81f2b0b134d58d7495aa89009e0e85864b894b
parent88c868dd808d204fc29deb162609de984745b951 (diff)
downloadvoidsky-57f2d1d59fb4ce435fef6f99b84db6d7b4667127.tar.zst
Decode html entities in link embeds
-rw-r--r--package.json2
-rw-r--r--src/lib/link-meta.ts5
-rw-r--r--src/view/com/util/PostEmbeds.tsx7
-rw-r--r--yarn.lock5
4 files changed, 12 insertions, 7 deletions
diff --git a/package.json b/package.json
index 6d54102c8..44b47d53c 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,7 @@
     "@zxing/text-encoding": "^0.9.0",
     "base64-js": "^1.5.1",
     "email-validator": "^2.0.4",
+    "he": "^1.2.0",
     "lodash.chunk": "^4.2.0",
     "lodash.omit": "^4.5.0",
     "lru_map": "^0.4.1",
@@ -53,6 +54,7 @@
     "@babel/core": "^7.12.9",
     "@babel/runtime": "^7.12.5",
     "@react-native-community/eslint-config": "^2.0.0",
+    "@types/he": "^1.1.2",
     "@types/jest": "^26.0.23",
     "@types/lodash.chunk": "^4.2.7",
     "@types/lodash.omit": "^4.5.7",
diff --git a/src/lib/link-meta.ts b/src/lib/link-meta.ts
index b48d920a1..c1739ae3b 100644
--- a/src/lib/link-meta.ts
+++ b/src/lib/link-meta.ts
@@ -1,3 +1,4 @@
+import he from 'he'
 import {
   extractHtmlMeta,
   isBskyAppUrl,
@@ -59,8 +60,10 @@ export async function getLinkMeta(url: string): Promise<LinkMeta> {
     const httpRes = await fetch(url)
     const httpResBody = await httpRes.text()
     const httpResMeta = extractHtmlMeta(httpResBody)
-    meta.title = httpResMeta.title
+    meta.title = httpResMeta.title ? he.decode(httpResMeta.title) : undefined
     meta.description = httpResMeta.description
+      ? he.decode(httpResMeta.description)
+      : undefined
     // TODO meta.image = httpResMeta.image
   } catch (e) {
     // failed
diff --git a/src/view/com/util/PostEmbeds.tsx b/src/view/com/util/PostEmbeds.tsx
index ca02aba84..1591c658a 100644
--- a/src/view/com/util/PostEmbeds.tsx
+++ b/src/view/com/util/PostEmbeds.tsx
@@ -9,12 +9,7 @@ import {
 } from 'react-native'
 import {Entity} from '../../../third-party/api/src/client/types/app/bsky/feed/post'
 import {Link} from '../util/Link'
-import {
-  LinkMeta,
-  getLinkMeta,
-  getLikelyType,
-  LikelyType,
-} from '../../../lib/link-meta'
+import {LinkMeta, getLikelyType, LikelyType} from '../../../lib/link-meta'
 import {colors} from '../../lib/styles'
 import {useStores} from '../../../state'
 
diff --git a/yarn.lock b/yarn.lock
index 21f33f82a..1160158e1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2448,6 +2448,11 @@
   resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.41.tgz#f6ecf57d1b12d2befcce00e928a6a097c22980aa"
   integrity sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==
 
+"@types/he@^1.1.2":
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/@types/he/-/he-1.1.2.tgz#0c8b275f36d2b8b651104638e4d45693349c3953"
+  integrity sha512-kSJPcLO1x+oolc0R89pUl2kozldQ/fVQ1C1p5mp8fPoLdF/ZcBvckaTC2M8xXh3GYendXvCpy5m/a2eSbfgNgw==
+
 "@types/html-minifier-terser@^6.0.0":
   version "6.1.0"
   resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35"