From 1bc1028ab7d7e6a7e27a7aa85ca9f923df822043 Mon Sep 17 00:00:00 2001 From: fede Date: Thu, 8 Jan 2026 18:35:40 -0300 Subject: [PATCH] =?UTF-8?q?a=C3=B1adidas=20paginas=20de=20seguidos=20y=20s?= =?UTF-8?q?eguidores?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/components/CardPerfil.svelte | 17 ++++++++- src/lib/components/UserCard.svelte | 2 +- src/routes/[perfil]/seguidores/+page.svelte | 42 +++++++++++++++++++++ src/routes/[perfil]/seguidores/+page.ts | 20 ++++++++++ src/routes/[perfil]/seguidos/+page.svelte | 42 +++++++++++++++++++++ src/routes/[perfil]/seguidos/+page.ts | 20 ++++++++++ 6 files changed, 140 insertions(+), 3 deletions(-) create mode 100644 src/routes/[perfil]/seguidores/+page.svelte create mode 100644 src/routes/[perfil]/seguidores/+page.ts create mode 100644 src/routes/[perfil]/seguidos/+page.svelte create mode 100644 src/routes/[perfil]/seguidos/+page.ts diff --git a/src/lib/components/CardPerfil.svelte b/src/lib/components/CardPerfil.svelte index 45ce5a2..a766b77 100644 --- a/src/lib/components/CardPerfil.svelte +++ b/src/lib/components/CardPerfil.svelte @@ -16,6 +16,7 @@ import CardTitle from './ui/card/card-title.svelte'; import Badge from './ui/badge/badge.svelte'; import { resolve } from '$app/paths'; + import { goto } from '$app/navigation'; let { data = $bindable() } = $props(); @@ -161,7 +162,11 @@ {/each} {#if data.seguidos.response?.length < data.countSeguidos} - + {/if} {/if} @@ -194,7 +199,15 @@ {/each} {#if data.seguidores.response?.length < data.countSeguidores} - + {/if} {/if} diff --git a/src/lib/components/UserCard.svelte b/src/lib/components/UserCard.svelte index 005c6b2..0e43d2a 100644 --- a/src/lib/components/UserCard.svelte +++ b/src/lib/components/UserCard.svelte @@ -18,7 +18,7 @@ let { usu }: Props = $props(); - +
diff --git a/src/routes/[perfil]/seguidores/+page.svelte b/src/routes/[perfil]/seguidores/+page.svelte new file mode 100644 index 0000000..5f6bee8 --- /dev/null +++ b/src/routes/[perfil]/seguidores/+page.svelte @@ -0,0 +1,42 @@ + + +
+
+
+

+ Seguidores de @{data.usuario.username} +

+ +
+ {#if data.seguidores.length === 0} +
+

No hay seguidores para mostrar.

+
+ {:else} +
+ {#each data.seguidores as follower (follower.id)} +
+ +
+ {/each} +
+ {/if} +
+
diff --git a/src/routes/[perfil]/seguidores/+page.ts b/src/routes/[perfil]/seguidores/+page.ts new file mode 100644 index 0000000..e9f0f8d --- /dev/null +++ b/src/routes/[perfil]/seguidores/+page.ts @@ -0,0 +1,20 @@ +import { obtenerSeguidoresPorUsuario } from '@/hooks/obtenerSeguidoresPorUsuario'; +import { obtenerUsuarioPorUsername } from '@/hooks/obtenerUsuario'; +import { error } from '@sveltejs/kit'; +import type { UserResponseDto, UsersResponseDto } from '../../../types'; + +export async function load({ params, fetch }) { + const usuario: UserResponseDto | null = await obtenerUsuarioPorUsername(params.perfil, fetch); + if (!usuario) error(404, 'No se encontro el usuario, ' + params.perfil); + + const seguidoresResponse: UsersResponseDto | null = await obtenerSeguidoresPorUsuario( + usuario.id, + 100, + fetch + ); + + return { + usuario, + seguidores: seguidoresResponse?.response || [] + }; +} diff --git a/src/routes/[perfil]/seguidos/+page.svelte b/src/routes/[perfil]/seguidos/+page.svelte new file mode 100644 index 0000000..f8501c1 --- /dev/null +++ b/src/routes/[perfil]/seguidos/+page.svelte @@ -0,0 +1,42 @@ + + +
+
+
+

+ Seguidos de @{data.usuario.username} +

+ +
+ {#if data.seguidos.length === 0} +
+

No hay seguidos para mostrar.

+
+ {:else} +
+ {#each data.seguidos as follower (follower.id)} +
+ +
+ {/each} +
+ {/if} +
+
diff --git a/src/routes/[perfil]/seguidos/+page.ts b/src/routes/[perfil]/seguidos/+page.ts new file mode 100644 index 0000000..4e0e506 --- /dev/null +++ b/src/routes/[perfil]/seguidos/+page.ts @@ -0,0 +1,20 @@ +import { obtenerUsuarioPorUsername } from '@/hooks/obtenerUsuario'; +import { error } from '@sveltejs/kit'; +import type { UserResponseDto, UsersResponseDto } from '../../../types'; +import { obtenerSeguidosPorUsuario } from '@/hooks/obtenerSeguidosPorUsuario'; + +export async function load({ params, fetch }) { + const usuario: UserResponseDto | null = await obtenerUsuarioPorUsername(params.perfil, fetch); + if (!usuario) error(404, 'No se encontro el usuario, ' + params.perfil); + + const seguidosResponse: UsersResponseDto | null = await obtenerSeguidosPorUsuario( + usuario.id, + 100, + fetch + ); + + return { + usuario, + seguidos: seguidosResponse?.response || [] + }; +}