From 7c090c647e851d28b9cd00b7bbc663436a7965ba Mon Sep 17 00:00:00 2001 From: ajdj100 Date: Sun, 1 Mar 2026 13:18:12 -0500 Subject: [PATCH] Got comments working --- api/src/routes/discussion.ts | 16 ++++++++-- ui/src/api/discussion.ts | 14 +++++++++ .../components/discussion/CommentThread.vue | 29 ++++++++++++------- .../components/modRequests/ViewModRequest.vue | 2 +- 4 files changed, 48 insertions(+), 13 deletions(-) diff --git a/api/src/routes/discussion.ts b/api/src/routes/discussion.ts index 0ef42a7..0a8bc55 100644 --- a/api/src/routes/discussion.ts +++ b/api/src/routes/discussion.ts @@ -6,7 +6,7 @@ import { requireLogin, requireMemberState, requireRole } from '../middleware/aut import { logger } from '../services/logging/logger'; import { audit } from '../services/logging/auditLog'; import { MemberState } from '@app/shared/types/member'; -import { createDiscussion, getAllDiscussions, getDiscussionById, postComment } from '../services/db/discussionService'; +import { createDiscussion, getAllDiscussions, getDiscussionById, getPostComments, postComment } from '../services/db/discussionService'; import { ModRequest } from '@app/shared/schemas/modRequest'; import { DiscussionComment } from '@app/shared/types/discussion'; @@ -20,10 +20,22 @@ router.post('/comment', async (req: Request, res: Response) => { console.log(comment); await postComment(comment, req.user.id); - + res.sendStatus(201); } catch (error) { + logger.error('app', "Failed to post comments", error); + res.sendStatus(500); + } +}); +router.get('/:postId/comments', async (req: Request, res: Response) => { + try { + const postId = parseInt(req.params.postId); + const comments = await getPostComments(postId); + res.json(comments); + } catch (error) { + logger.error('app', "Failed to fetch comments", error); + res.sendStatus(500); } }); diff --git a/ui/src/api/discussion.ts b/ui/src/api/discussion.ts index a326d14..8e682b9 100644 --- a/ui/src/api/discussion.ts +++ b/ui/src/api/discussion.ts @@ -20,3 +20,17 @@ export async function postComment(comment: DiscussionComment) { } } +export async function getPostComments(postId: number): Promise { + const res = await fetch(`${addr}/discussions/${postId}/comments`, { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + credentials: 'include', + }); + if (!res.ok) { + throw new Error("Failed to fetch comments"); + } + return res.json(); +} + diff --git a/ui/src/components/discussion/CommentThread.vue b/ui/src/components/discussion/CommentThread.vue index 7f613f9..4da4e52 100644 --- a/ui/src/components/discussion/CommentThread.vue +++ b/ui/src/components/discussion/CommentThread.vue @@ -1,17 +1,26 @@