Fixes upgrade for users without customer id (#2059)

pull/2061/head
Omar López 2022-03-04 09:38:42 -07:00 committed by GitHub
parent eeb0cd7e4d
commit b6a20cc4d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 2 deletions

View File

@ -34,7 +34,8 @@ const userType = Prisma.validator<Prisma.UserArgs>()({
});
type UserType = Prisma.UserGetPayload<typeof userType>;
export async function getStripeCustomerId(user: UserType): Promise<string | null> {
/** This will retrieve the customer ID from Stripe or create it if it doesn't exists yet. */
export async function getStripeCustomerId(user: UserType): Promise<string> {
let customerId: string | null = null;
if (user?.metadata && typeof user.metadata === "object" && "stripeCustomerId" in user.metadata) {

View File

@ -1,6 +1,8 @@
import { Prisma } from "@prisma/client";
import type { NextApiRequest, NextApiResponse } from "next";
import { getStripeCustomerId } from "@ee/lib/stripe/customer";
import { getSession } from "@lib/auth";
import { WEBSITE_URL } from "@lib/config/constants";
import { HttpError as HttpCode } from "@lib/core/http/error";
@ -27,6 +29,8 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
},
});
const stripeCustomerId = await getStripeCustomerId(user);
try {
const response = await fetch(`${WEBSITE_URL}/api/upgrade`, {
method: "POST",
@ -35,7 +39,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
"Content-Type": "application/json",
},
body: JSON.stringify({
stripeCustomerId: (user.metadata as Prisma.JsonObject)?.stripeCustomerId,
stripeCustomerId,
email: user.email,
fromApp: true,
}),