feat(auth): add Messenger topup handoff entry
Docker Image / Build and Push Docker Image (push) Successful in 2m9s

This commit is contained in:
Codex
2026-07-27 17:16:27 +08:00
parent 73e6f341fb
commit 019caae598
28 changed files with 271 additions and 319 deletions
+8 -2
View File
@@ -13,7 +13,8 @@ import { getCharacterRoutes, ROUTES } from "@/router/routes";
export type ExternalEntryTarget =
| typeof ROUTES.chat
| typeof ROUTES.tip
| typeof ROUTES.privateZone;
| typeof ROUTES.privateZone
| typeof ROUTES.subscription;
export interface ExternalEntryPayload {
deviceId?: string | null;
@@ -50,7 +51,8 @@ export function shouldBindExternalFacebookIdentity({
const isRealUser =
loginStatus === "email" ||
loginStatus === "google" ||
loginStatus === "facebook";
loginStatus === "facebook" ||
loginStatus === "facebookMessenger";
return (
hasInitialized &&
!isLoading &&
@@ -90,6 +92,9 @@ export function resolveExternalEntryDestination({
getCharacterBySlug(character)?.slug ?? DEFAULT_CHARACTER_SLUG;
const routes = getCharacterRoutes(characterSlug);
const resolvedTarget = resolveExternalEntryTarget({ target });
if (resolvedTarget === ROUTES.subscription) {
return `${ROUTES.subscription}?type=topup`;
}
if (resolvedTarget === ROUTES.tip) return routes.tip;
if (resolvedTarget === ROUTES.privateZone) return routes.privateZone;
return routes.chat;
@@ -132,6 +137,7 @@ function resolveTarget(
if (target === "private-zone" || target === "private-room") {
return ROUTES.privateZone;
}
if (target === "topup") return ROUTES.subscription;
return null;
}