fix(play): render AuthModal in immersive branch (#78)
手机竖屏 (orientation === 'portrait') 和桌面按 F 全屏 (presentation) 都会走 PlayInner 的 immersive 渲染分支,但该分支 加入时只带了 SettingsModal、漏掉了 AuthModal。导致这两条路径下 若 API 返回 401 触发 setAuthModalOpen(true),登录框不会被挂载, 用户无法登录继续游戏。 预设故事卡片入口 (onCardClick) 不做跳转前登录校验,未登录用户进 /play 后点选项即触发 401,在手机上复现该 bug。 补上与非 immersive 分支完全一致的 AuthModal 块,复用现有 authResolveRef 重试机制,登录成功后自动重放被拦截的请求。
This commit is contained in:
@@ -2253,6 +2253,21 @@ function PlayInner() {
|
||||
footerNote="保存后配音 Key 会立即生效,用你自己的额度合成当前这一幕的配音。"
|
||||
/>
|
||||
)}
|
||||
{authModalOpen && (
|
||||
<AuthModal
|
||||
onClose={() => {
|
||||
setAuthModalOpen(false);
|
||||
// User dismissed login — drop the retry, don't re-run the action.
|
||||
authResolveRef.current = null;
|
||||
}}
|
||||
onSuccess={() => {
|
||||
setAuthModalOpen(false);
|
||||
const retry = authResolveRef.current;
|
||||
authResolveRef.current = null;
|
||||
retry?.();
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user