diff --git a/src/lib/components/UserCard.svelte b/src/lib/components/UserCard.svelte index 0e43d2a..1df1e45 100644 --- a/src/lib/components/UserCard.svelte +++ b/src/lib/components/UserCard.svelte @@ -35,8 +35,5 @@ - {#if usu.bio} -
{usu.bio}
- {/if} diff --git a/src/lib/hooks/obtenerSeguidoresPorUsuario.ts b/src/lib/hooks/obtenerSeguidoresPorUsuario.ts index 3c84b05..4f576da 100644 --- a/src/lib/hooks/obtenerSeguidoresPorUsuario.ts +++ b/src/lib/hooks/obtenerSeguidoresPorUsuario.ts @@ -1,16 +1,19 @@ import { sesionStore } from '@/stores/usuario'; import type { UsersResponseDto } from '../../types'; -import { get } from 'svelte/store'; import { apiBase } from '@/stores/url'; +import { get } from 'svelte/store'; export async function obtenerSeguidoresPorUsuario( id: string, + page: number = 1, limit: number = 20, - fetch2: Function + fetch2?: Function ): Promise { try { const fetchFunc = fetch2 || fetch; - const response = await fetchFunc(`${get(apiBase)}/api/users/${id}/followers?limit=${limit}`, { + const skip = (page - 1) * limit; + + const response = await fetchFunc(`${get(apiBase)}/api/users/${id}/followers?skip=${skip}&limit=${limit}`, { method: 'GET', headers: { 'Content-Type': 'application/json', @@ -27,4 +30,4 @@ export async function obtenerSeguidoresPorUsuario( } catch (error) { return null; } -} +} \ No newline at end of file diff --git a/src/lib/hooks/obtenerSeguidosPorUsuario.ts b/src/lib/hooks/obtenerSeguidosPorUsuario.ts index 1db413b..b8fc1c8 100644 --- a/src/lib/hooks/obtenerSeguidosPorUsuario.ts +++ b/src/lib/hooks/obtenerSeguidosPorUsuario.ts @@ -5,13 +5,15 @@ import { get } from 'svelte/store'; export async function obtenerSeguidosPorUsuario( id: string, + page: number = 1, limit: number = 20, fetch2?: Function ): Promise { try { const fetchFunc = fetch2 || fetch; + const skip = (page - 1) * limit; - const response = await fetchFunc(`${get(apiBase)}/api/users/${id}/following?limit=${limit}`, { + const response = await fetchFunc(`${get(apiBase)}/api/users/${id}/following?skip=${skip}&limit=${limit}`, { method: 'GET', headers: { 'Content-Type': 'application/json', @@ -23,9 +25,9 @@ export async function obtenerSeguidosPorUsuario( return null; } - const users: UsersResponseDto = await response.json(); - return users; + const data: UsersResponseDto = await response.json(); + return data; } catch (error) { return null; } -} +} \ No newline at end of file diff --git a/src/routes/[perfil]/+page.ts b/src/routes/[perfil]/+page.ts index 92492c6..119d7b2 100644 --- a/src/routes/[perfil]/+page.ts +++ b/src/routes/[perfil]/+page.ts @@ -13,8 +13,8 @@ export const load: PageLoad = async ({ params, depends, fetch }) => { if (!usuario) error(404, 'No se encontro el usuario, ' + params.perfil); const [seguidos, seguidores, countSeguidores, countSeguidos] = await Promise.all([ - obtenerSeguidosPorUsuario(usuario.id, 5, fetch), - obtenerSeguidoresPorUsuario(usuario.id, 5, fetch), + obtenerSeguidosPorUsuario(usuario.id, 1, 5, fetch), + obtenerSeguidoresPorUsuario(usuario.id, 1, 5, fetch), obtenerCantidadDeSeguidores(usuario.id, fetch), obtenerCantidadDeSeguidos(usuario.id, fetch) ]); diff --git a/src/routes/[perfil]/seguidores/+page.svelte b/src/routes/[perfil]/seguidores/+page.svelte index 5f6bee8..afa29f2 100644 --- a/src/routes/[perfil]/seguidores/+page.svelte +++ b/src/routes/[perfil]/seguidores/+page.svelte @@ -1,15 +1,41 @@
@@ -25,9 +51,14 @@
- {#if data.seguidores.length === 0} + + {#if isLoading}
-

No hay seguidores para mostrar.

+

Cargando...

+
+ {:else if data.seguidores.length === 0} +
+

No hay seguidos para mostrar.

{:else}
@@ -38,5 +69,29 @@ {/each}
{/if} + + {#if totalPages > 1} +
+ + + + Página {currentPage} de {totalPages} + + + +
+ {/if} - + \ No newline at end of file diff --git a/src/routes/[perfil]/seguidores/+page.ts b/src/routes/[perfil]/seguidores/+page.ts index e9f0f8d..007f2c1 100644 --- a/src/routes/[perfil]/seguidores/+page.ts +++ b/src/routes/[perfil]/seguidores/+page.ts @@ -1,14 +1,16 @@ import { obtenerSeguidoresPorUsuario } from '@/hooks/obtenerSeguidoresPorUsuario'; import { obtenerUsuarioPorUsername } from '@/hooks/obtenerUsuario'; import { error } from '@sveltejs/kit'; +import type { PageLoad } from './$types'; import type { UserResponseDto, UsersResponseDto } from '../../../types'; -export async function load({ params, fetch }) { +export const load: PageLoad = async ({ 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, + 1, 100, fetch ); diff --git a/src/routes/[perfil]/seguidos/+page.svelte b/src/routes/[perfil]/seguidos/+page.svelte index f8501c1..107efa9 100644 --- a/src/routes/[perfil]/seguidos/+page.svelte +++ b/src/routes/[perfil]/seguidos/+page.svelte @@ -1,15 +1,41 @@
@@ -25,7 +51,12 @@
- {#if data.seguidos.length === 0} + + {#if isLoading} +
+

Cargando...

+
+ {:else if data.seguidos.length === 0}

No hay seguidos para mostrar.

@@ -38,5 +69,29 @@ {/each} {/if} + + {#if totalPages > 1} +
+ + + + Página {currentPage} de {totalPages} + + + +
+ {/if} - + \ No newline at end of file diff --git a/src/routes/[perfil]/seguidos/+page.ts b/src/routes/[perfil]/seguidos/+page.ts index a25c1ef..8d575f2 100644 --- a/src/routes/[perfil]/seguidos/+page.ts +++ b/src/routes/[perfil]/seguidos/+page.ts @@ -10,12 +10,14 @@ export const load: PageLoad = async ({ params, fetch }) => { const seguidosResponse: UsersResponseDto | null = await obtenerSeguidosPorUsuario( usuario.id, + 1, 100, fetch ); return { usuario, - seguidos: seguidosResponse?.response || [] + seguidos: seguidosResponse?.response || [], + totalCount: seguidosResponse?.totalCount ?? 0 }; };