From 71a981ed11e34042a19ca7a807d72eee927aa82e Mon Sep 17 00:00:00 2001
From: Calvin Rohloff <zickzenni@gmail.com>
Date: Wed, 18 Sep 2024 11:04:59 +0200
Subject: [PATCH] fix: useGif crashing renderer when no valid url was given

---
 src/renderer/hooks/useGif.ts | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/src/renderer/hooks/useGif.ts b/src/renderer/hooks/useGif.ts
index 12fb0c9..b5dafb9 100644
--- a/src/renderer/hooks/useGif.ts
+++ b/src/renderer/hooks/useGif.ts
@@ -7,20 +7,24 @@ export default function useGif(url: string): TenorGif | null {
   const [gif, setGif] = useState<TenorGif | null>(null);
 
   useEffect(() => {
-    const uri = new URL(url);
+    try {
+      const uri = new URL(url);
 
-    if (allowedHosts.includes(uri.host.toLowerCase())) {
+      if (allowedHosts.includes(uri.host.toLowerCase())) {
+        setGif(null);
+        return;
+      }
+
+      window.electron.ipcRenderer
+        .invoke('tenor:fetch-gif', url)
+        .then((result: TenorFetchResult) => {
+          setGif(result.gif);
+          return true;
+        })
+        .catch((err) => console.error(err));
+    } catch {
       setGif(null);
-      return;
     }
-
-    window.electron.ipcRenderer
-      .invoke('tenor:fetch-gif', url)
-      .then((result: TenorFetchResult) => {
-        setGif(result.gif);
-        return true;
-      })
-      .catch((err) => console.error(err));
   }, [url]);
 
   return gif;