Open subscription dialog instead of credits dialog when reaching max daily AI requests (#7892)

This commit is contained in:
Clément Pasteau
2025-10-10 08:43:19 +02:00
committed by GitHub
parent 6d0f93c3ce
commit 426e654f44

View File

@@ -59,6 +59,7 @@ import { prepareAiUserContent } from './PrepareAiUserContent';
import { AiRequestContext } from './AiRequestContext';
import { getAiConfigurationPresetsWithAvailability } from './AiConfiguration';
import { type CreateProjectResult } from '../Utils/UseCreateProject';
import { SubscriptionSuggestionContext } from '../Profile/Subscription/SubscriptionSuggestionContext';
const gd: libGDevelop = global.gd;
@@ -597,6 +598,9 @@ export const AskAiEditor = React.memo<Props>(
onRefreshLimits,
subscription,
} = React.useContext(AuthenticatedUserContext);
const { openSubscriptionDialog } = React.useContext(
SubscriptionSuggestionContext
);
const availableCredits = limits ? limits.credits.userBalance.amount : 0;
const quota =
@@ -648,6 +652,18 @@ export const AskAiEditor = React.memo<Props>(
if (quota && quota.limitReached && aiRequestPriceInCredits) {
payWithCredits = true;
if (availableCredits < aiRequestPriceInCredits) {
// Not enough credits.
if (!hasValidSubscriptionPlan(subscription)) {
// User is not subscribed, suggest them to subscribe.
openSubscriptionDialog({
analyticsMetadata: {
reason: 'AI requests (subscribe)',
recommendedPlanId: 'gdevelop_gold',
placementId: 'ai-requests',
},
});
return;
}
openCreditsPackageDialog({
missingCredits: aiRequestPriceInCredits - availableCredits,
});
@@ -758,6 +774,8 @@ export const AskAiEditor = React.memo<Props>(
updateAiRequest,
newAiRequestOptions,
onOpenAskAi,
subscription,
openSubscriptionDialog,
]
);
@@ -817,6 +835,19 @@ export const AskAiEditor = React.memo<Props>(
) {
payWithCredits = true;
if (availableCredits < aiRequestPriceInCredits) {
// Not enough credits.
if (!hasValidSubscriptionPlan(subscription)) {
// User is not subscribed, suggest them to subscribe.
openSubscriptionDialog({
analyticsMetadata: {
reason: 'AI requests (subscribe)',
recommendedPlanId: 'gdevelop_gold',
placementId: 'ai-requests',
},
});
return;
}
openCreditsPackageDialog({
missingCredits: aiRequestPriceInCredits - availableCredits,
});
@@ -934,6 +965,8 @@ export const AskAiEditor = React.memo<Props>(
hasFunctionsCallsToProcess,
onOpenAskAi,
onOpenLayout,
subscription,
openSubscriptionDialog,
]
);
const onSendEditorFunctionCallResults = React.useCallback(