kaneo (minimalist kanban) fork to experiment adding a tangled integration github.com/usekaneo/kaneo
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at cd7cada2f86b4e866a15b4323bb8d6d7ab5bba8b 90 lines 2.7 kB view raw
1import { Hono } from "hono"; 2import { describeRoute, resolver, validator } from "hono-openapi"; 3import * as v from "valibot"; 4import getInvitationDetailsController from "./controllers/get-invitation-details"; 5import getUserPendingInvitations from "./controllers/get-user-pending-invitations"; 6 7const invitation = new Hono<{ 8 Variables: { 9 userId: string; 10 userEmail: string; 11 }; 12}>() 13 .get( 14 "/pending", 15 describeRoute({ 16 operationId: "getUserPendingInvitations", 17 tags: ["Invitations"], 18 description: "Get all pending invitations for the current user", 19 responses: { 20 200: { 21 description: "List of pending invitations", 22 content: { 23 "application/json": { 24 schema: resolver( 25 v.array( 26 v.object({ 27 id: v.string(), 28 email: v.string(), 29 workspaceId: v.string(), 30 workspaceName: v.string(), 31 inviterName: v.string(), 32 expiresAt: v.string(), 33 createdAt: v.string(), 34 status: v.string(), 35 }), 36 ), 37 ), 38 }, 39 }, 40 }, 41 }, 42 }), 43 async (c) => { 44 const userEmail = c.get("userEmail"); 45 const invitations = await getUserPendingInvitations(userEmail); 46 return c.json(invitations); 47 }, 48 ) 49 .get( 50 "/:id", 51 describeRoute({ 52 operationId: "getInvitationDetails", 53 tags: ["Invitations"], 54 description: "Get details of a specific invitation by ID", 55 responses: { 56 200: { 57 description: "Invitation details", 58 content: { 59 "application/json": { 60 schema: resolver( 61 v.object({ 62 valid: v.boolean(), 63 invitation: v.optional( 64 v.object({ 65 id: v.string(), 66 email: v.string(), 67 workspaceName: v.string(), 68 inviterName: v.string(), 69 expiresAt: v.string(), 70 status: v.string(), 71 expired: v.boolean(), 72 }), 73 ), 74 error: v.optional(v.string()), 75 }), 76 ), 77 }, 78 }, 79 }, 80 }, 81 }), 82 validator("param", v.object({ id: v.string() })), 83 async (c) => { 84 const { id } = c.req.valid("param"); 85 const result = await getInvitationDetailsController(id); 86 return c.json(result); 87 }, 88 ); 89 90export default invitation;