-
{post.likesCount} likes
-
{post.repliesCount} replies
+
+
+
+
{post.createdAt.replace('T', ' ').split('.')[0]}
@@ -120,7 +161,7 @@
-{#if mensajeError}
+{#if mensajeError || errorLike}
diff --git a/src/lib/components/signup-form.svelte b/src/lib/components/signup-form.svelte
index 4db6eaf..aaa9f61 100644
--- a/src/lib/components/signup-form.svelte
+++ b/src/lib/components/signup-form.svelte
@@ -5,13 +5,55 @@
import { Input } from '$lib/components/ui/input/index.js';
import type { RegisterDto } from '../../types';
import { register } from '@/hooks/register';
+ import Loader2Icon from '@lucide/svelte/icons/loader-2';
+ import Check from '@lucide/svelte/icons/check';
+ import Cross from '@lucide/svelte/icons/x';
- let {showAlert = $bindable() } = $props();
+ import Spinner from './ui/spinner/spinner.svelte';
+ import { checkUsername } from '@/hooks/checkUsername';
+ import { checkEmail } from '@/hooks/checkEmail';
- const setAlert = () => showAlert = true;
+ let { showAlert = $bindable() } = $props();
- let dto: RegisterDto = $state({password: "", username: "", email:"", displayName: ""});
+ let cargando = $state(false);
+ let repetirContraseña = $state('');
+
+ let checkeandoUsuario: boolean | null = $state(null);
+ let esUsuarioValido = $state(false);
+
+ let checkeandoEmail: boolean | null = $state(null);
+ let esEmailValido = $state(false);
+
+ let dto: RegisterDto = $state({ password: '', username: '', email: '', displayName: '' });
+
+ let coinsidenLasPass = $derived(repetirContraseña == dto.password);
+
+ const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9])[A-Za-z\d\W_]*$/;
+ let esContraseñaValida = $derived(passwordRegex.test(dto.password));
+
+ async function checkUsuario() {
+ checkeandoUsuario = true;
+ esUsuarioValido = await checkUsername(dto.username);
+ checkeandoUsuario = false;
+ }
+
+ async function checkEmaill() {
+ checkeandoEmail = true;
+ esEmailValido = await checkEmail(dto.email);
+ checkeandoEmail = false;
+ }
+ const setAlert = () => (showAlert = true);
+
+ const handleSubmit = async (e: SubmitEvent) => {
+ if (esUsuarioValido == false) return;
+ if (!coinsidenLasPass) return;
+ if (!esContraseñaValida) return;
+
+ cargando = true;
+ await register(e, dto, setAlert);
+ cargando = false;
+ };