fix(subscription): return chat paywalls after payment
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
* 8. 协议复选框
|
||||
*/
|
||||
import { useEffect, useMemo, useRef, useState } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
|
||||
import { Checkbox, MobileShell } from "@/app/_components/core";
|
||||
import { AppConstants } from "@/core/app_constants";
|
||||
@@ -25,6 +26,7 @@ import {
|
||||
usePaymentState,
|
||||
} from "@/stores/payment/payment-context";
|
||||
import { useUserDispatch, useUserState } from "@/stores/user/user-context";
|
||||
import { ROUTES } from "@/router/routes";
|
||||
|
||||
import {
|
||||
SubscriptionBackLink,
|
||||
@@ -50,12 +52,15 @@ export type { SubscriptionType } from "./subscription-screen.helpers";
|
||||
export interface SubscriptionScreenProps {
|
||||
subscriptionType?: SubscriptionType;
|
||||
shouldResumePendingOrder?: boolean;
|
||||
returnTo?: "chat" | null;
|
||||
}
|
||||
|
||||
export function SubscriptionScreen({
|
||||
subscriptionType = "vip",
|
||||
shouldResumePendingOrder = false,
|
||||
returnTo = null,
|
||||
}: SubscriptionScreenProps) {
|
||||
const router = useRouter();
|
||||
const user = useUserState();
|
||||
const userDispatch = useUserDispatch();
|
||||
const payment = usePaymentState();
|
||||
@@ -176,6 +181,14 @@ export function SubscriptionScreen({
|
||||
? "Choose a voice package"
|
||||
: "Choose a subscription plan";
|
||||
|
||||
const handlePaymentSuccessClose = () => {
|
||||
setShowPaymentSuccessDialog(false);
|
||||
paymentDispatch({ type: "PaymentReset" });
|
||||
if (returnTo === "chat") {
|
||||
router.replace(ROUTES.chat);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (payment.isLoadingPlans || payment.plans.length === 0) return;
|
||||
if (selectedPlan !== null) return;
|
||||
@@ -272,6 +285,7 @@ export function SubscriptionScreen({
|
||||
<SubscriptionCheckoutButton
|
||||
disabled={!canActivate}
|
||||
subscriptionType={subscriptionType}
|
||||
returnTo={returnTo}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -312,7 +326,7 @@ export function SubscriptionScreen({
|
||||
<SubscriptionPaymentSuccessDialog
|
||||
open={showPaymentSuccessDialog}
|
||||
subscriptionType={subscriptionType}
|
||||
onClose={() => setShowPaymentSuccessDialog(false)}
|
||||
onClose={handlePaymentSuccessClose}
|
||||
/>
|
||||
</div>
|
||||
</MobileShell>
|
||||
|
||||
Reference in New Issue
Block a user