diff --git a/src/lib/components/UserCard.svelte b/src/lib/components/UserCard.svelte new file mode 100644 index 0000000..117c679 --- /dev/null +++ b/src/lib/components/UserCard.svelte @@ -0,0 +1,41 @@ + + + + + + {#if usu.bio} +
{usu.bio}
+ {/if} +
+
diff --git a/src/lib/hooks/busquedaUsuarios.ts b/src/lib/hooks/busquedaUsuarios.ts new file mode 100644 index 0000000..7508cba --- /dev/null +++ b/src/lib/hooks/busquedaUsuarios.ts @@ -0,0 +1,18 @@ +import { apiBase } from '@/stores/url'; +import { get } from 'svelte/store'; + +export async function busquedaUsuarios(username: string) { + if (!username) return null; + try { + const req = await fetch(`${get(apiBase)}/api/users/search?q=${username}`, { + method: 'GET' + }); + if (req.ok) { + let data = await req.json(); + return data; + } + return []; + } catch { + return null; + } +} diff --git a/src/routes/search/+page.svelte b/src/routes/search/+page.svelte deleted file mode 100644 index e69de29..0000000 diff --git a/src/routes/search/[user]/+page.svelte b/src/routes/search/[user]/+page.svelte new file mode 100644 index 0000000..5e57037 --- /dev/null +++ b/src/routes/search/[user]/+page.svelte @@ -0,0 +1,11 @@ + + +
+ {#each data.usuarios as usu} + + {/each} +
diff --git a/src/routes/search/[user]/+page.ts b/src/routes/search/[user]/+page.ts new file mode 100644 index 0000000..a5e2e59 --- /dev/null +++ b/src/routes/search/[user]/+page.ts @@ -0,0 +1,16 @@ +import { busquedaUsuarios } from '@/hooks/busquedaUsuarios'; +import type { PageProps } from '../$types'; +import { error } from '@sveltejs/kit'; +import type { UserResponseDto } from '../../../types'; + +export async function load({ params }: PageProps) { + let usuarios: UserResponseDto[] = await busquedaUsuarios(params.user); + if (usuarios == null) { + return error(500, 'No se pudo alcanzar el servidor.'); + } + + if (usuarios.length == 0) { + return error(404, 'No se encontraron usuarios que coinsidan con la busqueda.'); + } + return { usuarios }; +}