diff --git a/server/src/__tests__/issues-goal-context-routes.test.ts b/server/src/__tests__/issues-goal-context-routes.test.ts index 25ce2042..d8036797 100644 --- a/server/src/__tests__/issues-goal-context-routes.test.ts +++ b/server/src/__tests__/issues-goal-context-routes.test.ts @@ -10,6 +10,7 @@ const mockIssueService = vi.hoisted(() => ({ findMentionedProjectIds: vi.fn(), getCommentCursor: vi.fn(), getComment: vi.fn(), + listAttachments: vi.fn(), })); const mockProjectService = vi.hoisted(() => ({ @@ -129,6 +130,7 @@ describe("issue goal context routes", () => { latestCommentAt: null, }); mockIssueService.getComment.mockResolvedValue(null); + mockIssueService.listAttachments.mockResolvedValue([]); mockProjectService.getById.mockResolvedValue({ id: legacyProjectLinkedIssue.projectId, companyId: "company-1", diff --git a/server/src/routes/issues.ts b/server/src/routes/issues.ts index 5eb0b83e..b7f7bdee 100644 --- a/server/src/routes/issues.ts +++ b/server/src/routes/issues.ts @@ -448,11 +448,12 @@ export function issueRoutes(db: Db, storage: StorageService) { ? req.query.wakeCommentId.trim() : null; - const [{ project, goal }, ancestors, commentCursor, wakeComment] = await Promise.all([ + const [{ project, goal }, ancestors, commentCursor, wakeComment, attachments] = await Promise.all([ resolveIssueProjectAndGoal(issue), svc.getAncestors(issue.id), svc.getCommentCursor(issue.id), wakeCommentId ? svc.getComment(wakeCommentId) : null, + svc.listAttachments(issue.id), ]); res.json({ @@ -499,6 +500,14 @@ export function issueRoutes(db: Db, storage: StorageService) { wakeComment && wakeComment.issueId === issue.id ? wakeComment : null, + attachments: attachments.map((a) => ({ + id: a.id, + filename: a.originalFilename, + contentType: a.contentType, + byteSize: a.byteSize, + contentPath: `/api/attachments/${a.id}/content`, + createdAt: a.createdAt, + })), }); });