diff --git a/app/HomeClient.tsx b/app/HomeClient.tsx index cbde202..41fb02e 100644 --- a/app/HomeClient.tsx +++ b/app/HomeClient.tsx @@ -639,7 +639,7 @@ export default function HomeClient() { if (nick) setWechatNick(nick); if (avatar) setWechatAvatar(avatar); void syncWechatProfile(); - }, [syncWechatProfile]); + }, [syncWechatProfile, paidType, userEmail]); useEffect(() => { const urlParams = new URLSearchParams(window.location.search); @@ -735,6 +735,27 @@ export default function HomeClient() { } } + // 无匿名 userId 时,若存在真实 wechat userid,也要尝试直接按该 ID 查 VIP + // 场景:该 userid 本身就是支付链路 user_id,或者已在后端可关联到 VIP + if (!anonymousCandidate && wechatUserId) { + const recoveredByWechatUserId = await checkPaymentFromPB(wechatUserId); + if (recoveredByWechatUserId) { + setStorage("userId", wechatUserId); + const name = + getStorage("wechatNick") || + getStorage("userEmail") || + getStorage("userName") || + wechatUserId; + setUserName(name); + setUserEmail( + (getStorage("userEmail") || "").includes("@") + ? getStorage("userEmail") + : null + ); + return; + } + } + await getOrCreateUserId(); const afterLocalType = getStorage("paidType"); diff --git a/app/vip/components/VipHeader.tsx b/app/vip/components/VipHeader.tsx index 4922a2a..be20f3d 100644 --- a/app/vip/components/VipHeader.tsx +++ b/app/vip/components/VipHeader.tsx @@ -87,7 +87,7 @@ export function VipHeader({ {displayName} - {onLogout && ( + {isLoggedIn && onLogout && (