diff --git a/src/lib/components/TablaUsuarios.svelte b/src/lib/components/TablaUsuarios.svelte
index 1aa00ce..893c583 100644
--- a/src/lib/components/TablaUsuarios.svelte
+++ b/src/lib/components/TablaUsuarios.svelte
@@ -15,19 +15,23 @@
import RecuperarContraseña from './admin/RecuperarContraseña.svelte';
import { Dialog } from './ui/dialog';
import DialogContent from './ui/dialog/dialog-content.svelte';
+ import ModificarUsuario from './admin/ModificarUsuario.svelte';
+ import { fade } from 'svelte/transition';
interface Props {
usuarios: UserResponseDto[];
}
- let { usuarios }: Props = $props();
+ let { usuarios = $bindable() }: Props = $props();
let open = $state(false);
- const openModificarUsuario = $state(false);
+ let openModificarUsuario = $state(false);
//si ponia contraseña en español quedaba muy largo el nombre
let usuarioCambioPass: UserResponseDto | null = $state(null);
+ let usuarioModificar: UserResponseDto | null = $state(null);
+
$effect(() => {
if (!open) {
usuarioCambioPass = null;
@@ -38,9 +42,13 @@
open = true;
usuarioCambioPass = usuario;
}
+
+ function handleModificar(usuario: UserResponseDto) {
+ openModificarUsuario = true;
+ usuarioModificar = usuario;
+ }
-
@@ -73,7 +81,7 @@
-
+
Modificar Usuario
@@ -86,3 +94,4 @@
+
diff --git a/src/lib/components/admin/ModificarUsuario.svelte b/src/lib/components/admin/ModificarUsuario.svelte
new file mode 100644
index 0000000..bf5cfd4
--- /dev/null
+++ b/src/lib/components/admin/ModificarUsuario.svelte
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ui/checkbox/checkbox.svelte b/src/lib/components/ui/checkbox/checkbox.svelte
new file mode 100644
index 0000000..1622e05
--- /dev/null
+++ b/src/lib/components/ui/checkbox/checkbox.svelte
@@ -0,0 +1,36 @@
+
+
+
+ {#snippet children({ checked, indeterminate })}
+
+ {#if checked}
+
+ {:else if indeterminate}
+
+ {/if}
+
+ {/snippet}
+
diff --git a/src/lib/components/ui/checkbox/index.ts b/src/lib/components/ui/checkbox/index.ts
new file mode 100644
index 0000000..6d92d94
--- /dev/null
+++ b/src/lib/components/ui/checkbox/index.ts
@@ -0,0 +1,6 @@
+import Root from "./checkbox.svelte";
+export {
+ Root,
+ //
+ Root as Checkbox,
+};
diff --git a/src/lib/hooks/updateUsuario.ts b/src/lib/hooks/updateUsuario.ts
new file mode 100644
index 0000000..2a2bfb3
--- /dev/null
+++ b/src/lib/hooks/updateUsuario.ts
@@ -0,0 +1,44 @@
+import { apiBase } from "@/stores/url"
+import { sesionStore } from "@/stores/usuario"
+import { get } from "svelte/store"
+
+export interface AdminUpdateUsuario {
+ id:string,
+ displayName: string,
+ bio: string,
+ profileImage:boolean,
+ oldImageUrl:string
+}
+
+export async function updateUsuario(usuario: AdminUpdateUsuario) {
+
+ const formData = new FormData();
+ formData.append('displayName', usuario.displayName);
+ formData.append('bio', usuario.bio);
+ if (usuario.profileImage) {
+ formData.append('profileImageUrl', usuario.oldImageUrl);
+ }
+
+ try {
+ const req = await fetch(get(apiBase) + "/api/users/"+usuario.id, {
+ method: "PUT",
+ headers: {
+ Authorization: `Bearer ${get(sesionStore)?.accessToken}`
+ },
+ body: formData,
+ });
+ if (req.status === 204) {
+ let ret = {
+ // bio: usuario.bio,
+ displayName: usuario.displayName,
+ // oldImageUrl: usuario.oldImageUrl,
+ }
+ return ret;
+ }
+ const dataa = await req.json();
+
+ return dataa.message;
+ } catch {
+ return "No se pudo alcanzar el servidor"
+ }
+}
diff --git a/src/routes/(privado)/admin/+page.svelte b/src/routes/(privado)/admin/+page.svelte
index be4b79d..956243c 100644
--- a/src/routes/(privado)/admin/+page.svelte
+++ b/src/routes/(privado)/admin/+page.svelte
@@ -8,6 +8,7 @@
import CardHeader from '@/components/ui/card/card-header.svelte';
let cargando = $state(true);
+ let usuarios = $state(page.data.usuarios);
@@ -22,15 +23,9 @@
{#if page.data.usuarios.length === 0}
- {#if page.data.error}
-
- Error al cargar usuarios.
-
- {:else}
- No hay posts que mostar
- {/if}
+ No hay posts que mostar
{:else}
-
+
{/if}