diff --git a/apps/builder/src/features/billing/components/UsageProgressBars.tsx b/apps/builder/src/features/billing/components/UsageProgressBars.tsx index ee2628e5d..4f06e7aa2 100644 --- a/apps/builder/src/features/billing/components/UsageProgressBars.tsx +++ b/apps/builder/src/features/billing/components/UsageProgressBars.tsx @@ -32,9 +32,10 @@ export const UsageProgressBars = ({ workspace }: Props) => { const workspaceChatsLimit = getChatsLimit(workspace) - const chatsPercentage = Math.round( - (totalChatsUsed / workspaceChatsLimit) * 100 - ) + const chatsPercentage = + workspaceChatsLimit === 'inf' + ? 0 + : Math.round((totalChatsUsed / workspaceChatsLimit) * 100) return ( @@ -79,7 +80,7 @@ export const UsageProgressBars = ({ workspace }: Props) => { /{' '} - {workspaceChatsLimit === -1 + {workspaceChatsLimit === 'inf' ? scopedT('unlimited') : parseNumberWithCommas(workspaceChatsLimit)} diff --git a/apps/builder/src/features/workspace/components/MembersList.tsx b/apps/builder/src/features/workspace/components/MembersList.tsx index 91ade044d..959762e18 100644 --- a/apps/builder/src/features/workspace/components/MembersList.tsx +++ b/apps/builder/src/features/workspace/components/MembersList.tsx @@ -92,9 +92,12 @@ export const MembersList = () => { const seatsLimit = workspace ? getSeatsLimit(workspace) : undefined - const canInviteNewMember = workspace - ? currentMembersCount < (seatsLimit as number) - : false + const canInviteNewMember = + seatsLimit === 'inf' + ? true + : seatsLimit + ? currentMembersCount < seatsLimit + : false return ( diff --git a/apps/builder/src/pages/api/workspaces/[workspaceId]/invitations.ts b/apps/builder/src/pages/api/workspaces/[workspaceId]/invitations.ts index 1d937f4ad..5d5d2c2d7 100644 --- a/apps/builder/src/pages/api/workspaces/[workspaceId]/invitations.ts +++ b/apps/builder/src/pages/api/workspaces/[workspaceId]/invitations.ts @@ -36,9 +36,10 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => { where: { workspaceId: workspace.id }, }), ]) + const seatsLimit = getSeatsLimit(workspace) if ( - getSeatsLimit(workspace) <= - existingMembersCount + existingInvitationsCount + seatsLimit !== 'inf' && + seatsLimit <= existingMembersCount + existingInvitationsCount ) return res.status(400).send('Seats limit reached') if (existingUser) { diff --git a/packages/lib/billing/getChatsLimit.ts b/packages/lib/billing/getChatsLimit.ts index ad938cff0..b5227e423 100644 --- a/packages/lib/billing/getChatsLimit.ts +++ b/packages/lib/billing/getChatsLimit.ts @@ -13,7 +13,7 @@ export const getChatsLimit = ({ plan === Plan.LIFETIME || plan === Plan.OFFERED ) - return -1 - if (plan === Plan.CUSTOM) return customChatsLimit ?? -1 + return 'inf' + if (plan === Plan.CUSTOM) return customChatsLimit ?? 'inf' return chatsLimits[plan] } diff --git a/packages/lib/billing/getSeatsLimit.ts b/packages/lib/billing/getSeatsLimit.ts index d9ce44ad1..0843f0586 100644 --- a/packages/lib/billing/getSeatsLimit.ts +++ b/packages/lib/billing/getSeatsLimit.ts @@ -6,7 +6,7 @@ export const getSeatsLimit = ({ plan, customSeatsLimit, }: Pick) => { - if (plan === Plan.UNLIMITED) return -1 - if (plan === Plan.CUSTOM) return customSeatsLimit ? customSeatsLimit : -1 + if (plan === Plan.UNLIMITED) return 'inf' + if (plan === Plan.CUSTOM) return customSeatsLimit ? customSeatsLimit : 'inf' return seatsLimits[plan] } diff --git a/packages/scripts/checkAndReportChatsUsage.ts b/packages/scripts/checkAndReportChatsUsage.ts index 0bc3f2f8e..f13b7547f 100644 --- a/packages/scripts/checkAndReportChatsUsage.ts +++ b/packages/scripts/checkAndReportChatsUsage.ts @@ -110,6 +110,7 @@ export const checkAndReportChatsUsage = async () => { workspaceId: result.workspace.id, subscription, }) + if (chatsLimit === 'inf') continue if ( chatsLimit > 0 && totalChatsUsed >= chatsLimit * LIMIT_EMAIL_TRIGGER_PERCENT &&