mirror of
https://github.com/documenso/documenso.git
synced 2025-11-14 16:51:38 +10:00
feat: add platform plan pricing (#1505)
Add platform plan to the billing page.
This commit is contained in:
@ -41,7 +41,7 @@ export default async function BillingSettingsPage() {
|
|||||||
|
|
||||||
const [subscriptions, prices, primaryAccountPlanPrices] = await Promise.all([
|
const [subscriptions, prices, primaryAccountPlanPrices] = await Promise.all([
|
||||||
getSubscriptionsByUserId({ userId: user.id }),
|
getSubscriptionsByUserId({ userId: user.id }),
|
||||||
getPricesByInterval({ plan: STRIPE_PLAN_TYPE.REGULAR }),
|
getPricesByInterval({ plans: [STRIPE_PLAN_TYPE.REGULAR, STRIPE_PLAN_TYPE.PLATFORM] }),
|
||||||
getPrimaryAccountPlanPrices(),
|
getPrimaryAccountPlanPrices(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@ -12,10 +12,10 @@ export type GetPricesByIntervalOptions = {
|
|||||||
/**
|
/**
|
||||||
* Filter products by their meta 'plan' attribute.
|
* Filter products by their meta 'plan' attribute.
|
||||||
*/
|
*/
|
||||||
plan?: STRIPE_PLAN_TYPE.COMMUNITY | STRIPE_PLAN_TYPE.REGULAR;
|
plans?: STRIPE_PLAN_TYPE[];
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getPricesByInterval = async ({ plan }: GetPricesByIntervalOptions = {}) => {
|
export const getPricesByInterval = async ({ plans }: GetPricesByIntervalOptions = {}) => {
|
||||||
let { data: prices } = await stripe.prices.search({
|
let { data: prices } = await stripe.prices.search({
|
||||||
query: `active:'true' type:'recurring'`,
|
query: `active:'true' type:'recurring'`,
|
||||||
expand: ['data.product'],
|
expand: ['data.product'],
|
||||||
@ -27,7 +27,8 @@ export const getPricesByInterval = async ({ plan }: GetPricesByIntervalOptions =
|
|||||||
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
||||||
const product = price.product as Stripe.Product;
|
const product = price.product as Stripe.Product;
|
||||||
|
|
||||||
const filter = !plan || product.metadata?.plan === plan;
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
||||||
|
const filter = !plans || plans.includes(product.metadata?.plan as STRIPE_PLAN_TYPE);
|
||||||
|
|
||||||
// Filter out prices for products that are not active.
|
// Filter out prices for products that are not active.
|
||||||
return product.active && filter;
|
return product.active && filter;
|
||||||
|
|||||||
Reference in New Issue
Block a user