From 15af6c619de70336bcdfbabbd32b9d93aabefc5b Mon Sep 17 00:00:00 2001
From: Sebastian <sebasjm@gmail.com>
Date: Fri, 22 Sep 2023 18:34:49 -0300
Subject: towards new core bank api

---
 packages/demobank-ui/src/pages/LoginForm.tsx | 104 +++++++++++++--------------
 1 file changed, 49 insertions(+), 55 deletions(-)

(limited to 'packages/demobank-ui/src/pages/LoginForm.tsx')

diff --git a/packages/demobank-ui/src/pages/LoginForm.tsx b/packages/demobank-ui/src/pages/LoginForm.tsx
index f6ea0e1d1..0d4bd1261 100644
--- a/packages/demobank-ui/src/pages/LoginForm.tsx
+++ b/packages/demobank-ui/src/pages/LoginForm.tsx
@@ -31,12 +31,13 @@ import { useCredentialsCheckerOld } from "../hooks/backend.js";
  */
 export function LoginForm({ onRegister }: { onRegister?: () => void }): VNode {
   const backend = useBackendContext();
-  const [username, setUsername] = useState<string | undefined>();
+  const currentUser = backend.state.status === "loggedIn" ? backend.state.username : undefined
+  const [username, setUsername] = useState<string | undefined>(currentUser);
   const [password, setPassword] = useState<string | undefined>();
   const { i18n } = useTranslationContext();
-  // const { requestNewLoginToken, refreshLoginToken } = useCredentialsChecker();
+  const { requestNewLoginToken, refreshLoginToken } = useCredentialsChecker();
 
-  const testLogin = useCredentialsCheckerOld();
+  // const testLogin = useCredentialsCheckerOld();
   const ref = useRef<HTMLInputElement>(null);
   useEffect(function focusInput() {
     ref.current?.focus();
@@ -46,8 +47,8 @@ export function LoginForm({ onRegister }: { onRegister?: () => void }): VNode {
   const errors = undefinedIfEmpty({
     username: !username
       ? i18n.str`Missing username`
-      : !USERNAME_REGEX.test(username)
-        ? i18n.str`Use letters and numbers only, and start with a lowercase letter`
+      // : !USERNAME_REGEX.test(username)
+      //   ? i18n.str`Use letters and numbers only, and start with a lowercase letter`
         : undefined,
     password: !password ? i18n.str`Missing password` : undefined,
   }) ?? busy;
@@ -59,19 +60,18 @@ export function LoginForm({ onRegister }: { onRegister?: () => void }): VNode {
   async function doLogin() {
     if (!username || !password) return;
     setBusy({})
-    const testResult = await testLogin(username, password);
-    if (testResult.valid) {
+    const result = await requestNewLoginToken(username, password);
+    if (result.valid) {
       backend.logIn({ username, password });
     } else {
-      if (testResult.requestError) {
-        const { cause } = testResult;
-        switch (cause.type) {
-          case ErrorType.CLIENT: {
-            if (cause.status === HttpStatusCode.Unauthorized) {
-              saveError({
-                title: i18n.str`Wrong credentials for "${username}"`,
-              });
-            } else
+      const { cause } = result;
+      switch (cause.type) {
+        case ErrorType.CLIENT: {
+          if (cause.status === HttpStatusCode.Unauthorized) {
+            saveError({
+              title: i18n.str`Wrong credentials for "${username}"`,
+            });
+          } else
             if (cause.status === HttpStatusCode.NotFound) {
               saveError({
                 title: i18n.str`Account not found`,
@@ -79,50 +79,44 @@ export function LoginForm({ onRegister }: { onRegister?: () => void }): VNode {
             } else {
               saveError({
                 title: i18n.str`Could not load due to a client error`,
-                description: cause.payload.error.description,
+                // description: cause.payload.error.description,
                 debug: JSON.stringify(cause.payload),
               });
             }
-            break;
-          }
-          case ErrorType.SERVER: {
-            saveError({
-              title: i18n.str`Server had a problem, try again later or report.`,
-              description: cause.payload.error.description,
-              debug: JSON.stringify(cause.payload),
-            });
-            break;
-          }
-          case ErrorType.TIMEOUT: {
-            saveError({
-              title: i18n.str`Request timeout, try again later.`,
-            });
-            break;
-          }
-          case ErrorType.UNREADABLE: {
-            saveError({
-              title: i18n.str`Unexpected error.`,
-              description: `Response from ${cause.info?.url} is unreadable, http status: ${cause.status}` as TranslatedString,
-              debug: JSON.stringify(cause),
-            });
-            break;
-          }
-          default: {
-            saveError({
-              title: i18n.str`Unexpected error, please report.`,
-              description: `Diagnostic from ${cause.info?.url} is "${cause.message}"` as TranslatedString,
-              debug: JSON.stringify(cause),
-            });
-            break;
-          }
+          break;
+        }
+        case ErrorType.SERVER: {
+          saveError({
+            title: i18n.str`Server had a problem, try again later or report.`,
+            // description: cause.payload.error.description,
+            debug: JSON.stringify(cause.payload),
+          });
+          break;
+        }
+        case ErrorType.TIMEOUT: {
+          saveError({
+            title: i18n.str`Request timeout, try again later.`,
+          });
+          break;
+        }
+        case ErrorType.UNREADABLE: {
+          saveError({
+            title: i18n.str`Unexpected error.`,
+            description: `Response from ${cause.info?.url} is unreadable, http status: ${cause.status}` as TranslatedString,
+            debug: JSON.stringify(cause),
+          });
+          break;
+        }
+        default: {
+          saveError({
+            title: i18n.str`Unexpected error, please report.`,
+            description: `Diagnostic from ${cause.info?.url} is "${cause.message}"` as TranslatedString,
+            debug: JSON.stringify(cause),
+          });
+          break;
         }
-      } else {
-        saveError({
-          title: i18n.str`Unexpected error, please report.`,
-          debug: JSON.stringify(testResult.error),
-        });
       }
-      backend.logOut();
+      // backend.logOut();
     }
     setPassword(undefined);
     setBusy(undefined)
-- 
cgit v1.2.3

