diff --git a/apps/main/src/contexts/UpgradeBlockContext.tsx b/apps/main/src/contexts/UpgradeBlockContext.tsx index 51dfbd9..b05dbaa 100644 --- a/apps/main/src/contexts/UpgradeBlockContext.tsx +++ b/apps/main/src/contexts/UpgradeBlockContext.tsx @@ -28,18 +28,20 @@ export const UpgradeBlockProvider: React.FC = ({ chil const { data: organizationData } = useOrganization(); const user = useMaybeUser(); + // Wait for both user and organization data before deciding. + // Temporary users are never blocked — they have read-only access enforced at the API level. const reason = - user?.is_temporary + !user || !organizationData ? null - : organizationData - ? getOrganizationUpgradeBlockReason({ + : user.is_temporary + ? null + : getOrganizationUpgradeBlockReason({ is_trial_expired: organizationData.is_trial_expired, required_plan: organizationData.required_plan, required_team_quantity: organizationData.required_team_quantity, active_subscription_plan: organizationData.active_subscription_plan, active_subscription_quantity: organizationData.active_subscription_quantity, - }) - : null; + }); const isBlocked = reason !== null;