From 22fbbe3ad52f9ebe74d25dbb7c3785ac1acea478 Mon Sep 17 00:00:00 2001 From: khalilcodes Date: Wed, 18 May 2022 20:12:38 +0300 Subject: [PATCH] [site/twitter-embeds]: add checks for deleted/not-found tweets --- site/components/TwitterEmbed.js | 79 +++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 34 deletions(-) diff --git a/site/components/TwitterEmbed.js b/site/components/TwitterEmbed.js index 4fd1956..d5b0f59 100644 --- a/site/components/TwitterEmbed.js +++ b/site/components/TwitterEmbed.js @@ -1,10 +1,14 @@ import { useEffect, useState, useRef } from "react"; const twitterWidgetJs = "https://platform.twitter.com/widgets.js"; +const message = "Loading tweet..." export default function TwitterEmbed({ url }) { let ref = useRef(null) - const [isLoading, setLoading] = useState(true) + const [state, setState] = useState({ + isLoading: true, + message: message + }) const tweetId = url.split("status/").pop() @@ -29,8 +33,9 @@ export default function TwitterEmbed({ url }) { const renderTweet = () => { window.twttr.widgets.createTweet(tweetId, ref.current, { theme: "dark" - }).then(() => { - setLoading(false) + }).then((el) => { + if (el) return setState(prev => ({ ...prev, isLoading: false })) + return setState(prev => ({ ...prev, message: "Sorry, this tweet could not be found." })) }) } @@ -41,45 +46,51 @@ export default function TwitterEmbed({ url }) { } return () => { - setLoading(true); + setState(prev => ({ ...prev, isLoading: true })); }; },[]); return ( <> - {isLoading &&
-
- +
+ + Twitter + + +

{state.message}

+
+
- Twitter - - - Loading tweet... -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
} + )}
);