fix(private-room): preserve payment return route
This commit is contained in:
@@ -54,6 +54,17 @@ describe("navigation resolver", () => {
|
||||
).toBe(ROUTE_BUILDERS.authWithRedirect(subscriptionUrl));
|
||||
});
|
||||
|
||||
it("builds private room subscription return urls", () => {
|
||||
expect(
|
||||
ROUTE_BUILDERS.subscription("topup", {
|
||||
payChannel: "stripe",
|
||||
returnTo: "private-room",
|
||||
}),
|
||||
).toBe(
|
||||
"/subscription?type=topup&payChannel=stripe&returnTo=private-room",
|
||||
);
|
||||
});
|
||||
|
||||
it("allows not logged in users to enter chat for guest bootstrap", () => {
|
||||
expect(
|
||||
resolveRouteGuardRedirect({
|
||||
|
||||
@@ -7,7 +7,7 @@ import type {
|
||||
} from "@/data/storage/navigation";
|
||||
|
||||
export type AppSubscriptionType = "vip" | "topup";
|
||||
export type AppSubscriptionReturnTo = "chat" | null;
|
||||
export type AppSubscriptionReturnTo = "chat" | "private-room" | null;
|
||||
|
||||
export interface OpenSubscriptionInput {
|
||||
type: AppSubscriptionType;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
*/
|
||||
|
||||
import type { PayChannel } from "@/data/dto/payment";
|
||||
import type { AppSubscriptionReturnTo } from "@/router/navigation-types";
|
||||
import {
|
||||
PAYMENT_ANALYTICS_ENTRY_PARAM,
|
||||
PAYMENT_ANALYTICS_REASON_PARAM,
|
||||
@@ -36,7 +37,7 @@ export const ROUTE_BUILDERS = {
|
||||
type: "vip" | "topup",
|
||||
options: {
|
||||
payChannel?: PayChannel;
|
||||
returnTo?: "chat";
|
||||
returnTo?: Exclude<AppSubscriptionReturnTo, null>;
|
||||
analytics?: PaymentAnalyticsContext;
|
||||
} = {},
|
||||
): `/subscription?${string}` => {
|
||||
|
||||
@@ -7,7 +7,7 @@ import { NavigationStorage } from "@/data/storage/navigation";
|
||||
import type { SubscriptionReturnTo } from "@/lib/navigation/subscription_exit";
|
||||
import {
|
||||
consumeSubscriptionExitUrl,
|
||||
peekSubscriptionExplicitExitUrl,
|
||||
resolveSubscriptionSuccessExitUrl,
|
||||
} from "@/lib/navigation/subscription_exit";
|
||||
import { getDefaultPayChannelForCountryCode } from "@/lib/payment/default_pay_channel";
|
||||
import {
|
||||
@@ -193,12 +193,7 @@ export function useAppNavigator(): AppNavigator {
|
||||
|
||||
const exitSubscriptionAfterSuccess = useCallback((returnTo: SubscriptionReturnTo): void => {
|
||||
void (async () => {
|
||||
const pendingExitUrl = await peekSubscriptionExplicitExitUrl();
|
||||
if (pendingExitUrl) {
|
||||
router.replace(pendingExitUrl);
|
||||
return;
|
||||
}
|
||||
router.replace(await consumeSubscriptionExitUrl(returnTo));
|
||||
router.replace(await resolveSubscriptionSuccessExitUrl(returnTo));
|
||||
})();
|
||||
}, [router]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user