From ca9c1cdf1ec2988f14ac4ca788edac31153f735f Mon Sep 17 00:00:00 2001
From: ivarlovlie <git@ivarlovlie.no>
Date: Fri, 25 Nov 2022 16:30:33 +0900
Subject: feat: WIP! Rework http calls into services

---
 .../(main)/(public)/reset-password/+page.svelte    | 26 +++++++++++++---------
 1 file changed, 15 insertions(+), 11 deletions(-)

(limited to 'code/app/src/routes/(main)/(public)/reset-password/+page.svelte')

diff --git a/code/app/src/routes/(main)/(public)/reset-password/+page.svelte b/code/app/src/routes/(main)/(public)/reset-password/+page.svelte
index 4d0288f..8bda3dc 100644
--- a/code/app/src/routes/(main)/(public)/reset-password/+page.svelte
+++ b/code/app/src/routes/(main)/(public)/reset-password/+page.svelte
@@ -1,13 +1,12 @@
 <script lang="ts">
     import { Alert, Input, Button } from "$lib/components";
-    import X from "$lib/components/icons/x.svelte";
     import LL from "$lib/i18n/i18n-svelte";
     import { PasswordResetService } from "$lib/services/password-reset-service";
 
     const formData = {
         email: {
             value: "",
-            error: "",
+            errors: [],
         },
     };
 
@@ -20,27 +19,31 @@
         },
     };
 
-    const service = new PasswordResetService();
+    const resetRequests = new PasswordResetService();
 
     let loading = false;
     let showSuccessAlert = false;
-    $: showErrorAlert = formError.title || (formError.subtitle && !showSuccessAlert);
+    $: showErrorAlert = (formError.title !== "" || formError.subtitle !== "") && !showSuccessAlert;
 
     async function submitFormAsync() {
         formError.set();
         showSuccessAlert = false;
         loading = true;
-        const response = await service.create_request_async(formData.email.value);
+        const response = await resetRequests.create_request_async(formData.email.value);
         loading = false;
         if (response.isCreated) {
             showSuccessAlert = true;
-            return;
-        }
-        if (response.knownProblem) {
+        } else if (response.knownProblem) {
             if (response.knownProblem.title) formError.title = response.knownProblem.title;
             if (response.knownProblem.subtitle) formError.subtitle = response.knownProblem.subtitle;
-            for (const error of response.knownProblem.errors) {
+            for (const error of Object.entries(response.knownProblem.errors)) {
+                if (error[0] === "email") {
+                    error[1].forEach(formData.email.errors.push);
+                }
             }
+        } else {
+            formError.title = $LL.unexpectedError();
+            formError.subtitle = $LL.tryAgainSoon();
         }
     }
 </script>
@@ -61,7 +64,7 @@
     <div class="mt-8 sm:mx-auto sm:w-full sm:max-w-md">
         <div class="bg-white py-8 px-4 shadow sm:rounded-lg sm:px-10">
             <form class="space-y-6" on:submit|preventDefault={submitFormAsync}>
-                <Alert title={errorData.title} message={errorData.text} type="error" visible={showErrorAlert} />
+                <Alert title={formError.title} message={formError.subtitle} type="error" visible={showErrorAlert} />
 
                 <Alert
                     type="success"
@@ -75,8 +78,9 @@
                     name="email"
                     type="email"
                     autocomplete="email"
+                    errors={formData.email.errors}
                     required
-                    bind:value={formData.email}
+                    bind:value={formData.email.value}
                     label={$LL.emailAddress()}
                 />
                 <Button text={$LL.submit()} type="submit" {loading} fullWidth />
-- 
cgit v1.3

