From 55512a2eae27141506183b2262de942eb2b42bdd Mon Sep 17 00:00:00 2001
From: ayan4m1 <andrew@bulletlogic.com>
Date: Thu, 15 Jun 2023 08:48:54 -0400
Subject: [PATCH] wrap login call in try/catch for error handling

---
 src/shared/components/home/login.tsx | 56 +++++++++++++++-------------
 1 file changed, 30 insertions(+), 26 deletions(-)

diff --git a/src/shared/components/home/login.tsx b/src/shared/components/home/login.tsx
index 381c13b..3ddb4bc 100644
--- a/src/shared/components/home/login.tsx
+++ b/src/shared/components/home/login.tsx
@@ -160,38 +160,42 @@ export class Login extends Component<any, State> {
     if (username_or_email && password) {
       i.setState({ loginRes: { state: "loading" } });
 
-      const loginRes = await HttpService.client.login({
-        username_or_email,
-        password,
-        totp_2fa_token,
-      });
-      switch (loginRes.state) {
-        case "failed": {
-          if (loginRes.msg === "missing_totp_token") {
-            i.setState({ showTotp: true });
-            toast(i18n.t("enter_two_factor_code"), "info");
+      try {
+        const loginRes = await HttpService.client.login({
+          username_or_email,
+          password,
+          totp_2fa_token,
+        });
+        switch (loginRes.state) {
+          case "failed": {
+            if (loginRes.msg === "missing_totp_token") {
+              i.setState({ showTotp: true });
+              toast(i18n.t("enter_two_factor_code"), "info");
+            }
+
+            i.setState({ loginRes: { state: "empty" } });
+            break;
           }
 
-          i.setState({ loginRes: { state: "empty" } });
-          break;
-        }
-
-        case "success": {
-          UserService.Instance.login(loginRes.data);
-          const site = await HttpService.client.getSite({
-            auth: myAuth(),
-          });
+          case "success": {
+            UserService.Instance.login(loginRes.data);
+            const site = await HttpService.client.getSite({
+              auth: myAuth(),
+            });
 
-          if (site.state === "success") {
-            UserService.Instance.myUserInfo = site.data.my_user;
-          }
+            if (site.state === "success") {
+              UserService.Instance.myUserInfo = site.data.my_user;
+            }
 
-          i.props.history.action === "PUSH"
-            ? i.props.history.back()
-            : i.props.history.replace("/");
+            i.props.history.action === "PUSH"
+              ? i.props.history.back()
+              : i.props.history.replace("/");
 
-          break;
+            break;
+          }
         }
+      } catch (error) {
+        i.setState({ loginRes: { state: "failed", msg: error.message } });
       }
     }
   }
-- 
2.44.1