add login mechanic
This commit is contained in:
@@ -2,7 +2,10 @@
|
||||
import { Input, Button, Spinner } from "flowbite-svelte";
|
||||
import { performLogin } from "../util/loginUtil";
|
||||
import type { User } from "../types/user";
|
||||
import { currentUser } from "../storage/localStore";
|
||||
import type { Error } from "../types/error";
|
||||
import { currentPage, currentUser } from "../storage/localStore";
|
||||
import toast from "svelte-french-toast";
|
||||
import { Page } from "../consts/pages";
|
||||
|
||||
let loading = false;
|
||||
let username = "";
|
||||
@@ -10,11 +13,38 @@
|
||||
|
||||
const processLogin = async () => {
|
||||
loading = true;
|
||||
const loginResult = await performLogin(username, password);
|
||||
if (loginResult instanceof Error) {
|
||||
loading = false;
|
||||
return;
|
||||
}
|
||||
window.addEventListener(
|
||||
"login-result",
|
||||
(e) => {
|
||||
const customEvent = e as CustomEvent;
|
||||
const resultData = customEvent.detail;
|
||||
const wasSuccessful = "user" in resultData;
|
||||
|
||||
if (!wasSuccessful) {
|
||||
toast.error(resultData.message, {
|
||||
position: "bottom-center",
|
||||
className:
|
||||
"dark:!bg-gray-800 border-1 dark:!border-gray-700 dark:!text-gray-100",
|
||||
duration: 1500,
|
||||
});
|
||||
loading = false;
|
||||
return;
|
||||
}
|
||||
console.log(resultData);
|
||||
currentUser.set(resultData.user as User);
|
||||
currentPage.set(Page.Launch);
|
||||
toast.success(`Welcome back ${resultData.user.name}!`, {
|
||||
position: "bottom-center",
|
||||
className:
|
||||
"dark:!bg-gray-800 border-1 dark:!border-gray-700 dark:!text-gray-100",
|
||||
duration: 5000,
|
||||
});
|
||||
},
|
||||
{ once: true }
|
||||
);
|
||||
window.dispatchEvent(
|
||||
new CustomEvent("login-attempt", { detail: { username, password } })
|
||||
);
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -52,7 +82,9 @@
|
||||
<Button
|
||||
class="!bg-transparent border-none dark:text-gray-700 hover:!bg-gray-700/15 ring-primary active:ring-2 focus:ring-2"
|
||||
color="none"
|
||||
disabled={loading}>Continue without login</Button
|
||||
disabled={loading}
|
||||
on:click={() => currentPage.set(Page.Launch)}
|
||||
>Continue without login</Button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user