fix: not owner can not pay (#1772)

This commit is contained in:
Joel 2023-12-18 16:54:47 +08:00 • committed by GitHub
commit 354d033e60
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 24 additions and 8 deletions

View file

@ -9,6 +9,7 @@ import PlanItem from './plan-item'
import { XClose } from '@/app/components/base/icons/src/vender/line/general'
import { useProviderContext } from '@/context/provider-context'
import GridMask from '@/app/components/base/grid-mask'
import { useAppContext } from '@/context/app-context'
type Props = {
onCancel: () => void
@ -19,7 +20,8 @@ const Pricing: FC<Props> = ({
}) => {
const { t } = useTranslation()
const { plan } = useProviderContext()
const { isCurrentWorkspaceOwner } = useAppContext()
const canPay = isCurrentWorkspaceOwner
const [planRange, setPlanRange] = React.useState<PlanRange>(PlanRange.monthly)
return createPortal(
@ -41,21 +43,25 @@ const Pricing: FC<Props> = ({
currentPlan={plan.type}
plan={Plan.sandbox}
planRange={planRange}
canPay={canPay}
/>
<PlanItem
currentPlan={plan.type}
plan={Plan.professional}
planRange={planRange}
canPay={canPay}
/>
<PlanItem
currentPlan={plan.type}
plan={Plan.team}
planRange={planRange}
canPay={canPay}
/>
<PlanItem
currentPlan={plan.type}
plan={Plan.enterprise}
planRange={planRange}
canPay={canPay}
/>
</div>
</div>

View file

@ -16,6 +16,7 @@ type Props = {
currentPlan: Plan
plan: Plan
planRange: PlanRange
canPay: boolean
}
const KeyValue = ({ label, value, tooltip }: { label: string; value: string | number | JSX.Element; tooltip?: string }) => {
@ -65,6 +66,7 @@ const PlanItem: FC<Props> = ({
plan,
currentPlan,
planRange,
canPay,
}) => {
const { t } = useTranslation()
const [loading, setLoading] = React.useState(false)
@ -75,10 +77,13 @@ const PlanItem: FC<Props> = ({
const planInfo = ALL_PLANS[plan]
const isYear = planRange === PlanRange.yearly
const isCurrent = plan === currentPlan
const isPlanDisabled = planInfo.level <= ALL_PLANS[currentPlan].level
const isPlanDisabled = planInfo.level <= ALL_PLANS[currentPlan].level || (!canPay && plan !== Plan.enterprise)
const { isCurrentWorkspaceManager } = useAppContext()
const btnText = (() => {
if (!canPay && plan !== Plan.enterprise)
return t('billing.plansCommon.contractOwner')
if (isCurrent)
return t('billing.plansCommon.currentPlan')