diff --git a/apps/webapp/app/models/member.server.ts b/apps/webapp/app/models/member.server.ts index 716590898e4..bfb51bdf778 100644 --- a/apps/webapp/app/models/member.server.ts +++ b/apps/webapp/app/models/member.server.ts @@ -225,3 +225,36 @@ export async function resendInvite({ inviteId }: { inviteId: string }) { }, }); } + +export async function revokeInvite({ + userId, + slug, + inviteId, +}: { + userId: string; + slug: string; + inviteId: string; +}) { + const org = await prisma.organization.findFirst({ + where: { slug, members: { some: { userId } } }, + }); + + if (!org) { + throw new Error("User does not have access to this organization"); + } + const invite = await prisma.orgMemberInvite.delete({ + where: { + id: inviteId, + }, + select: { + email: true, + organization: true, + }, + }); + + if (!invite) { + throw new Error("Invite not found"); + } + + return { email: invite.email, organization: invite.organization }; +} diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.team/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.team/route.tsx index 80718a213b4..f6cd7a4fc53 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.team/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.team/route.tsx @@ -31,7 +31,12 @@ import { useUser } from "~/hooks/useUser"; import { getTeamMembersAndInvites, removeTeamMember } from "~/models/member.server"; import { redirectWithSuccessMessage } from "~/models/message.server"; import { requireUserId } from "~/services/session.server"; -import { inviteTeamMemberPath, organizationTeamPath, resendInvitePath } from "~/utils/pathBuilder"; +import { + inviteTeamMemberPath, + organizationTeamPath, + resendInvitePath, + revokeInvitePath, +} from "~/utils/pathBuilder"; export const loader = async ({ request, params }: LoaderFunctionArgs) => { const userId = await requireUserId(request); @@ -147,8 +152,9 @@ export default function Page() { Invite sent {} -
+
+
))} @@ -272,7 +278,7 @@ function LeaveTeamModal({ function ResendButton({ invite }: { invite: Invite }) { return ( -
+