feat(payment): support user-bound seven-discount offers
Docker Image / Build and Push Docker Image (push) Successful in 1m55s
Docker Image / Build and Push Docker Image (push) Successful in 1m55s
This commit is contained in:
@@ -17,8 +17,9 @@ import { useCharacterCatalog } from "@/providers/character-catalog-provider";
|
||||
import { clearPendingChatNavigation } from "@/lib/navigation/chat_unlock_session";
|
||||
import { buildGlobalPageUrl } from "@/router/global-route-context";
|
||||
import { resolveAuthenticatedNavigation } from "@/router/navigation-resolver";
|
||||
import { getCharacterRoutes, ROUTES } from "@/router/routes";
|
||||
import { getCharacterRoutes, ROUTE_BUILDERS, ROUTES } from "@/router/routes";
|
||||
import type { CommercialAction } from "@/data/schemas/chat";
|
||||
import { paymentApi } from "@/data/services/api";
|
||||
import { behaviorAnalytics } from "@/lib/analytics";
|
||||
|
||||
import { MobileShell } from "@/app/_components/core";
|
||||
@@ -252,7 +253,7 @@ export function ChatScreen() {
|
||||
router.push(characterRoutes.privateZone);
|
||||
}
|
||||
|
||||
function handleCommercialAction(action: CommercialAction): void {
|
||||
async function handleCommercialAction(action: CommercialAction): Promise<void> {
|
||||
behaviorAnalytics.elementClick(
|
||||
"chat.commercial_action.open",
|
||||
action.ctaLabel,
|
||||
@@ -264,6 +265,29 @@ export function ChatScreen() {
|
||||
target: action.target,
|
||||
},
|
||||
);
|
||||
if (action.target === "discountConsent") {
|
||||
const offer = await paymentApi.acceptCommercialOffer(action.actionId);
|
||||
behaviorAnalytics.elementClick(
|
||||
"chat.commercial_action.accepted",
|
||||
action.ctaLabel,
|
||||
{
|
||||
actionId: action.actionId,
|
||||
actionType: action.type,
|
||||
characterId: state.characterId,
|
||||
planId: offer.planId,
|
||||
discountPercent: offer.discountPercent,
|
||||
},
|
||||
);
|
||||
router.push(
|
||||
ROUTE_BUILDERS.subscription(offer.subscriptionType, {
|
||||
sourceCharacterSlug: character.slug,
|
||||
returnTo: "chat",
|
||||
planId: offer.planId,
|
||||
commercialOfferId: offer.commercialOfferId,
|
||||
}),
|
||||
);
|
||||
return;
|
||||
}
|
||||
router.push(
|
||||
action.target === "giftCatalog"
|
||||
? characterRoutes.tip
|
||||
|
||||
Reference in New Issue
Block a user