import type { LoaderFunction } from "@remix-run/node"; import { json } from "superjson-remix"; import { Prisma } from "@prisma/client"; import { requireLoggedIn } from "~/utils/auth.server"; import db from "~/utils/db.server"; export type KeypadLoaderData = { hasOngoingSubscription: boolean; hasPhoneNumber: boolean; lastRecipientCalled?: string; }; const loader: LoaderFunction = async ({ request }) => { const { twilio } = await requireLoggedIn(request); const phoneNumber = await db.phoneNumber.findUnique({ where: { twilioAccountSid_isCurrent: { twilioAccountSid: twilio?.accountSid ?? "", isCurrent: true } }, }); const hasOngoingSubscription = true; // TODO const hasPhoneNumber = Boolean(phoneNumber); const lastCall = phoneNumber && (await db.phoneCall.findFirst({ where: { phoneNumberId: phoneNumber.id }, orderBy: { createdAt: Prisma.SortOrder.desc }, })); return json( { hasOngoingSubscription, hasPhoneNumber, lastRecipientCalled: lastCall?.recipient, }, { headers: { Vary: "Cookie" }, }, ); }; export default loader;