import { prisma } from "@/prisma"; import { notFound, redirect } from 'next/navigation'; import { auth } from "@/auth"; import { getUser } from "@/data/user"; import { AcceptInviteButton } from "./components/acceptInviteButton" import Image from "next/image"; import logoDark from "@/public/sb_logo_dark_large.png"; import logoLight from "@/public/sb_logo_light_large.png"; import { fetchSubscription } from "@/actions"; import { isServiceError } from "@/lib/utils"; interface RedeemPageProps { searchParams?: { invite_id?: string; }; } export default async function RedeemPage({ searchParams }: RedeemPageProps) { const invite_id = searchParams?.invite_id; if (!invite_id) { notFound(); } const invite = await prisma.invite.findUnique({ where: { id: invite_id }, }); if (!invite) { return (
{"Sourcebot {"Sourcebot

This invite has either expired or was revoked. Contact your organization owner.

); } const session = await auth(); let user = undefined; if (session) { user = await getUser(session.user.id); } // Auth case if (user) { if (user.email !== invite.recipientEmail) { return (
{"Sourcebot {"Sourcebot

This invite doesn't belong to you. You're currenly signed in with ${user.email}

) } else { const org = await prisma.org.findUnique({ where: { id: invite.orgId }, }); if (!org) { return (
{"Sourcebot {"Sourcebot

This organization wasn't found. Please contact your organization owner.

) } const stripeCustomerId = org.stripeCustomerId; if (stripeCustomerId) { const subscription = await fetchSubscription(org.domain); if (isServiceError(subscription)) { return (
{"Sourcebot {"Sourcebot

This organization's subscription has expired. Please renew the subscription and try again.

) } } return (
{"Sourcebot {"Sourcebot

You have been invited to org {org.name}

); } } else { redirect(`/login?callbackUrl=${encodeURIComponent(`/redeem?invite_id=${invite_id}`)}`); } }