Check if saas before blocking credit insufficiencies (#5929)

fixes #5926
This commit is contained in:
ConnorYoh
2026-03-13 10:28:39 +00:00
committed by GitHub
parent 9969fe5a6d
commit 44e036da5a
4 changed files with 18 additions and 9 deletions
@@ -1,5 +1,6 @@
import { useEffect, useState } from 'react';
import { useSaaSBilling } from '@app/contexts/SaasBillingContext';
import { useSaaSMode } from '@app/hooks/useSaaSMode';
import { BILLING_CONFIG } from '@app/config/billing';
import { CreditExhaustedModal } from '@app/components/shared/modals/CreditExhaustedModal';
import { InsufficientCreditsModal } from '@app/components/shared/modals/InsufficientCreditsModal';
@@ -19,16 +20,17 @@ export function CreditModalBootstrap() {
requiredCredits?: number;
}>({});
const isSaaSMode = useSaaSMode();
const { creditBalance, isManagedTeamMember, lastFetchTime, plansLastFetchTime, refreshPlans } = useSaaSBilling();
// Preload plan pricing when billing confirms credits are low.
// Fires once: only when billing has loaded (lastFetchTime set) and plans haven't been
// Fires once: only when in SaaS mode, billing has loaded (lastFetchTime set) and plans haven't been
// fetched yet (plansLastFetchTime null). This way the modal shows real prices instantly.
useEffect(() => {
if (lastFetchTime !== null && plansLastFetchTime === null && creditBalance < BILLING_CONFIG.PLAN_PRICING_PRELOAD_THRESHOLD && !isManagedTeamMember) {
if (isSaaSMode && lastFetchTime !== null && plansLastFetchTime === null && creditBalance < BILLING_CONFIG.PLAN_PRICING_PRELOAD_THRESHOLD && !isManagedTeamMember) {
refreshPlans();
}
}, [lastFetchTime, plansLastFetchTime, creditBalance, isManagedTeamMember, refreshPlans]);
}, [isSaaSMode, lastFetchTime, plansLastFetchTime, creditBalance, isManagedTeamMember, refreshPlans]);
// Monitor credit balance and dispatch events
useCreditEvents();