fix: sms credits follow up (#21304)

* address mrge review comments

* code clean up

* fix type error

---------

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
This commit is contained in:
Carina WollendorferandCarinaWolli authored and GitHub committed 2025-05-15 08:33:38 +00:00
1 parent 8d675fd8b6
commit 553eab59e6
8 files changed
+10 -11

No files matched your search

+2 -2
View File
@@ -76,7 +76,7 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
const creditService = new CreditService();
if (countryCode === "US" || countryCode === "CA") {
// SMS to US and CA are free on a team plan
// SMS to US and CA are free
let teamIdToCharge = parsedTeamId;
if (!teamIdToCharge && parsedUserId) {
@@ -100,7 +100,7 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
credits: 0,
});
return res.status(200).send(`SMS to US and CA are free on a team plan. Credits set to 0`);
return res.status(200).send(`SMS to US and CA are free. Credits set to 0`);
}
let orgId;
@@ -52,7 +52,7 @@ export const CreditBalanceLimitReachedEmail = (
<div style={{ textAlign: "center", marginTop: "24px" }}>
<CallToAction
label={user.t("buy_credits")}
href={`${WEBAPP_URL}/settings/teams/${user.id}/credits`}
href={`${WEBAPP_URL}/settings/billing`}
endIconName="linkIcon"
/>
</div>
@@ -61,7 +61,7 @@ export const CreditBalanceLowWarningEmail = (
<div style={{ textAlign: "center", marginTop: "24px" }}>
<CallToAction
label={user.t("buy_credits")}
href={`${WEBAPP_URL}/settings/teams/${user.id}/billing`}
href={`${WEBAPP_URL}/settings/billing`}
endIconName="linkIcon"
/>
</div>
@@ -14,7 +14,7 @@ const handler = async (data: SWHMap["checkout.session.completed"]["data"]) => {
const userId = session.metadata?.userId ? Number(session.metadata.userId) : undefined;
if (!teamId && !userId) {
throw new HttpCode(400, "Team id and user id, but at least one is required");
throw new HttpCode(400, "Team id and user id are missing, but at least one is required");
}
const lineItems = await stripe.checkout.sessions.listLineItems(session.id);
@@ -395,7 +395,6 @@ describe("CreditService", () => {
vi.spyOn(CreditService.prototype, "getMonthlyCredits").mockResolvedValue(500);
const result = await creditService.getAllCreditsForTeam(1);
console.log(`tesult ${JSON.stringify(result)}`);
expect(result).toEqual({
totalMonthlyCredits: 500,
totalRemainingMonthlyCredits: 420, // 500 - (50 + 30)
+1 -1
View File
@@ -85,7 +85,7 @@ export class CreditsRepository {
}
}
static async findCreditBalanceWithExpenseLogs({ teamId }: { teamId?: number }) {
static async findCreditBalanceWithExpenseLogs({ teamId }: { teamId: number }) {
return await prisma.creditBalance.findUnique({
where: {
teamId,
@@ -34,9 +34,9 @@ export const buyCreditsHandler = async ({ ctx, input }: BuyCreditsOptions) => {
}
} else {
// if user id is part of a team, user can't buy credits for themselves
const membership = await MembershipRepository.findAllAcceptedMemberships(ctx.user.id);
const memberships = await MembershipRepository.findAllAcceptedMemberships(ctx.user.id);
if (membership.length > 0) {
if (memberships.length > 0) {
throw new TRPCError({
code: "UNAUTHORIZED",
});
@@ -25,9 +25,9 @@ export const getAllCreditsHandler = async ({ ctx, input }: GetAllCreditsOptions)
}
} else {
//if user is part of team, don't return any credits if teamId is not given
const membership = await MembershipRepository.findAllAcceptedMemberships(ctx.user.id);
const memberships = await MembershipRepository.findAllAcceptedMemberships(ctx.user.id);
if (membership.length > 0) {
if (memberships.length > 0) {
return null;
}
}