mirror of
https://github.com/Litlyx/litlyx
synced 2025-12-10 07:48:37 +01:00
add pricing
This commit is contained in:
66
shared/data/PREMIUM.ts
Normal file
66
shared/data/PREMIUM.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
|
||||
export type PREMIUM_TAG = typeof PREMIUM_TAGS[number];
|
||||
|
||||
export const PREMIUM_TAGS = [
|
||||
'FREE', 'PLAN_1', 'PLAN_2', 'PLAN_3', 'PLAN_99'
|
||||
] as const;
|
||||
|
||||
|
||||
export type PREMIUM_DATA = {
|
||||
COUNT_LIMIT: number,
|
||||
AI_MESSAGE_LIMIT: number,
|
||||
PRICE: string,
|
||||
ID: number
|
||||
}
|
||||
|
||||
export const PREMIUM_PLAN: Record<PREMIUM_TAG, PREMIUM_DATA> = {
|
||||
FREE: {
|
||||
ID: 0,
|
||||
COUNT_LIMIT: 3_000,
|
||||
AI_MESSAGE_LIMIT: 10,
|
||||
PRICE: 'price_1PNbHYB2lPUiVs9VZP32xglF'
|
||||
},
|
||||
PLAN_1: {
|
||||
ID: 1,
|
||||
COUNT_LIMIT: 150_000,
|
||||
AI_MESSAGE_LIMIT: 100,
|
||||
PRICE: 'price_1PNZjVB2lPUiVs9VrsTbJL04'
|
||||
},
|
||||
PLAN_2: {
|
||||
ID: 2,
|
||||
COUNT_LIMIT: 500_000,
|
||||
AI_MESSAGE_LIMIT: 5_000,
|
||||
PRICE: ''
|
||||
},
|
||||
PLAN_3: {
|
||||
ID: 3,
|
||||
COUNT_LIMIT: 2_000_000,
|
||||
AI_MESSAGE_LIMIT: 10_000,
|
||||
PRICE: ''
|
||||
},
|
||||
PLAN_99: {
|
||||
ID: 99,
|
||||
COUNT_LIMIT: 10_000_000,
|
||||
AI_MESSAGE_LIMIT: 100_000,
|
||||
PRICE: ''
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export function getPlanFromTag(tag: PREMIUM_TAG) {
|
||||
return PREMIUM_PLAN[tag];
|
||||
}
|
||||
|
||||
export function getPlanFromId(id: number) {
|
||||
for (const tag of PREMIUM_TAGS) {
|
||||
const plan = getPlanFromTag(tag);
|
||||
if (plan.ID === id) return plan;
|
||||
}
|
||||
}
|
||||
|
||||
export function getPlanFromPrice(price: string) {
|
||||
for (const tag of PREMIUM_TAGS) {
|
||||
const plan = getPlanFromTag(tag);
|
||||
if (plan.PRICE === price) return plan;
|
||||
}
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
|
||||
|
||||
export const PREMIUM_PLANS = [
|
||||
{ id: 0, tag: 'FREE', name: 'Free' },
|
||||
{ id: 1, tag: 'PLAN_1', name: 'Premium 1' },
|
||||
{ id: 2, tag: 'PLAN_2', name: 'Premium 2' },
|
||||
{ id: 3, tag: 'PLAN_3', name: 'Premium 3' },
|
||||
{ id: 99, tag: 'PLAN_99', name: 'Premium 99' },
|
||||
] as const;
|
||||
|
||||
export function getPlanFromPremiumType(premium_type?: number) {
|
||||
if (!premium_type) return PREMIUM_PLANS[0];
|
||||
const plan = PREMIUM_PLANS.find(e => e.id === premium_type);
|
||||
if (!plan) return PREMIUM_PLANS[0];
|
||||
return plan;
|
||||
}
|
||||
|
||||
export function getPlanFromPremiumTag(tag: PREMIUM_PLAN_TAG) {
|
||||
const plan = PREMIUM_PLANS.find(e => e.tag === tag);
|
||||
return plan;
|
||||
}
|
||||
|
||||
export type PREMIUM_PLAN_TAG = typeof PREMIUM_PLANS[number]['tag'];
|
||||
|
||||
export type PROJECT_LIMIT = {
|
||||
COUNT_LIMIT: number,
|
||||
AI_MESSAGE_LIMIT: number,
|
||||
}
|
||||
|
||||
export const PREMIUM_LIMITS: Record<PREMIUM_PLAN_TAG, PROJECT_LIMIT> = {
|
||||
FREE: {
|
||||
COUNT_LIMIT: 3_000,
|
||||
AI_MESSAGE_LIMIT: 10
|
||||
},
|
||||
PLAN_1: {
|
||||
COUNT_LIMIT: 150_000,
|
||||
AI_MESSAGE_LIMIT: 100
|
||||
},
|
||||
PLAN_2: {
|
||||
COUNT_LIMIT: 500_000,
|
||||
AI_MESSAGE_LIMIT: 5_000
|
||||
},
|
||||
PLAN_3: {
|
||||
COUNT_LIMIT: 2_000_000,
|
||||
AI_MESSAGE_LIMIT: 10_000
|
||||
},
|
||||
PLAN_99: {
|
||||
COUNT_LIMIT: 10_000_000,
|
||||
AI_MESSAGE_LIMIT: 100_000
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export type STRIPE_PLAN = {
|
||||
price: string
|
||||
}
|
||||
|
||||
export const STRIPE_PLANS: Record<PREMIUM_PLAN_TAG, STRIPE_PLAN> = {
|
||||
FREE: {
|
||||
price: 'price_1PNbHYB2lPUiVs9VZP32xglF'
|
||||
},
|
||||
PLAN_1: {
|
||||
price: 'price_1PNZjVB2lPUiVs9VrsTbJL04'
|
||||
},
|
||||
PLAN_2: {
|
||||
price: ''
|
||||
},
|
||||
PLAN_3: {
|
||||
price: ''
|
||||
},
|
||||
PLAN_99: {
|
||||
price: ''
|
||||
}
|
||||
}
|
||||
|
||||
export function getPlanTagFromStripePrice(price: string): PREMIUM_PLAN_TAG | undefined {
|
||||
for (const plan of PREMIUM_PLANS.map(e => e.tag)) {
|
||||
const stripePrice = STRIPE_PLANS[plan].price;
|
||||
if (stripePrice === price) return plan;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user