feat(subscription): support balance purchases

Refs #3071.
This commit is contained in:
CaIon
2026-05-26 12:03:02 +08:00
parent 1011934987
commit 6b6c9904ac
14 changed files with 222 additions and 9 deletions
@@ -62,6 +62,8 @@ import type { PaymentMethod, TopupInfo } from '../types'
interface SubscriptionPlansCardProps {
topupInfo: TopupInfo | null
onAvailabilityChange?: (available: boolean) => void
userQuota?: number
onPurchaseSuccess?: () => void | Promise<void>
}
function getEpayMethods(payMethods: PaymentMethod[] = []): PaymentMethod[] {
@@ -91,6 +93,8 @@ function getBillingPreferenceLabel(
export function SubscriptionPlansCard({
topupInfo,
onAvailabilityChange,
userQuota,
onPurchaseSuccess,
}: SubscriptionPlansCardProps) {
const { t } = useTranslation()
@@ -633,6 +637,8 @@ export function SubscriptionPlansCard({
enableWaffoPancake={enableWaffoPancake}
enableOnlineTopUp={enableOnlineTopUp}
epayMethods={epayMethods}
userQuota={userQuota}
onPurchaseSuccess={onPurchaseSuccess}
purchaseLimit={
selectedPlan?.plan?.max_purchase_per_user
? Number(selectedPlan.plan.max_purchase_per_user)
+2
View File
@@ -309,6 +309,8 @@ export function Wallet(props: WalletProps) {
<SubscriptionPlansCard
topupInfo={topupInfo}
onAvailabilityChange={handleSubscriptionAvailabilityChange}
userQuota={user?.quota}
onPurchaseSuccess={fetchUser}
/>
</div>