From 7ebd0e760163434bf6ca3b95a7d6572396caf0e8 Mon Sep 17 00:00:00 2001
From: Lim Chee Aun <cheeaun@gmail.com>
Date: Thu, 23 Feb 2023 22:53:28 +0800
Subject: [PATCH] Don't refetch failed unfurls

---
 src/components/status.jsx | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/components/status.jsx b/src/components/status.jsx
index c7ab5465..4328ce67 100644
--- a/src/components/status.jsx
+++ b/src/components/status.jsx
@@ -1180,11 +1180,15 @@ function isMastodonLinkMaybe(url) {
 }
 
 const denylistDomains = /(twitter|github)\.com/i;
+const failedUnfurls = {};
 
 function _unfurlMastodonLink(instance, url) {
   if (denylistDomains.test(url)) {
     return;
   }
+  if (failedUnfurls[url]) {
+    return;
+  }
   const instanceRegex = new RegExp(instance + '/');
   if (instanceRegex.test(states.unfurledLinks[url]?.url)) {
     return Promise.resolve(states.unfurledLinks[url]);
@@ -1211,10 +1215,12 @@ function _unfurlMastodonLink(instance, url) {
         states.unfurledLinks[url] = result;
         return result;
       } else {
+        failedUnfurls[url] = true;
         throw new Error('No results');
       }
     })
     .catch((e) => {
+      failedUnfurls[url] = true;
       console.warn(e);
       // Silently fail
     });