⚡ (billing) Automatic usage-based billing (#924)
BREAKING CHANGE: Stripe environment variables simplified. Check out the new configs to adapt your existing system. Closes #906 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ### Summary by CodeRabbit **New Features:** - Introduced a usage-based billing system, providing more flexibility and options for users. - Integrated with Stripe for a smoother and more secure payment process. - Enhanced the user interface with improvements to the billing, workspace, and pricing pages for a more intuitive experience. **Improvements:** - Simplified the billing logic, removing additional chats and yearly billing for a more streamlined user experience. - Updated email notifications to keep users informed about their usage and limits. - Improved pricing and currency formatting for better clarity and understanding. **Testing:** - Updated tests and specifications to ensure the reliability of new features and improvements. **Note:** These changes aim to provide a more flexible and user-friendly billing system, with clearer pricing and improved notifications. Users should find the new system more intuitive and easier to navigate. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -8,7 +8,6 @@ import {
|
||||
import { UnlockPlanAlertInfo } from '@/components/UnlockPlanAlertInfo'
|
||||
import { WorkspaceInvitation, WorkspaceRole } from '@typebot.io/prisma'
|
||||
import React from 'react'
|
||||
import { getSeatsLimit, isSeatsLimitReached } from '@typebot.io/lib/pricing'
|
||||
import { AddMemberForm } from './AddMemberForm'
|
||||
import { MemberItem } from './MemberItem'
|
||||
import { isDefined } from '@typebot.io/lib'
|
||||
@@ -21,6 +20,7 @@ import { updateMemberQuery } from '../queries/updateMemberQuery'
|
||||
import { Member } from '../types'
|
||||
import { useWorkspace } from '../WorkspaceProvider'
|
||||
import { useScopedI18n } from '@/locales'
|
||||
import { getSeatsLimit } from '@typebot.io/lib/billing/getSeatsLimit'
|
||||
|
||||
export const MembersList = () => {
|
||||
const scopedT = useScopedI18n('workspace.membersList')
|
||||
@@ -92,13 +92,9 @@ export const MembersList = () => {
|
||||
|
||||
const seatsLimit = workspace ? getSeatsLimit(workspace) : undefined
|
||||
|
||||
const canInviteNewMember =
|
||||
workspace &&
|
||||
!isSeatsLimitReached({
|
||||
plan: workspace?.plan,
|
||||
customSeatsLimit: workspace?.customSeatsLimit,
|
||||
existingMembersAndInvitationsCount: currentMembersCount,
|
||||
})
|
||||
const canInviteNewMember = workspace
|
||||
? currentMembersCount < (seatsLimit as number)
|
||||
: false
|
||||
|
||||
return (
|
||||
<Stack w="full" spacing={3}>
|
||||
|
||||
Reference in New Issue
Block a user