From 6e7cab20cfb51367114a8a49fbead3c53a426174 Mon Sep 17 00:00:00 2001 From: Guillermo Serrahima Date: Thu, 19 Feb 2026 15:58:51 +0100 Subject: render posts in frontend, added basic styling --- frontend/src/main.ts | 56 +++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 29 deletions(-) (limited to 'frontend/src/main.ts') diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 3628147..d5f4d53 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -1,35 +1,33 @@ import './style.css' -/* -import typescriptLogo from './typescript.svg' -import viteLogo from '/vite.svg' -import { setupCounter } from './counter.ts' -*/ -const response = await fetch('http://localhost:8080/'); -const text = await response.text(); const app = document.querySelector('#app'); -if (app) { - app.innerHTML = text; +if (!app) { + console.error('App container not found'); + throw new Error('App container not found'); } -/* -document.querySelector('#app')!.innerHTML = ` -
- - - - - - -

Vite + TypeScript

-
- -
-

- Click on the Vite and TypeScript logos to learn more -

-
-` +app.innerHTML = '
'; -setupCounter(document.querySelector('#counter')!) -*/ \ No newline at end of file +try { + const response = await fetch('http://localhost:8080/api/posts'); + if (!response.ok) throw new Error(`HTTP ${response.status}`); + + const posts = await response.json(); + app.innerHTML = ''; + + for (const post of posts) { + const postHTML = ` +
+ avatar +
+
@${post.authorHandle}
+
${post.text || '
'}
+
${new Date(post.createdAt).toLocaleString()}
+
+
+ `; + app.innerHTML += postHTML; + } +} catch (err) { + app.innerHTML = `
error loading posts: ${err}
`; +} \ No newline at end of file -- cgit v1.2.3