From 9cc5831cfc6a8d7ec1d6189a7f7a7eb0fcccbdae Mon Sep 17 00:00:00 2001 From: fede Date: Mon, 8 Dec 2025 13:37:23 -0300 Subject: [PATCH] separada la logica de publicar el post a la del manejo del front --- src/lib/components/crear-post.svelte | 38 +++++++--------------------- src/lib/hooks/publicarPost.ts | 27 ++++++++++++++++++++ 2 files changed, 36 insertions(+), 29 deletions(-) create mode 100644 src/lib/hooks/publicarPost.ts diff --git a/src/lib/components/crear-post.svelte b/src/lib/components/crear-post.svelte index 62c0748..7aa3710 100644 --- a/src/lib/components/crear-post.svelte +++ b/src/lib/components/crear-post.svelte @@ -14,6 +14,7 @@ import { Tooltip } from './ui/tooltip'; import TooltipContent from './ui/tooltip/tooltip-content.svelte'; import TooltipTrigger from './ui/tooltip/tooltip-trigger.svelte'; + import { publicarPost } from '@/hooks/publicarPost'; let mensaje = $state(''); @@ -22,35 +23,14 @@ async function handlePost(e: Event) { e.preventDefault(); - try { - const formData = new FormData(); - formData.append('content', mensaje); - // formData.append('imageUrl', ''); - // formData.append('parentPostId', ''); - - const req = fetch($apiBase + '/api/posts', { - method: 'POST', - //credentials: 'include', - headers: { - Authorization: `Bearer ${$sesionStore?.accessToken}` - }, - body: formData - }); - cargando = true; - - const res = await req; - if (res.ok) { - mensaje = ''; - const post = await res.json(); - addPost(post); - return; - } - mostrarError = 'No se pudo crear el post.'; - } catch { - mostrarError = 'Fallo al alcanzar el servidor'; - } finally { - cargando = false; - } + cargando = true; + const formData = new FormData(); + formData.append('content', mensaje); + // formData.append('imageUrl', ''); + // formData.append('parentPostId', ''); + mostrarError = await publicarPost(formData); + if (mostrarError == '') mensaje = ''; + cargando = false; } function handleKeydown(e: KeyboardEvent) { diff --git a/src/lib/hooks/publicarPost.ts b/src/lib/hooks/publicarPost.ts new file mode 100644 index 0000000..8ddb6f0 --- /dev/null +++ b/src/lib/hooks/publicarPost.ts @@ -0,0 +1,27 @@ +import { addPost } from "@/stores/posts"; +import { apiBase } from "@/stores/url"; +import { sesionStore } from "@/stores/usuario"; +import { get } from "svelte/store"; + +export async function publicarPost(formData: FormData){ + try{ + const req = fetch(get(apiBase) + '/api/posts', { + method: 'POST', + //credentials: 'include', + headers: { + Authorization: `Bearer ${get(sesionStore)?.accessToken}` + }, + body: formData + }); + + const res = await req; + if (res.ok) { + const post = await res.json(); + addPost(post); + return ''; + } + return 'No se pudo crear el post.'; + } catch { + return 'Fallo al alcanzar el servidor'; + } +}