diff --git a/src/lib/components/TablaUsuarios.svelte b/src/lib/components/TablaUsuarios.svelte new file mode 100644 index 0000000..25ffd32 --- /dev/null +++ b/src/lib/components/TablaUsuarios.svelte @@ -0,0 +1,38 @@ + + + + + + Usuario + Nombre + Cantidad de posts + Fecha de Creacion + Acciones + + + + {#each usuarios as usuario} + + @{usuario.username} + {usuario.displayName} + ? + {usuario.createdAt.replace('Z', ' ').replace('T', ' | ')} + ? + + {/each} + +
diff --git a/src/lib/components/crear-post.svelte b/src/lib/components/crear-post.svelte index dd40c7f..19da76a 100644 --- a/src/lib/components/crear-post.svelte +++ b/src/lib/components/crear-post.svelte @@ -85,6 +85,7 @@ - import CardAction from '@/components/ui/card/card-action.svelte'; import CardContent from '@/components/ui/card/card-content.svelte'; - import CardHeader from '@/components/ui/card/card-header.svelte'; - import CardTitle from '@/components/ui/card/card-title.svelte'; import Card from '@/components/ui/card/card.svelte'; import TableBody from '@/components/ui/table/table-body.svelte'; import TableHead from '@/components/ui/table/table-head.svelte'; @@ -12,10 +9,11 @@ import type { User } from '../../../types'; import CardDescription from '@/components/ui/card/card-description.svelte'; import Spinner from '@/components/ui/spinner/spinner.svelte'; + import TableCell from '@/components/ui/table/table-cell.svelte'; + import { page } from '$app/state'; + import TablaUsuarios from '@/components/TablaUsuarios.svelte'; - let usuarios: User[] = $state([]); let cargando = $state(true); - let error = $state(true);
@@ -25,33 +23,18 @@ > Gestion Usuarios - + - {#if usuarios.length === 0} - {#if error} + {#if page.data.usuarios.length === 0} + {#if page.data.error} Error al cargar usuarios. - {:else if cargando} - - - Cargando usuarios... - {:else} No hay posts que mostar {/if} {:else} - - - - Usuario - Nombre - Cantidad de posts - Acciones - - - -
+ {/if}
diff --git a/src/routes/(privado)/admin/+page.ts b/src/routes/(privado)/admin/+page.ts new file mode 100644 index 0000000..b253ba8 --- /dev/null +++ b/src/routes/(privado)/admin/+page.ts @@ -0,0 +1,29 @@ +import { apiBase } from '@/stores/url.js'; +import { sesionStore } from '@/stores/usuario'; +import { redirect } from '@sveltejs/kit'; +import { get } from 'svelte/store'; +import type { UserResponseDto } from '../../../types.js'; + +//para que solo se envie cuando se requiere +export const prerender = true; + +export async function load({}) { + const response = await fetch(get(apiBase) + '/api/admin/users', { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${get(sesionStore)?.accessToken}` + } + }); + + if (response.status === 401) { + throw redirect(302, '/'); + } + if (!response.ok) { + return { error: true }; + } + + const usuarios: UserResponseDto[] = await response.json(); + + return { usuarios, error: false }; +}