mirror of
https://github.com/4ian/GDevelop.git
synced 2025-10-15 10:19:04 +00:00
Open subscription dialog instead of credits dialog when reaching max daily AI requests (#7892)
This commit is contained in:
@@ -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(
|
||||
|
Reference in New Issue
Block a user