import { Trans } from '@lingui/react/macro'; import { OrganisationMemberInviteStatus } from '@prisma/client'; import { Link } from 'react-router'; import { prisma } from '@documenso/prisma'; import { Button } from '@documenso/ui/primitives/button'; import type { Route } from './+types/organisation.decline.$token'; export async function loader({ params }: Route.LoaderArgs) { const { token } = params; if (!token) { return { state: 'InvalidLink', } as const; } const organisationMemberInvite = await prisma.organisationMemberInvite.findUnique({ where: { token, }, include: { organisation: { select: { name: true, }, }, }, }); if (!organisationMemberInvite) { return { state: 'InvalidLink', } as const; } if (organisationMemberInvite.status !== OrganisationMemberInviteStatus.DECLINED) { await prisma.organisationMemberInvite.update({ where: { id: organisationMemberInvite.id, }, data: { status: OrganisationMemberInviteStatus.DECLINED, }, }); } return { state: 'Success', organisationName: organisationMemberInvite.organisation.name, } as const; } export default function DeclineInvitationPage({ loaderData }: Route.ComponentProps) { const data = loaderData; if (data.state === 'InvalidLink') { return (